Izlazak sustavne biblioteke Glibc 2.31

Nakon šest mjeseci razvoja objavljeno izdanje sistemske biblioteke GNU C Library (glibc) 2.31, koja u potpunosti udovoljava zahtjevima standarda ISO C11 i POSIX.1-2008. U novi ispravak uključen je 58 ispravaka od developera.

Od implementiranih u Glibc 2.31 poboljšanja može se istaknuti:

  • Dodana je makro definicija _ISOC2X_SOURCE za uključivanje mogućnosti određenih u nacrtu budućeg standarda ISO C2X. Ove mogućnosti također se uključuju pri korištenju makra _GNU_SOURCE ili prilikom gradnje s gcc s opcijom «-std=gnu2x»;
  • Za određene funkcije u zaglavlju «math.h» koje zaokružuju svoje rezultate na tip manjeg sadržaja, u datoteci «tgmath.h» predloženi su odgovarajući makroi općeg tipa, kao što zahtijevaju specifikacije TS 18661-1:2014 i TS 18661-3:2015;
  • Dodana funkcija pthread_clockjoin_np(), koja čeka završetak niti s obzirom na vremensko ograničenje (ako vrijeme istekne prije završetka, funkcija će vratiti grešku). Za razliku od pthread_timedjoin_np(), u pthread_clockjoin_np() dopušteno je definiranje tipa timera za izračunavanje vremenskog ograničenja — CLOCK_MONOTONIC (uzima u obzir vrijeme provedeno u režimu spavanja sustava) ili CLOCK_REALTIME;
  • U DNS razrješivač dodana je podrška za opciju trust-ad u /etc/resolv.conf i oznaku RES_TRUSTAD u _res.options, gdje se aktiviranjem ovih opcija unosi DNSSEC oznaka AD (overeni podaci). U ovom načinu rada, postavljena oznaka AD od strane poslužitelja postaje dostupna aplikacijama koje pozivaju funkcije kao što je res_search(). Prema zadanim postavkama, ako predložene opcije nisu uključene, glibc ne postavlja oznaku AD u zahtjevima i automatski je čisti u odgovorima, što ukazuje na nedostatak provjere DNSSEC;
  • Za izgradnju funkcionalnih omota sustavnih poziva za Glibc više nije potrebna instalacija zaglavlja Linux jezgre. Izuzetak je 64-bitna arhitektura RISC-V;
  • Uklonjena ranljivost CVE-2019-19126, koja omogućava zaobilaženje zaštite
    ASLR u programima s oznakom setuid i određivanje rasporeda adresa u učitavanim bibliotekama putem manipulacije s varijablom okruženja LD_PREFER_MAP_32BIT_EXEC.

Promjene koje narušavaju kompatibilnost:

  • U totalorder(), totalordermag() i slične funkcije za druge tipove s pomičnom točkom sada prihvaćaju kao argument pokazivače kako bi se izbjegla upozorenja o konverziji vrijednosti u stanjima NaN, u skladu s preporukama TS 18661-1, predloženim za budući standard C2X.
    Postojeći izvršni datoteke u kojima se argumenti s pomičnom zarezom izravno prosljeđuju nastavit će raditi bez promjena;
  • Davno najavljena zastarjela funkcija stime sada nije dostupna za povezana glibc binarna datoteka, a njezina definicija je uklonjena iz time.h. Za postavljanje sistemskog vremena treba koristiti funkciju clock_settime. U budućnosti se planira ukloniti i označenu zastarjelom funkciju ftime, kao i zaglavlje sys/timeb.h (umjesto ftime treba koristiti gettimeofday ili clock_gettime);
  • Funkcija gettimeofday od sada ne prenosi informacije o sistemskom vremenskom pojasu (ta mogućnost bila je relevantna u doba 4.2-BSD i dugo je najavljena kao zastarjela). U argumentu ‘tzp’ sada treba proslijediti nulti pokazivač, a za dobivanje informacija o vremenskom pojasu u vezi s trenutnim vremenom koristiti funkciju localtime(). Prilikom pozivanja gettimeofday s nenulti argumentom ‘tzp’ bit će vraćena prazna polja tz_minuteswest i tz_dsttime u strukturi timezone. Sama funkcija gettimeofday smatra se zastarjelom u POSIX-u (umjesto gettimeofday preporučuje se koristiti clock_gettime), ali njezino uklanjanje iz glibc nije planirano;
  • U settimeofday je prestala podrška za istovremeno prosljeđivanje parametara za postavljanje vremena i korekcije vremenskog pomaka. Prilikom pozivanja settimeofday jedan od argumenata (vrijeme ili pomak) sada mora biti postavljen na nulti, inače će poziv funkcije završiti greškom EINVAL. Kao i gettimeofday, funkcija settimeofday smatra se zastarjelom u POSIX-u i umjesto nje preporučuje se koristiti funkciju clock_settime ili skup funkcija adjtime;
  • Prekinuta je podrška za arhitekturu SPARC ISA v7 (podrška za v8 je još uvijek sačuvana, ali samo za procesore koji podržavaju CAS instrukcije, kao što su LEON procesori, dok ne podržavaju procesori SuperSPARC).
  • U slučaju neuspjeha povezivanja u režimu „lazy“, u kojem linker ne pretražuje simbole funkcije do prve upotrebe te funkcije, funkcija dlopen sada prisilno završava izvršavanje procesa (ranije je, u slučaju neuspjeha, vraćao NULL);
  • Za ABI MIPS hard-float sada se koristi izvršna steka, osim ako tijekom izvođenja nije izričito postavljeno ograničenje za korištenje jezgre Linux 4.8+ putem parametra „—enable-kernel=4.8.0“ (s jezgrama do 4.8 javljaju se kvarovi za neke MIPS konfiguracije);
  • Obuhvati nad sustavnim pozivima vezanim uz manipulaciju vremenom prevedeni su na primjenu sustavnog poziva time64, ako je dostupan (na 32-bitnim sustavima glibc prvotno pokušava koristiti nove sustavne pozive, koji manipuliraju 64-bitnim tipom za vrijeme, a ako ih nema, vraća se na stare 32-bitne pozive).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster