Glibc 2.34 Stelselbiblioteekvrystelling

Na ses maande se ontwikkeling is die GNU C Library (glibc) 2.34-stelselbiblioteek vrygestel, wat ten volle aan die vereistes van die ISO C11- en POSIX.1-2017-standaarde voldoen. Die nuwe weergawe bevat regstellings van 66 ontwikkelaars.

Sommige van die verbeterings wat in Glibc 2.34 geïmplementeer is, sluit in:

  • Die libpthread, libdl, libutil en libanl biblioteke is geïntegreer in die hoof libc struktuur, die gebruik van hul funksionaliteit in toepassings vereis nie meer koppeling met die -lpthread, -ldl, -lutil en -lanl vlae nie. Voorbereidings is getref vir die integrasie van libresolv in libc. Integrasie sal voorsiening maak vir 'n meer naatlose glibc-opdateringsproses en sal runtime-implementering vereenvoudig. Stubbiblioteke word verskaf om terugwaartse versoenbaarheid te bied met toepassings wat met ouer weergawes van glibc gebou is. As gevolg van die uitbreiding van die aantal strukture en funksies wat in glibc verskaf word, kan probleme ontstaan ​​in toepassings waarin daar 'n kruising van name is met voorheen ongebruikte libpthread-, libdl-, libutil-, libresolv- en libanl-biblioteke.
  • Verskaf die vermoë om 'n 64-bis time_t tipe te gebruik in konfigurasies wat tradisioneel 'n 32-bis time_t tipe gebruik het. In sulke konfigurasies, byvoorbeeld op x86-stelsels, is die verstek steeds 32-bis time_t, maar hierdie gedrag kan nou verander word deur die "_TIME_BITS" makro te gebruik. Hierdie kenmerk is slegs beskikbaar op stelsels met ten minste Linux-kernweergawe 5.1.
  • Bygevoeg die _Vurk-funksie, 'n plaasvervanger vir die vurkfunksie wat voldoen aan die vereistes van "async-signal-safe", d.w.s. veilige oproepe van seinhanteerders toelaat. Tydens die uitvoering van _Fork word 'n minimale omgewing geskep wat voldoende is om funksies in seinhanteerders soos raise en execve op te roep sonder om kenmerke te betrek wat slotte of interne toestand kan verander. Die _Fork-oproep sal in 'n toekomstige weergawe van die POSIX-standaard gedefinieer word, maar vir nou is dit ingesluit as 'n GNU-uitbreiding.
  • Vir die Linux-platform is die execveat-funksie geïmplementeer, wat jou toelaat om 'n uitvoerbare lêer vanaf 'n oop lêerbeskrywing te laat loop. Die nuwe funksie word ook gebruik in die implementering van die fexecve-oproep, wat nie 'n gemonteerde pseudo-FS /proc by opstart vereis nie.
  • Bygevoeg die timespec_getres-funksie, gedefinieer in die konsep ISO C2X-standaard, wat die timespec_get-funksie uitbrei met vermoëns soortgelyk aan die POSIX clock_getres-funksie.
  • Bygevoeg close_range() funksie, wat 'n proses toelaat om 'n hele reeks oop lêerbeskrywings gelyktydig toe te maak. Die funksie is beskikbaar op stelsels met 'n Linux-kern van ten minste weergawe 5.9.
  • Bygevoeg funksies closefrom en posix_spawn_file_actions_addclosefrom_np, wat jou toelaat om alle lêerbeskrywers gelyktydig toe te maak, waarvan die getal groter as of gelyk is aan die gespesifiseerde waarde.
  • In "_DYNAMIC_STACK_SIZE_SOURCE" en "_GNU_SOURCE"-modusse is PTHREAD_STACK_MIN, MINSIGSTKSZ en SIGSTKSZ nie meer konstantes nie, wat ondersteuning vir registerstelle van dinamiese grootte moontlik maak soos dié wat in die ARM SVE-uitbreiding voorsien word.
  • Die skakelaar implementeer die "--list-diagnostics" opsie om inligting te vertoon wat verband hou met IFUNC (indirekte funksie) definisie bewerkings en glibc-hwcaps subgids keuse.
  • Die makro __STDC_WANT_IEC_60559_EXT__ is geïmplementeer, ontwerp om die teenwoordigheid van funksies gedefinieer in Bylae F van die ISO C2X-spesifikasie na te gaan.
  • Vir powerpc64*-stelsels is die "--disable-scv" opsie geïmplementeer, wat jou toelaat om glibc te bou sonder om die scv-instruksie te ondersteun.
  • Slegs die minimum stel kern-gconv-modules is oor in die gconv-modules-lêer, en die res word geskuif na 'n bykomende lêer gconv-modules-extra.conf, geleë in die gconv-modules.d-gids.
  • Vir die Linux-platform word die glibc.pthread.stack_cache_size-parameter geïmplementeer, wat gebruik kan word om die grootte van die pthread-stapelkas op te stel.
  • Die inet_neta-funksie van die koplêer is afgekeur , sowel as verskeie selde gebruikte funksies van (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, res_time, p_long, put query, res_queriesmatch, res_randomid, sim_ntop , sim_ntos, sym_ston) en (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). In plaas van hierdie funksies, word dit aanbeveel om aparte biblioteke te gebruik om met DNS te werk.
  • Die funksies pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np en pthread_yield is afgekeur en pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr en sch_se moet eerder gebruik word.
  • Het opgehou om simboliese skakels te gebruik om geïnstalleerde gedeelde voorwerpe aan die Glibc-weergawe te bind. Sulke voorwerpe word nou geïnstalleer soos dit is (bv. libc.so.6 is nou 'n lêer eerder as 'n skakel na libc-2.34.so).
  • By verstek is ontfoutingskenmerke in malloc gedeaktiveer, soos MALLOC_CHECK_ (glibc.malloc.check), mtrace() en mcheck(), wat na 'n aparte biblioteek geskuif word libc_malloc_debug.so, waarin die verouderde funksies malloc_get_state en malloc_set_state ook het geskuif is.
  • Op Linux vereis funksies soos shm_open en sem_open nou die /dev/shm-toestel om te werk.
  • Kwesbaarhede opgelos:
    • CVE-2021-27645: Die nscd (naambediener caching daemon) proses val ineen as gevolg van 'n dubbele oproep na die gratis funksie wanneer spesiaal vervaardigde netgroepversoeke verwerk word.
    • CVE-2021-33574: Toegang tot 'n reeds vrygestelde geheue-area (gebruik-na-vry) in die mq_notify-funksie wanneer die SIGEV_THREAD-kennisgewingstipe gebruik word met 'n draadkenmerk waarvoor 'n alternatiewe SVE-affiniteitsmasker gestel is. Die probleem kan tot 'n ongeluk lei, maar ander aanvalopsies kan nie uitgesluit word nie.
    • CVE-2021-35942: 'n Parametergrootte-oorloop in die wordexp-funksie kan veroorsaak dat die toepassing ineenstort.

Bron: opennet.ru

Voeg 'n opmerking