Glibc 2.35 Stelselbiblioteekvrystelling

Na ses maande se ontwikkeling is die GNU C Library (glibc) 2.35-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.35 geïmplementeer is, sluit in:

  • Bygevoeg ondersteuning vir die "C.UTF-8"-plek, wat versamelreëls vir alle Unicode-kodes insluit, maar om spasie te bespaar is beperk tot die gebruik van ASCII-reekse in die fnmatch-, regexec- en regcomp-funksies. Die ligging is ongeveer 400 KB, waarvan 346 KB LC_CTYPE-data vir Unicode is, en vereis 'n aparte installasie (nie ingebou in Glibc nie).
  • Enkoderingsdata, karaktertipe-inligting en transliterasietabelle is opgedateer om die Unicode 14.0.0-spesifikasie te ondersteun.
  • IN En funksies en makro's word geïmplementeer wat die resultaat afrond na 'n nouer tipe: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfx, fMfx, fMfx, fMfx, fMfxafN en fMfx . Die funksies word beskryf in die spesifikasies TS 18661-1:2014, TS 18661-3:2015 en by die konsep van die toekomstige ISO C2X C-standaard gevoeg.
  • IN En geïmplementeerde funksies en makro's vir die vind van die minimum en maksimum van drywende puntgetalle met die tipes float, long double, _FloatN en _FloatNx, beskryf in die IEEE 754-2019 spesifikasie en bygevoeg tot die konsep van die toekomstige ISO C2X C standaard: fmaximum, fmaximum_num , fmaksimum_mag, fmaksimum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • IN konstantes bygevoeg vir enkel-presisie swaaipuntgetalle: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_2SQRT.1 en M_2SQRT.
  • Vir funksies exp10 in koplêer Bygevoeg ooreenstemmende makro's wat nie aan spesifieke tipes gekoppel is nie.
  • IN bygevoeg die _PRINTF_NAN_LEN_MAX makro voorgestel in die konsep ISO C2X standaard.
  • Bygevoeg "%b" en "%B" formaat spesifiseerders by die printf familie van funksies om heelgetalle in binêre voorstelling te druk.
  • Die dinamiese skakelstelsel implementeer 'n nuwe DSO-sorteeralgoritme wat diepte-eerste soektog (DFS) gebruik om prestasiekwessies aan te spreek wanneer lusafhanklikhede hanteer word. Om die DSO-sorteringalgoritme te kies, word die glibc.rtld.dynamic_sort-parameter voorgestel, wat op "1" gestel kan word om terug te rol na die ou algoritme.
  • Die ABI het ondersteuning bygevoeg vir 'n nuwe funksie '__memcmpeq', wat deur samestellers gebruik word om die gebruik van 'memcmp' te optimaliseer indien die waarde wat deur hierdie funksie teruggestuur word slegs gebruik word om die voltooiingstatus van 'n operasie na te gaan.
  • Bygevoeg ondersteuning vir die outomatiese registrasie van drade met behulp van die rseq (herbegin reekse) stelsel oproep verskaf sedert Linux kernel 4.18. Die rseq-stelseloproep laat jou toe om die deurlopende uitvoering van 'n groep instruksies te organiseer wat nie onderbreek word nie en bevestig die resultaat deur die laaste instruksie in die groep. In wese bied dit 'n manier vir baie vinnige atoomuitvoering van bedrywighede wat, as dit deur 'n ander draad onderbreek word, skoongemaak en weer probeer word.
  • Bygevoeg simskakel /usr/bin/ld.so.
  • Die versteksamestelling van alle uitvoerbare lêers van ingebedde programme en die toetsstel in PIE (posisie-onafhanklike uitvoerbare) modus word verskaf. Om hierdie gedrag te deaktiveer, word die "--disable-default-pie" opsie verskaf.
  • Vir Linux is 'n glibc.malloc.hugetlb-instelling bygevoeg om die malloc-implementering oor te skakel om die madvise-stelseloproep met die MADV_HUGEPAGE-vlag vir mmap en sbrk te gebruik, of om groot geheuebladsye direk te gebruik deur die MAP_HUGETLB-vlag in mmap te spesifiseer oproepe. In die eerste geval kan prestasieverhogings behaal word as Transparent Huge Pages in madvise-modus gebruik word, en in die tweede geval word die vermoë verskaf om stelselgereserveerde Huge Pages te gebruik.
  • Bygevoeg _dl_find_object funksie wat gebruik kan word om oproep stapel ontspanning inligting by te voeg.
  • Bygevoeg ondersteuning vir die OpenRISC argitektuur (of 1k-linux-gnu) in sagte-float-modus. Die poort vereis binutils 2.35, GCC 11 en Linux-kern 5.4.
  • Het 'n bouvlag "--with-rtld-early-cflags" bygevoeg, wat gebruik kan word om bykomende samestellingsvlae te spesifiseer wat gebruik word wanneer die aanvanklike kode vir dinamiese koppeling gebou word.
  • Vir die Linux-platform is die epoll_pwait2-funksie bygevoeg, wat verskil van epoll_wait deur 'n uitteltyd met nanosekonde-presisie te spesifiseer.
  • Posix_spawn_file_actions_addtcsetpgrp_np funksie bygevoeg om rastoestande uit te skakel wanneer 'n beheerterminaal vir 'n nuwe proses opgestel word.
  • Vir toepassings wat saamgestel is met Glibc en GCC 12+, word die "_FORTIFY_SOURCE=3" beskermingsmodus geïmplementeer, wat moontlike bufferoorvloeie bespeur wanneer stringfunksies uitgevoer word wat in die string.h-koplêer gedefinieer is. Die verskil van die "_FORTIFY_SOURCE=2"-modus kom neer op bykomende kontrole, wat moontlik tot verminderde werkverrigting kan lei.
  • Ondersteuning vir Intel MPX (Memory Protection Extensions), wat gebruik word om wysers vir geheuegrense na te gaan, is gestaak (hierdie tegnologie het nie wydverspreid geraak nie en is reeds van GCC en LLVM verwyder).
  • Die voorafskakelmeganisme en sy geassosieerde omgewingsveranderlikes LD_TRACE_PRELINKING en LD_USE_LOAD_BIAS is opgeskort en sal in 'n toekomstige vrystelling verwyder word.

    Kwesbaarhede opgelos:

    • CVE-2022-23218, CVE-2022-23219 – Bufferoorloop in die svcunix_create- en clnt_create-funksies, wat veroorsaak word deur die inhoud van die lêernaamparameter na die stapel te kopieer sonder om die grootte van die gekopieerde data na te gaan. Vir toepassings wat sonder stapelbeskerming gebou is en die "unix"-protokol gebruik, kan die kwesbaarheid lei tot die uitvoering van aanvallerkode wanneer baie lang lêername verwerk word.
    • CVE-2021-3998 is 'n kwesbaarheid in die realpath()-funksie as gevolg van die terugkeer, onder sekere omstandighede, van 'n verkeerde waarde wat ongeskoonde oorblywende data van die stapel bevat. Vir die SUID-root fusermount-program kan die kwesbaarheid gebruik word om sensitiewe inligting uit prosesgeheue te verkry, byvoorbeeld om inligting oor wysers te bekom.
    • CVE-2021-3999 - Enkelgreep-bufferoorloop in die getcwd()-funksie. Die probleem word veroorsaak deur 'n fout wat sedert 1995 teenwoordig is. Om 'n oorloop te veroorsaak, roep eenvoudig chdir() op die "/" gids in 'n aparte bergpunt naamruimte.

    Bron: opennet.ru

Voeg 'n opmerking