Publikimi i Bibliotekës së Sistemit Glibc 2.34

Pas gjashtë muajsh zhvillimi, është lëshuar biblioteka e sistemit GNU C Library (glibc) 2.34, e cila përputhet plotësisht me kërkesat e standardeve ISO C11 dhe POSIX.1-2017. Publikimi i ri përfshin rregullime nga 66 zhvillues.

Disa nga përmirësimet e zbatuara në Glibc 2.34 përfshijnë:

  • Bibliotekat libpthread, libdl, libutil dhe libanl janë të integruara në strukturën kryesore libc, përdorimi i funksionalitetit të tyre në aplikacione nuk kërkon më lidhje duke përdorur flamujt -lpthread, -ldl, -lutil dhe -lanl. Janë bërë përgatitjet për integrimin e libresolv në libc. Integrimi do të lejojë një proces më të qetë të përditësimit të glibc dhe do të thjeshtojë zbatimin e kohës së ekzekutimit. Bibliotekat Stub ofrohen për të ofruar përputhshmëri të prapambetur me aplikacionet e ndërtuara me versione më të vjetra të glibc. Për shkak të zgjerimit të numrit të strukturave dhe funksioneve të ofruara në glibc, mund të shfaqen probleme në aplikacionet në të cilat ka një kryqëzim të emrave me bibliotekat e papërdorura më parë libpthread, libdl, libutil, libresolv dhe libanl.
  • Ofron mundësinë për të përdorur një lloj time_t 64-bit në konfigurimet që tradicionalisht përdornin një tip time_t 32-bit. Në konfigurime të tilla, për shembull në sistemet x86, parazgjedhja është ende 32-bit time_t, por kjo sjellje tani mund të ndryshohet duke përdorur makro "_TIME_BITS". Ky funksion është i disponueshëm vetëm në sistemet me të paktën versionin 5.1 të kernelit Linux.
  • U shtua funksioni _Fork, një zëvendësim për funksionin fork që plotëson kërkesat e "async-signal-safe", d.m.th. duke lejuar thirrje të sigurta nga mbajtësit e sinjalit. Gjatë ekzekutimit të _Fork, krijohet një mjedis minimal që është i mjaftueshëm për të thirrur funksione në mbajtësit e sinjaleve, të tilla si ngritja dhe ekzekutimi pa përfshirë veçori që mund të ndryshojnë bllokimet ose gjendjen e brendshme. Thirrja _Fork do të përcaktohet në një version të ardhshëm të standardit POSIX, por tani për tani është përfshirë si një shtesë GNU.
  • Për platformën Linux, është zbatuar funksioni execveat, i cili ju lejon të ekzekutoni një skedar të ekzekutueshëm nga një përshkrues i skedarit të hapur. Funksioni i ri përdoret gjithashtu në zbatimin e thirrjes fexecve, e cila nuk kërkon një pseudo-FS /proc të montuar në fillim.
  • U shtua funksioni timespec_getres, i përcaktuar në draft standardin ISO C2X, i cili zgjeron funksionin timespec_get me aftësi të ngjashme me funksionin POSIX clock_getres.
  • U shtua funksioni close_range(), i cili lejon një proces të mbyllë një gamë të tërë të përshkruesve të skedarëve të hapur menjëherë. Funksioni është i disponueshëm në sistemet me një kernel Linux të paktën versionin 5.9.
  • Funksionet e shtuara closefrom dhe posix_spawn_file_actions_addclosefrom_np, duke ju lejuar të mbyllni të gjithë përshkruesit e skedarëve menjëherë, numri i të cilëve është më i madh ose i barabartë me vlerën e specifikuar.
  • Në modalitetet "_DYNAMIC_STACK_SIZE_SOURCE" dhe "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ dhe SIGSTKSZ nuk janë më konstante, duke lejuar mbështetjen për grupe regjistrash me përmasa dinamike si ato të ofruara në shtesën ARM SVE.
  • Lidhësi zbaton opsionin "--list-diagnostics" për të shfaqur informacionin në lidhje me operacionet e përkufizimit të IFUNC (funksioni indirekt) dhe përzgjedhjen e nëndirektorisë glibc-hwcaps.
  • Makro __STDC_WANT_IEC_60559_EXT__ është implementuar, i projektuar për të kontrolluar praninë e funksioneve të përcaktuara në Aneksin F të specifikimit ISO C2X.
  • Për sistemet powerpc64*, është zbatuar opsioni “--disable-scv”, i cili ju lejon të ndërtoni glibc pa mbështetur instruksionin scv.
  • Vetëm grupi minimal i moduleve bazë gconv mbetet në skedarin gconv-modules dhe pjesa tjetër zhvendoset në një skedar shtesë gconv-modules-extra.conf, i vendosur në direktorinë gconv-modules.d.
  • Për platformën Linux, është implementuar parametri glibc.pthread.stack_cache_size, i cili mund të përdoret për të konfiguruar madhësinë e cache-it të stivës së pthread.
  • Funksioni inet_neta nga skedari i kokës është zhvlerësuar , si dhe funksione të ndryshme të përdorura rrallë nga (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_rcode_, p_restalim, p_r serveri, pyetja e emrit të ri, përputhja e pyetjeve_res, res_randomid, sym_ntop, sym_ntos, sym_ston) dhe (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Në vend të këtyre funksioneve, rekomandohet përdorimi i bibliotekave të veçanta për të punuar me DNS.
  • Funksionet pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np dhe pthread_yield janë zhvlerësuar dhe në vend të kësaj janë përdorur pthread_mutex_consistent, thread_mutexattr_getrobust_np dhe duhet të përdoret .
  • Ndaloi përdorimin e lidhjeve simbolike për të lidhur objektet e instaluara të përbashkëta me versionin Glibc. Objekte të tilla tani janë instaluar siç janë (p.sh. libc.so.6 është tani një skedar dhe jo një lidhje me libc-2.34.so).
  • Si parazgjedhje, veçoritë e korrigjimit të gabimeve në malloc janë çaktivizuar, si MALLOC_CHECK_ (glibc.malloc.check), mtrace() dhe mcheck(), të cilat janë zhvendosur në një bibliotekë të veçantë libc_malloc_debug.so, në të cilën funksionet e vjetëruara malloc_get_state dhe malloc_set_state kanë gjithashtu është zhvendosur.
  • Në Linux, funksionet si shm_open dhe sem_open tani kërkojnë që pajisja /dev/shm të funksionojë.
  • Dobësitë e rregulluara:
    • CVE-2021-27645: Procesi nscd (daemon i memorizimit të serverit të emrave) prishet për shkak të një thirrjeje të dyfishtë në funksionin falas kur përpunohen kërkesat e grupit të rrjetit të krijuara posaçërisht.
    • CVE-2021-33574: Qasja në një zonë memorie tashmë të liruar (përdorim pas lirimit) në funksionin mq_notify kur përdorni llojin e njoftimit SIGEV_THREAD me një atribut thread për të cilin është vendosur një maskë alternative e afinitetit të CPU-së. Problemi mund të çojë në një përplasje, por opsionet e tjera të sulmit nuk mund të përjashtohen.
    • CVE-2021-35942: Një tejkalim i madhësisë së parametrit në funksionin wordexp mund të shkaktojë rrëzimin e aplikacionit.

Burimi: opennet.ru

Shto një koment