Izlazak sistemske biblioteke Glibc 2.31

Po šestih mesecih razvoja objavljen izdaja sistemske biblioteke GNU C Library (glibc) 2.31, ki v celoti ustreza zahtevam standardov ISO C11 in POSIX.1-2008. Nova različica vključuje popravke 58 razvijalcev.

Izpeljanih v Glibc 2.31 poboljšanja lahko izpostavimo:

  • Dodana je makro _ISOC2X_SOURCE za vključitev zmožnosti, določenih v osnutku prihodnjega standarda ISO C2X. Te zmožnosti se vključijo tudi pri uporabi makra _GNU_SOURCE ali pri prevajanju v gcc s zastavico «-std=gnu2x»;
  • Za funkcije, določene v glavi «math.h», ki zaokrožijo svoje rezultate na manjši tip, so v datoteki «tgmath.h» predlagani ustrezni makri splošnega tipa, kot zahtevajo specifikacije TS 18661-1:2014 in TS 18661-3:2015;
  • Dodana je funkcija pthread_clockjoin_np(), ki čaka na zaključek niti ob upoštevanju časovne omejitve (če časovna omejitev poteče pred koncem, funkcija vrne napako). V nasprotju z pthread_timedjoin_np(), v pthread_clockjoin_np() je dovoljeno določiti vrsto časovnika za izračun časovne omejitve — CLOCK_MONOTONIC (upošteva čas, preživet v mirovanju sistema) ali CLOCK_REALTIME;
  • V DNS-rezolver je dodana podpora za možnost trust-ad v /etc/resolv.conf in zastavico RES_TRUSTAD v _res.options, s katerima se v DNS-poizvedbah izvaja prenos DNSSEC-zastavice AD (overjeni podatki). V tem načinu ustrezna zastavica AD, ki jo nastavi strežnik, postane dostopna aplikacijam, ki kličejo funkcije, podobne res_search(). Privzeto, če predlagane možnosti niso nastavljene, glibc v poizvedbah ne navaja zastavice AD in jo samodejno izbriše v odgovorih, kar pomeni, da DNSSEC ni bil preverjen;
  • Za gradnjo delujočih ovojnic sistemskih klicev za Glibc zdaj ni potrebno namestiti glavni datotek. Iznimka je 64-bitna arhitektura RISC-V;
  • Odpravljena ranljivost CVE-2019-19126, ki omogoča obhod zaščite
    ASLR v programih s zastavico setuid in določitev razporeditve naslovov v naloženih knjižnicah preko manipulacije z okoljsko spremenljivko LD_PREFER_MAP_32BIT_EXEC.

Spremembe, ki kršijo združljivost:

  • V totalorder(), totalordermag() in podobne funkcije za druge plavajoče tipe zdaj sprejemajo kot argument kazalce, da se preprečijo opozorila o preoblikovanju vrednosti v stanju NaN, v skladu s smernicami TS 18661-1, predlaganimi za prihodnji standard C2X.
    Obstoječi izvršni fajlovi, u kojima se argumenti sa pokretnom tačkom prenose direktno, nastaviće da rade bez promena;
  • Davno objavljena zastarela funkcija stime sada nije dostupna za binarne fajlove povezane sa glibc, a njena definicija je uklonjena iz time.h. Za postavljanje sistemskog vremena trebalo bi koristiti funkciju clock_settime. U budućnosti se planira uklanjanje i oznake kao zastarele funkcije ftime, kao i header fajla sys/timeb.h (umesto ftime treba koristiti gettimeofday ili clock_gettime);
  • Funkcija gettimeofday od sada ne prenosi informacije o opštem sistemskom vremenskom pojasu (ova mogućnost je bila relevantna u vreme 4.2-BSD i već dugi niz godina je označena kao zastarela). Argument ‘tzp’ sada treba postaviti na null pokazivač, a za dobijanje informacija o vremenskom pojasu u vezi sa trenutnim vremenom koristiti funkciju localtime(). Kada se poziva gettimeofday sa nenultiranim argumentom ‘tzp’, biće vraćena prazna polja tz_minuteswest i tz_dsttime u strukturi timezone. Sama funkcija gettimeofday se smatra zastarjelom u POSIX (preporučuje se korišćenje clock_gettime umesto gettimeofday), ali njeno uklanjanje iz glibc nije planirano;
  • U settimeofday je prestala podrška za simultano prenošenje parametara za postavljanje vremena i ispravku vremenske razlike. Kada se poziva settimeofday, jedan od argumenata (vreme ili pomeraj) sada mora biti postavljen na null, inače će poziv funkcije završiti greškom EINVAL. Kao i gettimeofday, funkcija settimeofday se smatra zastarjelom u POSIX i preporučuje se korišćenje funkcije clock_settime ili porodice funkcija adjtime;
  • Prekid podrške za arhitekturu SPARC ISA v7 (podrška za v8 ostaje, ali samo za procesore koji podržavaju CAS instrukcije, kao što su LEON procesori, ali ne i SuperSPARC procesori).
  • U slučaju greške pri vezivanju u režimu “lazy“, u kojem linker ne traži simbole funkcije do prvog poziva te funkcije, funkcija dlopen sada primorava prekid rada procesa (ranije je pri grešci vraćan NULL);
  • Za ABI MIPS hard-float sada se koristi izvršni stek, osim ako tokom kompilacije nije eksplicitno postavljeno ograničenje na korišćenje jezgra Linuxa 4.8+ kroz parametar “—enable-kernel=4.8.0” (sa jezgrima do 4.8 dolazi do grešaka za neke MIPS konfiguracije);
  • Obvestila o sistemskih klicih, povezanih z manipulacijo časa, so bila prenesena na uporabo sistemskega klica time64, kadar je na voljo (na 32-bitnih sistemih glibc najprej poskuša uporabiti nove sistemske klice, ki manipulirajo z 64-bitnim tipom za čas, in če ti niso na voljo, se vrne na stare 32-bitne klice).

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster