Lansare a bibliotecii de sistem Glibc 2.34

După șase luni de dezvoltare, a fost lansată versiunea 2.34 a bibliotecii sistemului GNU C Library (glibc), care respectă pe deplin cerințele standardelor ISO C11 și POSIX.1-2017. Noul release include corecții de la 66 de dezvoltatori.

Printre îmbunătățirile implementate în Glibc 2.34 se numără:

  • Bibliotecile libpthread, libdl, libutil și libanl au fost integrate în structura de bază libc, iar utilizarea funcționalității acestora în aplicații nu mai necesită legarea prin prin flag-urile -lpthread, -ldl, -lutil și -lanl. S-a realizat pregătirea pentru integrarea libresolv în libc. Această integrare va permite un proces de actualizare glibc mai uniform și va simplifica implementarea runtime-ului. Pentru a asigura compatibilitatea înapoi cu aplicațiile compilează anterior cu versiunile vechi de glibc, au fost furnizate biblioteci stub. Din cauza extinderii numărului de structuri și funcții furnizate în glibc, apariția problemelor în aplicațiile care au coliziuni de nume cu bibliotecile neutilizate anterior libpthread, libdl, libutil, libresolv și libanl nu este exclusă.
  • A fost oferită posibilitatea utilizării tipului time_t pe 64 de biți în configurațiile în care se utiliza tradițional tipul time_t pe 32 de biți. În astfel de configurații, de exemplu, pe sistemele x86, deocamdată rămâne time_t pe 32 de biți ca implicit, dar acest comportament poate fi acum modificat folosind macro-ul „_TIME_BITS”. Această opțiune este disponibilă doar pe sistemele cu kernel Linux de cel puțin versiunea 5.1.
  • A fost adăugată funcția _Fork, o înlocuire pentru funcția fork, care respectă cerințele „async-signal-safe”, adică permite apelarea în siguranță din handlerii de semnale. În procesul de rulare a _Fork, se formează un mediu minim, suficient pentru apelarea funcțiilor din handlerii de semnale, cum ar fi raise și execve, fără a folosi capacități care pot duce la modificarea blocărilor sau stării interne. Apelul _Fork va fi definit într-o viitoare versiune a standardului POSIX, dar este inclus acum în extensiile GNU.
  • Pentru platforma Linux, a fost implementată funcția execveat, care permite lansarea unui fișier executabil dintr-un descriptor de fișier deschis. Noua funcție este de asemenea utilizată în implementarea apelului fexecve, care nu necesită prezența unui sistem de fișiere pseudo-montat /proc la lansare.
  • Funcția timespec_getres a fost adăugată, definită în schița standardului ISO C2X, care completează funcția timespec_get cu capabilități asemănătoare cu funcția POSIX clock_getres.
  • Funcția close_range() a fost adăugată, permițând procesului să închidă simultan un întreg interval de descriptorii de fișiere deschiși. Funcția este disponibilă pe sistemele cu kernel Linux, versiunea minimă 5.9.
  • Au fost adăugate funcțiile closefrom și posix_spawn_file_actions_addclosefrom_np, care permit închiderea simultană a tuturor descriptorilor de fișiere a căror număr este mai mare sau egal cu valoarea specificată.
  • În modurile „_DYNAMIC_STACK_SIZE_SOURCE” și „_GNU_SOURCE”, valorile PTHREAD_STACK_MIN, MINSIGSTKSZ și SIGSTKSZ nu mai sunt constante, permitând suportul pentru seturi de registre de dimensiune dinamică, cum ar fi cele furnizate prin extensia ARM SVE.
  • Opțiunea „—list-diagnostics” a fost implementată în linker pentru a afișa informații legate de operațiile de definire a IFUNC (funcție indirectă) și alegerea subdirectorului glibc-hwcaps.
  • Macro-ul __STDC_WANT_IEC_60559_EXT__ a fost implementat pentru a verifica disponibilitatea funcțiilor definite în aplicația „F” a specificației ISO C2X.
  • Opțiunea „—disable-scv” a fost implementată pentru sistemele powerpc64*, permițând compilarea glibc fără suport pentru instrucțiunea scv.
  • În fișierul gconv-modules a fost lăsat doar setul minim de module gconv de bază, iar celelalte au fost mușciute într-un fișier suplimentar gconv-modules-extra.conf, plasat în directorul gconv-modules.d.
  • Pentru platforma Linux a fost implementat parametrul glibc.pthread.stack_cache_size, care poate fi folosit pentru a ajusta dimensiunea cache-ului de stivă pthread.
  • Funcția inet_neta din fișierul de antet a fost declarată obsoletă, precum și diferite funcții rare utilizate din (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_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) și (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). În locul acestor funcții, se recomandă folosirea de biblioteci separate pentru lucrul cu DNS.
  • Funcțiile pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np și pthread_yield au fost declarate obsolete, în locul cărora se recomandă utilizarea pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust și sched_yield.
  • Utilizarea legăturilor simbolice pentru conectarea obiectelor partajate instalate la versiunea Glibc a fost oprită. Aceste obiecte sunt acum instalate ca atare (de exemplu, libc.so.6 este acum un fișier, nu un link către libc-2.34.so).
  • În mod implicit, funcțiile de depanare în malloc, cum ar fi MALLOC_CHECK_ (glibc.malloc.check), mtrace() și mcheck(), sunt dezactivate și au fost mutate într-o bibliotecă separată libc_malloc_debug.so, împreună cu funcțiile învechite malloc_get_state și malloc_set_state.
  • În Linux, pentru a folosi funcții precum shm_open și sem_open, este acum necesar să existe dispozitivul /dev/shm.
  • S-au remediat vulnerabilitățile:
    • CVE-2021-27645: crash-ul procesului nscd (daemon de cache al serverului de nume) din cauza apelului dublu al funcției free în procesarea cererilor netgroup special formulate.
    • CVE-2021-33574: accesul la o zonă de memorie deja liberă (use-after-free) în funcția mq_notify când se folosește tipul de notificare SIGEV_THREAD cu un atribut de fir la care s-a setat o mască alternativă de legare la CPU. Problema poate duce la un crash, dar nu se exclud și alte tipuri de atacuri.
    • CVE-2021-35942: o depășire a dimensiunii parametrului în funcția wordexp poate provoca crash-ul aplicației.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster