Pas një periudhë gjashtë mujore zhvillimi, u publikua lënda e parë e bibliotekës sistemike GNU C Library (glibc) 2.34, e cila i përmbush plotësisht kërkesat e standaardeve ISO C11 dhe POSIX.1-2017. Në këtë version të ri janë përfshirë rregullimet nga 66 zhvillues.
Disa nga përmirësimet që janë realizuar në Glibc 2.34 përfshijnë:
- Bibliotekat libpthread, libdl, libutil dhe libanl janĂ« integruar nĂ« pĂ«rbĂ«rjen kryesore libc, e cila tani nuk kĂ«rkon lidhje me flamujt -lpthread, -ldl, -lutil dhe -lanl pĂ«r t'u pĂ«rdorur nĂ« aplikacione. ĂshtĂ« pĂ«rgatitur integrimi i libresolv nĂ« libc. Kjo integrim do tĂ« lejojĂ« njĂ« proces mĂ« tĂ« qartĂ« pĂ«r azhurnimin e glibc dhe do tĂ« thjeshtojĂ« implementimin nĂ« kohĂ«. PĂ«r tĂ« siguruar pĂ«rputhshmĂ«rinĂ« mbrapa me aplikacionet e ndĂ«rtuara me versione tĂ« vjetra tĂ« glibc, janĂ« ofruar biblioteka ndihmĂ«se. PĂ«r shkak tĂ« zgjerimit tĂ« numrit tĂ« strukturave dhe funksioneve qĂ« ofrohen nĂ« glibc, nuk pĂ«rjashtohet mundĂ«sia e problemeve nĂ« aplikacione, ku ndodhin ndĂ«rprerje emrash me bibliotekat e papĂ«rdorura deri mĂ« tani libpthread, libdl, libutil, libresolv dhe libanl.
- ĂshtĂ« mundĂ«suar pĂ«rdorimi i tipit 64-bit time_t nĂ« konfigurimet ku tradicionalisht Ă«shtĂ« pĂ«rdorur tipi 32-bit time_t. NĂ« kĂ«to konfigurime, pĂ«r shembull nĂ« sistemet x86, ende mbetet si default 32-bit time_t, por kjo sjellje tani mund tĂ« ndryshohet pĂ«rmes makros "_TIME_BITS". Kjo mundĂ«si Ă«shtĂ« e disponueshme vetĂ«m nĂ« sistemet me bĂ«rthamĂ« Linux tĂ« versionit 5.1 ose mĂ« tĂ« ri.
- Funksioni _Fork është shtuar, si zëvendësim i funksionit fork, që i përmbahet kërkesave "async-signal-safe", domethënë lejon thirrje të sigurt nga trajtuesit e sinjaleve. Gjatë ekzekutimit të _Fork, krijohet një mjedis minimal, i mjaftueshëm për thirrje të funksioneve në trajtuesit e sinjaleve, si raise dhe execve, pa aktivizuar mundësi që mund të çojnë në ndryshimin e bllokimeve ose gjendjes së brendshme. Thirrja e _Fork do të përcaktohet në versionin e ardhshëm të standartit POSIX, por për momentin është përfshirë në zgjerimet GNU.
- Për platformën Linux është realizuar funksioni execveat, që lejon ekzekutimin e një skedari ekzekutiv nga një descriptor të hapur fajlli. Funksioni i ri gjithashtu përdoret në implementimin e thirrjes fexecve, që nuk kërkon montimin e sistemit pseudo-FS /proc gjatë ekzekutimit.
- Shtuar funksioni timespec_getres, i definuar në skicën e standartit ISO C2X dhe që plotëson funksionin timespec_get me mundësi të ngjashme me funksionin POSIX clock_getres.
- Shtuar funksioni close_range(), që lejon procesin të mbyllë një gamë të tërë descriptorëve të hapur të fajllit. Funksioni është në dispozicion në sistemet me bërthamë Linux, së paku versioni 5.9.
- Shtuar funksionet closefrom dhe posix_spawn_file_actions_addclosefrom_np, që lejojnë të mbyllen të gjithë descriptorët e fajllit, numri i të cilëve është më i madh ose i barabartë me një vlerë të caktuar.
- Në modet "_DYNAMIC_STACK_SIZE_SOURCE" dhe "_GNU_SOURCE" vlerat PTHREAD_STACK_MIN, MINSIGSTKSZ dhe SIGSTKSZ tani nuk janë konstanta, çka lejon mbështetje për grupe regjistresh me madhësi dinamike, siç ofrohet në zgjerimin ARM SVE.
- NĂ« lidhĂ«s Ă«shtĂ« implementuar opsioni "âlist-diagnostics" pĂ«r tĂ« nxjerrĂ« informacionin e lidhur me operacionet e pĂ«rcaktimit IFUNC (funksion indirekt) dhe pĂ«rzgjedhjen e nĂ«nkatalogut glibc-hwcaps.
- ĂshtĂ« implementuar makroja __STDC_WANT_IEC_60559_EXT__, e cila ka si qĂ«llim kontrollimin e funksioneve tĂ« definuara nĂ« aplikimin "F" tĂ« specifikimit ISO C2X.
- PĂ«r sistemet powerpc64* Ă«shtĂ« implementuar opsioni "âdisable-scv", qĂ« lejon ndĂ«rtimin e glibc pa mbĂ«shtetje pĂ«r instrukcionin scv.
- Në skedarin gconv-modules është lënë vetëm grupi minimal i moduleve bazë gconv, ndërsa të tjerat janë transferuar në një skedar shtesë gconv-modules-extra.conf, i vendosur në katalogun gconv-modules.d.
- Për platformën Linux është realizuar parametri glibc.pthread.stack_cache_size, i cili mund të përdoret për të konfiguroni madhësinë e caches për pthread.
- Funksioni inet_neta nga skedari përfshirës <arpa/inet.h> është shpallur si i vjetruar, si dhe funksione të ndryshme të përdorura rrallë nga <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) dhe <arpa/nameser.h> (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Përdorimi i bibliotekave të veçanta për të punuar me DNS rekomandohet në vend të këtyre funksioneve.
- Funksionet pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np dhe pthread_yield janë shpallur si të vjetra, duke rekomanduar përdorimin e pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust dhe sched_yield në vend të tyre.
- Përdorimi i lidhjeve simbolike për të lidhur objektet e ndara të instaluara me versionin e Glibc është ndërprerë. Objektet e këtilla tani instalohen siç janë (për shembull, libc.so.6 tani është një skedare dhe jo një lidhje për libc-2.34.so).
- Disa janë çaktivizuar nga default funksionet për debug në malloc, si MALLOC_CHECK_ (glibc.malloc.check), mtrace() dhe mcheck(), të cilat janë transferuar në një bibliotekë të veçantë libc_malloc_debug.so, ku janë zhvendosur gjithashtu funksionet e vjetra malloc_get_state dhe malloc_set_state.
- Në Linux, për të punuar me funksionet si shm_open dhe sem_open, tani kërkohet që pajisja /dev/shm të jetë e pranishme.
- Identifikuar dobësi:
- CVE-2021-27645: shkaktimi i dështimit të procesit nscd (daemon për kujtesën e emrave) për shkak të thirrjes dyfish të funksionit free gjatë trajtimit të kërkesave netgroup të strukturuara posaçërisht.
- CVE-2021-33574: qasja në një zonë të kujtesës tashmë të çliruar (use-after-free) në funksionin mq_notify gjatë përdorimit të tipit të njoftimeve SIGEV_THREAD me atributin e thread-it, për të cilin është vendosur një maskë alternative lidhur me CPU. Problemi mund të shkaktojë dështim, por nuk përjashtohen variante të tjera sulmesh.
- CVE-2021-35942: mbipërshkrimi i madhësisë së parametrave në funksionin wordexp mund të çojë në dështimin e aplikacionit.
Burimi: opennet.ru
