Efter sex mÄnaders utveckling har version 2.34 av GNU C Library (glibc) publicerats, vilket helt uppfyller kraven i ISO C11- och POSIX.1-2017-standarderna. Den nya versionen innehÄller korrigeringar frÄn 66 utvecklare.
Bland förbÀttringarna i Glibc 2.34 kan följande nÀmnas:
- Biblioteken libpthread, libdl, libutil och libanl har integrerats i libc, vilket gör att anvÀndningen av deras funktioner i applikationer nu inte krÀver lÀnkning med flaggorna -lpthread, -ldl, -lutil och -lanl. Förberedelser har gjorts för att integrera libresolv i libc. Integrationen kommer att möjliggöra en mer sammanhÀngande uppdateringsprocess av glibc och förenkla implementationen av runtime. För att sÀkerstÀlla bakÄtkompatibilitet med applikationer byggda med Àldre versioner av glibc har stubbibliotek tillhandahÄllits. PÄ grund av ökning av antalet strukturer och funktioner som erbjuds i glibc kan det uppstÄ problem i applikationer dÀr namn överlappar med tidigare oanvÀnda bibliotek som libpthread, libdl, libutil, libresolv och libanl.
- Möjligheten att anvÀnda 64-bitars typen time_t har introducerats i konfigurationer dÀr den traditionellt anvÀnts som 32-bitars. I sÄdana konfigurationer, till exempel pÄ x86-system, kvarstÄr som standard 32-bitars time_t, men detta beteende kan nu Àndras med makrot "_TIME_BITS". Möjligheten Àr endast tillgÀnglig pÄ system med Linux-kÀrna av minst version 5.1.
- Funktionen _Fork har lagts till, en ersÀttning för funktionen fork som uppfyller kraven för "async-signal-safe", vilket innebÀr att den kan kallas sÀkert frÄn signalhanterare. Under exekveringen av _Fork skapas en minimal miljö som Àr tillrÀcklig för att kalla funktioner i signalhanterare, sÄsom raise och execve, utan att anvÀnda mekanismer som kan Àndra lÄs eller internt tillstÄnd. Anropet till _Fork kommer att definieras i en framtida version av POSIX, men Àr för nÀrvarande inkluderat bland GNU:s tillÀgg.
- För Linux-plattformen har funktionen execveat implementerats, vilket möjliggör körning av en körbar fil frÄn en öppen filbeskrivare. Den nya funktionen anvÀnds ocksÄ i implementeringen av anropet fexecve som inte krÀver att en monterad pseudofilsystem /proc finns vid körning.
- Funktionen timespec_getres har lagts till, definierad i utkastet till standarden ISO C2X, och kompletterar funktionen timespec_get med möjligheter som liknar POSIX-funktionen clock_getres.
- Funktionen close_range() har lagts till, vilket gör att en process kan stÀnga en hel rad av öppna filbeskrivare pÄ en gÄng. Funktionen finns tillgÀnglig pÄ system med Linux-kÀrna, minst version 5.9.
- Funktionerna closefrom och posix_spawn_file_actions_addclosefrom_np har lagts till, vilket gör att alla filbeskrivare vars nummer Àr större Àn eller lika med det angivna vÀrdet kan stÀngas pÄ en gÄng.
- I lÀgena "_DYNAMIC_STACK_SIZE_SOURCE" och "_GNU_SOURCE" Àr vÀrdena PTHREAD_STACK_MIN, MINSIGSTKSZ och SIGSTKSZ nu inte konstanter, vilket möjliggör stöd för dynamiskt storleksregister, till exempel de som tillhandahÄlls av ARM SVE-tillÀgget.
- En ny option "âlist-diagnostics" har implementerats i lĂ€nkaren för att visa information som rör IFUNC (indirekt funktion) och val av glibc-hwcaps-undermappningar.
- Makrot __STDC_WANT_IEC_60559_EXT__ har implementerats för att kontrollera nÀrvaron av funktioner som definieras i bilagan "F" till standarden ISO C2X.
- För powerpc64*-system har en option "âdisable-scv" implementerats, vilket gör att glibc kan kompileras utan stöd för instruktionen scv.
- I filen gconv-modules har endast en minimal uppsÀttning grundmoduler för gconv lÀmnats kvar, medan övriga har flyttats till en extra fil gconv-modules-extra.conf placerad i katalogen gconv-modules.d.
- För Linux-plattformen har parametern glibc.pthread.stack_cache_size implementerats, vilket kan anvÀndas för att konfigurera storleken pÄ pthread-stackcache.
- Funktionen inet_neta frÄn headerfilen har förklarats som förÄldrad, likasÄ olika sÀllan anvÀnda funktioner frÄn (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) och (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). IstÀllet för dessa funktioner rekommenderas det att anvÀnda separata bibliotek för att arbeta med DNS.
- Funktionerna pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np och pthread_yield har förklarats som förÄldrade, och istÀllet bör pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust och sched_yield anvÀndas.
- AnvÀndningen av symboliska lÀnkar för att binda installerade delade objekt till versionen av Glibc har upphört. SÄdana objekt installeras nu som de Àr (till exempel Àr libc.so.6 nu en fil snarare Àn en lÀnk till libc-2.34.so).
- StandardmÀssigt Àr felsökningsmöjligheterna i malloc avstÀngda, sÄsom MALLOC_CHECK_ (glibc.malloc.check), mtrace() och mcheck(), vilka har flyttats till ett separat bibliotek libc_malloc_debug.so, dÀr de förÄldrade funktionerna malloc_get_state och malloc_set_state ocksÄ har flyttats.
- I Linux krÀvs nu enhet av /dev/shm för att funktioner som shm_open och sem_open ska fungera.
- SÄrbarheter ÄtgÀrdade:
- CVE-2021-27645: processkraschen av nscd (namnserver-cachedaemon) pÄ grund av dubbelanrop av funktionen free vid behandling av sÀrskilt utformade netgroup-förfrÄgningar.
- CVE-2021-33574: Ätkomst till redan frigjort minnesomrÄde (use-after-free) i funktionen mq_notify nÀr man anvÀnder typ av notifiering SIGEV_THREAD med en trÄdattribut för vilket en alternativ CPU-bindningsmask har angetts. Problemet kan leda till krasch, men andra angreppsmöjligheter utesluts inte.
- CVE-2021-35942: en överskridning av parameterstorleken i funktionen wordexp kan leda till applikationskrasch.
KĂ€lla: opennet.ru
