PĂ€rast kuue kuu arendust on vĂ€lja antud sĂŒsteemiteegi GNU C Library (glibc) 2.34 versioon, mis jĂ€rgib tĂ€ielikult ISO C11 ja POSIX.1-2017 standardite nĂ”udeid. Uue vĂ€ljaande koosseisu kuuluvad parandused 66 arendajalt.
Glibc 2.34 ellu viidud tÀiustustest tasub mainida:
- Libc pÔhikoosseisu on integreeritud teegid libpthread, libdl, libutil ja libanl, mille funktsionaalsuse kasutamine rakendustes ei nÔua edaspidi sidumist lipu -lpthread, -ldl, -lutil ja -lanl abil. On tehtud ettevalmistusi libresolv integreerimiseks libc-sse. Integreerimine vÔimaldab saavutada glibc uuendamise protsessi sujuvamat kulgu ja lihtsustab runtime'i rakendamist. Vanade glibc versioonidega kokkulepivu tagamiseks on antud vÀlja pealtkaudsed teegid. Suurenevate glibc-struktuuride ja -funktsioonide tÔttu ei ole vÀlistatud probleeme rakendustes, kus nimed kattuvad varem kasutamata teegidega libpthread, libdl, libutil, libresolv ja libanl.
- On lisatud vĂ”imalus kasutada 64-bitise time_t tĂŒĂŒpi konfiguratsioonides, kus traditsiooniliselt on kasutatud 32-bitist time_t tĂŒĂŒpi. Sellistes konfiguratsioonides, nagu nĂ€iteks x86 sĂŒsteemides, jÀÀb vaikimisi kasutusele 32-bitine time_t, kuid seda kĂ€itumist on nĂŒĂŒd vĂ”imalik muuta makro "_TIME_BITS" abil. See vĂ”imalus on saadaval ainult Linuxi sĂŒdamike korral, mille versioon on vĂ€hemalt 5.1.
- On lisatud funktsioon _Fork, mis asendab funktsiooni fork ja vastab standardile "async-signal-safe", st vÔimaldab ohutut kutsumist signaalide töötlejate seest. _Fork protsessi kÀigus luuakse minimaalne keskkond, mis on piisav signaalide töötlejates nagu raise ja execve funktsioonide kutsumiseks, ilma et kaasataks vÔimalusi, mis vÔivad pÔhjustada lukustuste vÔi siseseisundi muutumist. _Forki kutsumine mÀÀratletakse tulevases POSIX standardi versioonis, aga praegu on see GNU laienduste hulka lisatud.
- Linuxi platvormile on rakendatud funktsioon execveat, mis vÔimaldab tÀidetava faili kÀivitamist avatud failideskriptorist. Uut funktsiooni kasutatakse samuti fexecve kutsumise rakendamisel, mis ei nÔua kÀivitamisel kinnitatud vale-FS /proc olemasolu.
- Lisatud on funktsioon timespec_getres, mis on mÀÀratletud ISO C2X standardi eelnÔus ja tÀiendab funktsiooni timespec_get, andes sellele sarnaseid vÔimalusi nagu POSIX-funktsioon clock_getres.
- Lisatud on funktsioon close_range(), mis vĂ”imaldab protsessil korraga sulgeda terve vahemiku avatud failikirjeid. Funktsioon on saadaval Linuxi tuumaga sĂŒsteemides, mille versioon on vĂ€hemalt 5.9.
- Lisatud on funktsioonid closefrom ja posix_spawn_file_actions_addclosefrom_np, mis vÔimaldavad korraga sulgeda kÔik failikirjed, mille numbrid on suuremad vÔi vÔrdsed mÀÀratud vÀÀrtusega.
- ReĆŸiimides â_DYNAMIC_STACK_SIZE_SOURCEâ ja â_GNU_SOURCEâ ei ole vÀÀrtused PTHREAD_STACK_MIN, MINSIGSTKSZ ja SIGSTKSZ enam konstandid, mis vĂ”imaldab toetada dĂŒnaamilise suurusega registerkomplekte, nĂ€iteks ARM SVE laienduses pakutavaid.
- Linkerisse on lisatud valik ââlist-diagnosticsâ, et kuvada teavet, mis on seotud IFUNC (kaudne funktsioon) mÀÀramise ja glibc-hwcaps alamkausta valimise toimingutega.
- Tehtud on makro __STDC_WANT_IEC_60559_EXT__, mis on mĂ”eldud ISO C2X spetsifikatsiooni rakenduses âFâ mÀÀratletud funktsioonide olemasolu kontrollimiseks.
- Powerpc64* sĂŒsteemidele on rakendatud valik ââdisable-scvâ, mis vĂ”imaldab glibci koguda ilma scv kĂ€su toeta.
- Failis gconv-modules on jĂ€etud ainult pĂ”hivĂ”imaluste minimaalne komplekt, samas kui ĂŒlejÀÀnud on kantud eraldi faili gconv-modules-extra.conf, mis asub kataloogis gconv-modules.d.
- Linuxi platvormil on rakendatud parameeter glibc.pthread.stack_cache_size, mida saab kasutada pthread-i virna vahemiku suuruse seadistamiseks.
- Funktsioon inet_neta, mis on mÀÀratletud failis <arpa/inet.h>, on kuulutatud aegunud, samuti mitmed harva kasutatavad funktsioonid failist <resolv.h> (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) ja <arpa/nameser.h> (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Nende funktsioonide asemel on soovitatav kasutada eraldi teeki DNS-iga töötamiseks.
- Funktsioonid pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np ja pthread_yield on kuulutatud aegunud ning nende asemel tuleks kasutada pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust ja sched_yield.
- SĂŒmboolsete linkide kasutamine Glibc versiooniga installitud jagatud objektide sidumiseks on lĂ”petatud. Sellised objektid paigaldatakse nĂŒĂŒd nii, nagu nad on (nĂ€iteks libc.so.6 on nĂŒĂŒd fail, mitte link libc-2.34.so-le).
- Vaikimisi on mallocis vĂ€ljakutsumisvĂ”imalused, nagu MALLOC_CHECK_ (glibc.malloc.check), mtrace() ja mcheck(), vĂ€lja lĂŒlitatud ja need on viidud eraldi teeki libc_malloc_debug.so, kuhu on samuti kolitud vananenud funktsioonid malloc_get_state ja malloc_set_state.
- Linuxis on funktsioonide nagu shm_open ja sem_open töötamiseks nĂŒĂŒd vajalik seade /dev/shm.
- Turbepuudused on kÔrvaldatud:
- CVE-2021-27645: protsessi nscd (nameserver caching daemon) kokkuvarisemine kahekordse free-kutse tÔttu, kui töödeldakse spetsiaalselt vormindatud netgroup-pÀringuid.
- CVE-2021-33574: juba vabastatud mĂ€lu ala kasutamine (use-after-free) funktsioonis mq_notify, kui kasutatakse SIGEV_THREAD tĂŒĂŒpi teateid, millel on töötluse alternatiivne CPU kinnihoidmise mask. Probleem vĂ”ib pĂ”hjustada kokkuvarisemise, kuid ei vĂ€listata ka muid rĂŒnnakute vĂ”imalusi.
- CVE-2021-35942: parameetri suuruse ĂŒletĂ€itumine funktsiooni wordexp juures vĂ”ib viia rakenduse kokkuvarisemiseni.
Allikas: opennet.ru
