PĂ€rast kuuekuulist arendust on avaldatud sĂŒsteemiteegi GNU C Library (glibc) versioon 2.34, mis vastab tĂ€ielikult ISO C11 ja POSIX.1-2017 standardite nĂ”uetele. Uue vĂ€ljalaske koosseisus on parandused 66 arendajalt.
Glibc 2.34 teostatud tÀiustustest vÔib mÀrkida:
- Libc pĂ”hikoosseisu on integreeritud raamatukogud libpthread, libdl, libutil ja libanl, mille funktsionaalsuse kasutamine rakendustes ei nĂ”ua enam sidumist lipukestega -lpthread, -ldl, -lutil ja -lanl. Valmistatud on ette integraatsioon libresolv'i libc. Integraatsioon vĂ”imaldab saavutada sujuvamat glibc uuendamisprotsessi ning lihtsustab tĂ€itmise rakendust. Tagamaks, et oleks tagasiside ĂŒhilduvust rakendustega, mis on loodud vanemate glibc versioonidega, on pakutud stub-raamatukogusid. Antud glibc-s pakutavate struktuuride ja funktsioonide arvu suurenemise tĂ”ttu vĂ”ivad rakendustes esineda probleemid, kus toimub nimede kattuvus varasemalt kasutamata raamatukogude libpthread, libdl, libutil, libresolv ja libanl vahel.
- 64-bit time_t tĂŒĂŒbi kasutamise vĂ”imalus on lisatud konfiguratsioonidesse, kus traditsiooniliselt kasutati 32-bitist time_t. Sellistes konfiguratsioonides, nagu nĂ€iteks x86 sĂŒsteemides, jÀÀb vaikimisi 32-bitine time_t, kuid seda kĂ€itumist on vĂ”imalik nĂŒĂŒd muuta makro â_TIME_BITSâ abil. See vĂ”imalus on saadaval ainult Linuxi kernelitega, mille versioon on vĂ€hemalt 5.1.
- _Fork funktsioon on lisatud, asendades fork funktsiooni, mis vastab âasync-signal-safeâ nĂ”uetele, st seda saab ohutult kutsuda signaalide töötlejates. _Fork tĂ€itmise kĂ€igus luuakse minimaalne keskkond, mis on piisav funktsioonide kutsumiseks signaalide töötlejates, nagu raise ja execve, ilma, et oleksid kaasatud vĂ”imalused, mis vĂ”ivad pĂ”hjustada lukustuste vĂ”i sisemise oleku muutust. _Forki kutsumine mÀÀratletakse tulevases POSIX standardi versioonis, kuid on praegu GNU laienduste hulgas.
- Linux platvormil on realiseeritud execveat funktsioon, mis vĂ”imaldab kĂ€ivitada binÀÀrfaili avatud failikĂ€sitsi. Uut funktsiooni kasutatakse ka fexecve sĂŒsteemkĂ”ne realiseerimisel, mis ei nĂ”ua kĂ€ivitamisel kĂ”igi manustatud pseduo-failisĂŒsteemide /proc olemasolu.
- Lisatud funktsioon timespec_getres, mis on mÀÀratletud ISO C2X standardi mustandis ja tÀiendab funktsiooni timespec_get, omades sarnaseid vÔimalusi nagu POSIX funktsioon clock_getres.
- Lisatud funktsioon close_range(), mis vĂ”imaldab protsessil korraga sulgeda terve vahemiku avatud failikĂ€sitse. Funktsioon on saadaval Linuxi kerneliga sĂŒsteemides, mille versioon on vĂ€hemalt 5.9.
- Lisatud funktsioonid closefrom ja posix_spawn_file_actions_addclosefrom_np, mis vÔimaldavad korraga sulgeda kÔik failikÀsitsed, mille number on suurem vÔi vÔrdne mÀÀratud vÀÀrtusega.
- ReĆŸiimides â_DYNAMIC_STACK_SIZE_SOURCEâ ja â_GNU_SOURCEâ vÀÀrtused PTHREAD_STACK_MIN, MINSIGSTKSZ ja SIGSTKSZ ei ole enam konstandid, mis vĂ”imaldab toetada dĂŒnaamilise suurusega registrikomplekte, nagu pakutud ARM SVE laienduses.
- Komponendis on realiseeritud valik ââlist-diagnosticsâ, et tulemustes kuvada IFUNC (indirect function) mÀÀramise ja glibc-hwcaps alamkatalooge valimisega seotud teavet.
- On realiseeritud makro __STDC_WANT_IEC_60559_EXT__, mis on mĂ”eldud ISO C2X spetsifikatsiooni rakenduses âFâ mÀÀratletud funktsioonide olemasolu kontrollimiseks.
- Powerpc64* sĂŒsteemide jaoks on realiseeritud valik ââdisable-scvâ, mis vĂ”imaldab koguda glibc-d ilma scv kĂ€su toeta.
- Failis gconv-modules on jĂ€etud alles vaid minimaalne hulk pĂ”hilisi gconv mooduleid, samas kui ĂŒlejÀÀnud on viidud eraldi faili gconv-modules-extra.conf, mis asub kaustas gconv-modules.d.
- Linuxi platvormile on realiseeritud parameeter glibc.pthread.stack_cache_size, mida saab kasutada pthreadi stack'i vahekÀgu suuruse seadistamiseks.
- Funktsioon inet_neta on kuulutatud aegunuks, samuti erinevad harva kasutatavad funktsioonid failist (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 failist (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Soovitatakse kasutada eraldi teeke DNSi töötlemiseks.
- Aegunuks on kuulutatud funktsioonid pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np ja pthread_yield, nende asemel tuleks kasutada pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust ja sched_yield.
- SĂŒmboolsete lingide kasutamine, et siduda installitavaid jagatud objekte Glibci versiooniga, on lĂ”petatud. Sellised objektid installitakse nĂŒĂŒd nagu nad on (nĂ€iteks libc.so.6 on nĂŒĂŒd fail, mitte link libc-2.34.so).
- Vaikimisi on malloc'i silumisvÔimeid, nagu MALLOC_CHECK_ (glibc.malloc.check), mtrace() ja mcheck(), keelatud. Need on viidud eraldi teeki libc_malloc_debug.so, kuhu on viidud ka vananenud funktsioonid malloc_get_state ja malloc_set_state.
- Linuxis on nĂŒĂŒd nĂ”utav, et shm_open ja sem_open funktsioonide toimimiseks oleks seade /dev/shm.
- Turbeteated:
- CVE-2021-27645: nscd (nimeteenuse vahemÀlu deemon) protsessi kokkuvarisemine kahekordse free-funktsiooni kutsumise tÔttu, kui töödeldakse spetsiaalselt kujundatud netgroupi pÀringuid.
- CVE-2021-33574: juba vabastatud mĂ€lu alale (use-after-free) juurdepÀÀs mq_notify funktsioonis, kui kasutatakse SIGEV_THREAD tĂŒĂŒpi teavituste ja CPU-l sidumise alternatiivset maski omava lĂ”ime. Probleem vĂ”ib pĂ”hjustada kokkuvarisemise, kuid ei saa vĂ€listada ka muid rĂŒnnakuvorme.
- CVE-2021-35942: parameetri suuruse ĂŒlevool funktsioonis wordexp vĂ”ib pĂ”hjustada rakenduse kokkuvarisemise.
Allikas: opennet.ru
