Glibc 2.34 System Library Release

Efter sex månaders utveckling har GNU C Library (glibc) 2.34-systembiblioteket släppts, som helt uppfyller kraven i ISO C11- och POSIX.1-2017-standarderna. Den nya utgåvan innehåller korrigeringar från 66 utvecklare.

Några av förbättringarna som implementerats i Glibc 2.34 inkluderar:

  • Libpthread-, libdl-, libutil- och libanl-biblioteken är integrerade i libc-huvudstrukturen, användningen av deras funktionalitet i applikationer kräver inte längre länkning med flaggorna -lpthread, -ldl, -lutil och -lanl. Förberedelser har gjorts för integreringen av libresolv i libc. Integration kommer att möjliggöra en mer sömlös glibc-uppdateringsprocess och kommer att förenkla implementeringen av runtime. Stubbibliotek tillhandahålls för att ge bakåtkompatibilitet med applikationer byggda med äldre versioner av glibc. På grund av ökningen av antalet strukturer och funktioner som tillhandahålls i glibc, kan problem uppstå i applikationer där det finns en korsning av namn med tidigare oanvända bibliotek libpthread, libdl, libutil, libresolv och libanl.
  • Ger möjlighet att använda en 64-bitars time_t-typ i konfigurationer som traditionellt använde en 32-bitars time_t-typ. I sådana konfigurationer, till exempel på x86-system, är standarden fortfarande 32-bitars time_t, men detta beteende kan nu ändras med makrot "_TIME_BITS". Den här funktionen är endast tillgänglig på system med minst Linux-kärnversion 5.1.
  • Lade till _Fork-funktionen, en ersättning för gaffelfunktionen som uppfyller kraven på ”async-signal-safe”, d.v.s. möjliggör säker uppringning från signalhanterare. Under exekvering av _Fork skapas en minimal miljö som är tillräcklig för att anropa funktioner i signalhanterare som höjning och execve utan att involvera funktioner som kan ändra lås eller internt tillstånd. _Fork-anropet kommer att definieras i en framtida version av POSIX-standarden, men för närvarande ingår det som en GNU-tillägg.
  • För Linux-plattformen har execveat-funktionen implementerats, som låter dig köra en körbar fil från en öppen filbeskrivning. Den nya funktionen används också i implementeringen av fexecve-anropet, som inte kräver en monterad pseudo-FS /proc vid uppstart.
  • Lade till funktionen timespec_getres, definierad i utkastet till ISO C2X-standard, som utökar funktionen timespec_get med möjligheter som liknar funktionen POSIX clock_getres.
  • Lade till close_range() funktion, som gör att en process kan stänga en hel rad öppna filbeskrivningar på en gång. Funktionen är tillgänglig på system med en Linux-kärna på minst version 5.9.
  • Lade till funktioner closefrom och posix_spawn_file_actions_addclosefrom_np, så att du kan stänga alla filbeskrivningar på en gång, vars antal är större än eller lika med det angivna värdet.
  • I lägena "_DYNAMIC_STACK_SIZE_SOURCE" och "_GNU_SOURCE" är PTHREAD_STACK_MIN, MINSIGSTKSZ och SIGSTKSZ inte längre konstanter, vilket tillåter stöd för registeruppsättningar med dynamisk storlek som de som tillhandahålls i ARM SVE-tillägget.
  • Länkaren implementerar alternativet "--list-diagnostics" för att visa information relaterad till IFUNC (indirekt funktion) definitionsoperationer och val av glibc-hwcaps underkatalog.
  • Makrot __STDC_WANT_IEC_60559_EXT__ har implementerats, utformat för att kontrollera närvaron av funktioner som definieras i bilaga F i ISO C2X-specifikationen.
  • För powerpc64*-system har alternativet "--disable-scv" implementerats, vilket gör att du kan bygga glibc utan att stödja scv-instruktionen.
  • Endast den minsta uppsättningen av gconv-kärnmoduler finns kvar i filen gconv-modules, och resten flyttas till en ytterligare fil gconv-modules-extra.conf, som finns i katalogen gconv-modules.d.
  • För Linux-plattformen implementeras parametern glibc.pthread.stack_cache_size, som kan användas för att konfigurera storleken på pthread-stackens cache.
  • Funktionen inet_neta från rubrikfilen har fasats ut , samt olika sällan använda funktioner från (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_server, res_värd, inställt_värd, in_värd, p_server, p_lång, p_server, in query, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) och (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Istället för dessa funktioner rekommenderas att använda separata bibliotek för att arbeta med DNS.
  • Funktionerna pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np och pthread_yield har föråldrats och pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr och sch_se ska användas istället.
  • Slutade använda symboliska länkar för att binda installerade delade objekt till Glibc-versionen. Sådana objekt är nu installerade som de är (t.ex. är libc.so.6 nu en fil snarare än en länk till libc-2.34.so).
  • Som standard är felsökningsfunktioner i malloc inaktiverade, såsom MALLOC_CHECK_ (glibc.malloc.check), mtrace() och mcheck(), som flyttas till ett separat bibliotek libc_malloc_debug.so, till vilket de föråldrade funktionerna malloc_get_state och malloc_set_state också har flyttats.
  • På Linux kräver funktioner som shm_open och sem_open nu att /dev/shm-enheten fungerar.
  • Sårbarheter fixade:
    • CVE-2021-27645: nscd-processen (namnserver-cache-demon) kraschar på grund av ett dubbelt anrop till gratisfunktionen vid bearbetning av specialgjorda nätgruppsförfrågningar.
    • CVE-2021-33574: Tillgång till ett redan frigjort minnesområde (use-after-free) i funktionen mq_notify när du använder aviseringstypen SIGEV_THREAD med ett trådattribut för vilket en alternativ CPU-affinitetsmask är inställd. Problemet kan leda till en krasch, men andra attackalternativ kan inte uteslutas.
    • CVE-2021-35942: Ett överflöde av parameterstorlek i wordexp-funktionen kan få applikationen att krascha.

Källa: opennet.ru

Lägg en kommentar