Release of the Glibc 2.31 system library

Hat hónapnyi fejlesztés után megjelent a rendszerkönyvtár kiadása GNU C Könyvtár (glibc) 2.31, amely teljes mértékben megfelel az ISO C11 és a POSIX.1-2008 szabványok követelményeinek. Az új kiadás tartalmazza 58 fejlesztő javításait.

A Glibc 2.31-ben megvalósítottakból fejlesztések kiemelhető:

  • Hozzáadva a _ISOC2X_SOURCE makró a jövő ISO szabvány tervezett képességeinek aktiválására C2X. Ezek a lehetőségek szintén aktiválódnak a _GNU_SOURCE makró használatakor, vagy ha a gcc-t a „-std=gnu2x” flaggel fordítják;
  • A «math.h» fejlécfájlban meghatározott, kisebb méretű típusra kerekítő függvényekhez a «tgmath.h» fájlban megfelelő típusú makrók javasoltak, ahogyan azt a TS 18661-1:2014 és a TS 18661-3:2015 specifikációk megkövetelik;
  • Hozzáadva a pthread_clockjoin_np() függvény, amely figyelembe veszi a határidőt a szál befejezésénél (ha a határidő a befejezés előtt lejár, a függvény hibát ad vissza). Ezzel ellentétben pthread_timedjoin_np(), a pthread_clockjoin_np() lehetővé teszi a határidő számításához használt időmérő típusának meghatározását – CLOCK_MONOTONIC (figyelembe veszi a rendszer alvás közben eltöltött idejét) vagy CLOCK_REALTIME;
  • A DNS-kezelo támogatta a trust-ad opciót a /etc/resolv.conf fájlban és a RES_TRUSTAD flaget a _res.options fájlban, amelyek beállításával a DNS-kérelmekben a DNSSEC flag továbbítása történik AD (hitelesített adatok). Ebben a módban az AD flag, amelyet a szerver beállított, elérhetővé válik az alkalmazások számára, amelyek olyan függvényeket hívnak, mint a res_search(). Alapértelmezés szerint, ha a javasolt opciók nincsenek beállítva, a glibc nem jelzi az AD flaget a kérelmekben és automatikusan törli azt a válaszokban, amely a DNSSEC ellenőrzésének hiányát jelzi;
  • A Glibc számára működő rendszerhívás-kötegek építéséhez már nincs szükség a Linux kernel fejlécfájlok telepítésére. Kivételt képez a 64 bites RISC-V architektúra;
  • a vulnerability CVE-2019-19126, amely lehetővé teszi a védelem megkerülését
    ASLR a setuid flag miatt és az elérési térkép eloszlásának meghatározását betöltendő könyvtárakban az LD_PREFER_MAP_32BIT_EXEC környezeti változó manipulálásával.

Változások, amelyek megsértik a kompatibilitást:

  • A totalorder(), totalordermag() és más hasonló függvények mostantól argumentumként pointer-eket fogadnak el, hogy elkerüljék a figyelmeztetéseket a NaN állapotú értékek átalakításáért , a TS 18661-1 ajánlásaival összhangban, amelyek a jövőbeni C2X szabvány számára készültek.A meglévő végrehajtható fájlok, amelyekhez közvetlenül átadják a lebegőpontos argumentumokat, változtatások nélkül továbbra is működnek;
    Существующие исполняемые файлы, в которых аргументы с плавающей запятой передаются напрямую, продолжат работать без изменения;
  • A régóta hirdetett elavult stime függvény mostantól nem elérhető a glibc-hez kötődő bináris fájloknál, és a definiálása eltávolításra került a time.h fájlból. A rendszerek időbeállításához a clock_settime függvényt kell használni. A jövőben tervezik eltávolítani a szintén elavultnak minősített ftime függvényt, valamint a sys/timeb.h fejlécfájlt (a ftime helyett a gettimeofday vagy a clock_gettime használata ajánlott);
  • A gettimeofday függvény mostantól nem ad információt az általános rendszeridőzónáról (ez a lehetőség a 4.2-BSD időszakában volt aktuális, és évek óta elavultnak van nyilvánítva). A 'tzp' argumentumban most egy nullpointer-t kell átadni, a jelenlegi időhöz kötődő időzóna-információk megszerzéséhez pedig a localtime() függvényt kell használni. A gettimeofday hívása nullával nem egyenlő 'tzp' argumentumban üres mezők fognak visszatérni az időzóna struktúrában (tz_minuteswest és tz_dsttime). Maga a gettimeofday függvény elavultnak számít a POSIX-ban (a gettimeofday helyett a clock_gettime használata ajánlott), de a glibc-ből való eltávolítása nem várható;
  • A settimeofday-ban megszűnt a paraméterek egyidejű átadásának támogatása az idő és az időeltolódás beállításához. A settimeofday hívásakor az egyik argumentumnak (idő vagy eltérés) mostantól kötelezően null értéket kell felvennie, különben a függvényhívás EINVAL hibával végződik. A gettimeofday-hoz hasonlóan a settimeofday függvény is elavultnak számít a POSIX-ban, és a clock_settime vagy adjtime függvénycsalád használata ajánlott helyette;
  • Megszűnt a SPARC ISA v7 architektúra támogatása (a v8 támogatása egyelőre megmaradt, de csak azoknál a processzoroknál, amelyek támogatják a CAS utasításokat, mint például a LEON processzorok, de a SuperSPARC processzoroknál nem);
  • Ha a "lazy" módú kötés hibát jelez, ahol a linker nem hajt végre keresést a függvény szimbólumai után az első hívásáig, a dlopen mostantól kényszeríti a folyamat végrehajtásának leállítását (korábban a hiba esetén NULL-t adtak vissza);
  • Az ABI MIPS hard-float esetén most már végrehajtási verem használatos, hacsak a fordításnál nem állították explicit módon az 4.8+ kernel használatának korlátozását a "--enable-kernel=4.8.0" paraméterrel (4.8 alatti kernel esetén néhány MIPS konfigurációval hibák lépnek fel);
  • A rendszerhívásokra vonatkozó kötések, amelyek az idő manipulációjával kapcsolatosak, a time64 rendszerhívás használatára lettek átállítva, ha elérhető (a 32 bites glibc rendszereken először megpróbálja használni az új 64 bites időmanipuláló rendszerhívásokat, ha ezek nem állnak rendelkezésre, akkor visszavált a régi 32 bites hívásokra).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster