Izdaja sistemske knjižnice Glibc 2.34

Po šestih mesecih razvoja je izšla sistemska knjižnica GNU C Library (glibc) 2.34, ki je v celoti skladna z zahtevami standardov ISO C11 in POSIX.1-2017. Nova izdaja vključuje popravke 66 razvijalcev.

Nekatere izboljšave, implementirane v Glibc 2.34, vključujejo:

  • Knjižnice libpthread, libdl, libutil in libanl so integrirane v glavno strukturo libc, uporaba njihove funkcionalnosti v aplikacijah ne zahteva več povezovanja z zastavicami -lpthread, -ldl, -lutil in -lanl. Izvedene so bile priprave za integracijo libresolv v libc. Integracija bo omogočila bolj nemoten postopek posodabljanja glibc in poenostavila izvajanje med izvajanjem. Knjižnice škrbin so na voljo za zagotavljanje združljivosti za nazaj z aplikacijami, izdelanimi s starejšimi različicami glibc. Zaradi razširitve števila struktur in funkcij, ki jih ponuja glibc, se lahko pojavijo težave v aplikacijah, v katerih je presečišče imen s prej neuporabljenimi knjižnicami libpthread, libdl, libutil, libresolv in libanl.
  • Omogoča uporabo 64-bitnega tipa time_t v konfiguracijah, ki so tradicionalno uporabljale 32-bitni tip time_t. V takih konfiguracijah, na primer v sistemih x86, je privzetek še vedno 32-bitni time_t, vendar je to vedenje zdaj mogoče spremeniti z uporabo makra "_TIME_BITS". Ta funkcija je na voljo samo v sistemih z vsaj različico jedra Linux 5.1.
  • Dodana funkcija _Fork, zamenjava za funkcijo fork, ki izpolnjuje zahteve »async-signal-safe«, tj. omogoča varno klicanje upravljavcev signalov. Med izvajanjem _Fork se ustvari minimalno okolje, ki zadošča za klicanje funkcij v obdelovalnikih signalov, kot sta dvig in izvedba, brez vključevanja funkcij, ki bi lahko spremenile ključavnice ali notranje stanje. Klic _Fork bo definiran v prihodnji različici standarda POSIX, vendar je za zdaj vključen kot razširitev GNU.
  • Za platformo Linux je implementirana funkcija execveat, ki omogoča zagon izvršljive datoteke iz odprtega deskriptorja datoteke. Nova funkcija se uporablja tudi pri izvajanju klica fexecve, ki ob zagonu ne zahteva nameščenega psevdo-FS /proc.
  • Dodana funkcija timespec_getres, opredeljena v osnutku standarda ISO C2X, ki razširja funkcijo timespec_get z zmožnostmi, podobnimi funkciji clock_getres POSIX.
  • Dodana funkcija close_range(), ki omogoča procesu, da zapre celoten obseg deskriptorjev odprtih datotek hkrati. Funkcija je na voljo v sistemih z jedrom Linux vsaj različice 5.9.
  • Dodani funkciji closefrom in posix_spawn_file_actions_addclosefrom_np, ki vam omogočata, da zaprete vse deskriptorje datotek hkrati, katerih število je večje ali enako podani vrednosti.
  • V načinih "_DYNAMIC_STACK_SIZE_SOURCE" in "_GNU_SOURCE" PTHREAD_STACK_MIN, MINSIGSTKSZ in SIGSTKSZ niso več konstante, kar omogoča podporo za nize registrov z dinamično velikostjo, kot so tisti, ki so na voljo v razširitvi ARM SVE.
  • Povezovalnik implementira možnost "--list-diagnostics" za prikaz informacij, povezanih z operacijami definicije IFUNC (posredna funkcija) in izbiro podimenika glibc-hwcaps.
  • Implementiran je bil makro __STDC_WANT_IEC_60559_EXT__, zasnovan za preverjanje prisotnosti funkcij, opredeljenih v Dodatku F specifikacije ISO C2X.
  • Za sisteme powerpc64* je bila implementirana možnost “--disable-scv”, ki vam omogoča gradnjo glibc brez podpore za ukaz scv.
  • V datoteki gconv-modules ostane samo najmanjši nabor osnovnih modulov gconv, preostali pa se premaknejo v dodatno datoteko gconv-modules-extra.conf, ki se nahaja v imeniku gconv-modules.d.
  • Za platformo Linux je implementiran parameter glibc.pthread.stack_cache_size, ki ga je mogoče uporabiti za konfiguracijo velikosti predpomnilnika sklada pthread.
  • Funkcija inet_neta iz datoteke glave je bila opuščena , pa tudi različne redko uporabljene funkcije iz (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_ ime poizvedbe, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) in (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samenaname, ns_sprintrr, ns_sprintrrf, ns_subdomain). Namesto teh funkcij je priporočljivo uporabljati ločene knjižnice za delo z DNS.
  • Funkcije pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np in pthread_yield so bile opuščene in namesto njih je treba uporabiti pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust in sched_yield.
  • Prenehala je uporabljati simbolne povezave za povezovanje nameščenih predmetov v skupni rabi z različico Glibc. Takšni objekti so zdaj nameščeni takšni, kot so (npr. libc.so.6 je zdaj datoteka in ne povezava do libc-2.34.so).
  • Funkcije za odpravljanje napak v mallocu so privzeto onemogočene, kot so MALLOC_CHECK_ (glibc.malloc.check), mtrace() in mcheck(), ki so premaknjene v ločeno knjižnico libc_malloc_debug.so, v katero sta prišli tudi zastareli funkciji malloc_get_state in malloc_set_state bil premaknjen.
  • V sistemu Linux funkcije, kot sta shm_open in sem_open, zdaj za delovanje zahtevajo napravo /dev/shm.
  • Odpravljene ranljivosti:
    • CVE-2021-27645: Proces nscd (demon za predpomnjenje imenskega strežnika) se zruši zaradi dvojnega klica funkcije free pri obdelavi posebej oblikovanih zahtev omrežne skupine.
    • CVE-2021-33574: Dostop do že sproščenega pomnilniškega območja (use-after-free) v funkciji mq_notify pri uporabi vrste obvestila SIGEV_THREAD z atributom niti, za katerega je nastavljena alternativna maska ​​afinitete CPE. Težava bi lahko povzročila zrušitev, vendar drugih možnosti napada ni mogoče izključiti.
    • CVE-2021-35942: Prekoračitev velikosti parametra v funkciji wordexp lahko povzroči zrušitev aplikacije.

Vir: opennet.ru

Dodaj komentar