Glibc 2.35 System Library -julkaisu

Kuuden kuukauden kehitystyön jälkeen on julkaistu GNU C Library (glibc) 2.35 -järjestelmäkirjasto, joka täyttää täysin ISO C11- ja POSIX.1-2017 -standardien vaatimukset. Uusi julkaisu sisältää korjauksia 66 kehittäjältä.

Jotkut Glibc 2.35:ssa toteutetuista parannuksista ovat:

  • Lisätty tuki "C.UTF-8"-alueelle, joka sisältää lajittelusäännöt kaikille Unicode-koodeille, mutta tilan säästämiseksi rajoitetaan ASCII-alueiden käyttöön fnmatch-, regexec- ja regcomp-funktioissa. Kieliasetus on noin 400 kt, josta 346 kt on Unicoden LC_CTYPE-dataa, ja se vaatii erillisen asennuksen (ei sisäänrakennettua Glibciin).
  • Koodaustiedot, merkkityyppitiedot ja translitterointitaulukot on päivitetty tukemaan Unicode 14.0.0 -spesifikaatiota.
  • ja toteuttavat funktioita ja makroja, jotka pyöristävät tuloksen kapeampaan tyyppiin: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqMffma, fMxsqrtfma fMxfmafNx. Toiminnot on kuvattu spesifikaatioissa TS 18661-1:2014, TS 18661-3:2015 ja lisätty tulevan ISO C2X C -standardin luonnokseen.
  • ja toteuttavat funktioita ja makroja float-, long double-, _FloatN- ja _FloatNx-liukulukulukujen minimi- ja maksimiarvon löytämiseksi, jotka on kuvattu IEEE 754-2019 -spesifikaatiossa ja lisätty tulevaisuuden luonnokseen ISO C2X -standardi: fmaximum, fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • Lisätty vakiot yksittäisille tarkkuusliukulukuille :een: 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_SQRT_MQRTf, M_2_SQRT_MQPI
  • Exp10-funktioille vastaavat makrot, jotka eivät ole sidottu tiettyihin tyyppeihin, on lisätty otsikkotiedostoon .
  • Lisätty ISO C2X -standardin luonnoksessa ehdotettu _PRINTF_NAN_LEN_MAX-makro tiedostoon .
  • Lisätty "%b" ja "%B" muotomääritykset printf-funktioperheeseen kokonaislukujen tulostamiseksi binäärimuodossa.
  • Dynaaminen linkitysjärjestelmä toteuttaa uuden lajittelualgoritmin, DSO, joka käyttää syvällistä hakua (DFS) ratkaistakseen silmukkariippuvuuksien suorituskykyongelmia. DSO-lajittelualgoritmin valitsemiseksi ehdotetaan parametria glibc.rtld.dynamic_sort, joka voidaan asettaa arvoon "1" palauttaaksesi vanhaan algoritmiin.
  • ABI on lisännyt tuen uudelle funktiolle '__memcmpeq', jota kääntäjät käyttävät optimoimaan 'memcmp':n käyttöä, jos tämän funktion palauttamaa arvoa käytetään vain toiminnon valmistumistilan tarkistamiseen.
  • Lisätty tuki säikeiden automaattiseen rekisteröintiin käyttämällä rseq (uudelleenkäynnistettävät sekvenssit) -järjestelmäkutsua, joka on tarjottu Linux-ytimen versiosta 4.18 lähtien. rseq-järjestelmäkutsulla voit järjestää käskyryhmän jatkuvan suorituksen, joka ei keskeydy ja vahvistaa tuloksen ryhmän viimeisellä käskyllä. Pohjimmiltaan se tarjoaa välineen erittäin nopeaan atomien suorittamiseen operaatioissa, jotka puhdistetaan ja yritetään uudelleen, jos toinen säie keskeyttää.
  • Lisätty symbolilinkki /usr/bin/ld.so.
  • Kaikkien sulautettujen ohjelmien suoritettavien tiedostojen oletuskokoonpano ja testisarja PIE (paikasta riippumaton suoritettava) -tilassa tarjotaan. Voit poistaa tämän toiminnan käytöstä "--disable-default-pie" -vaihtoehdolla.
  • Linuxissa glibc.malloc.hugetlb-asetus on lisätty, jotta malloc-toteutus voidaan vaihtaa käyttämään madvise-järjestelmäkutsua MADV_HUGEPAGE-lipulla mmap:lle ja sbrk:lle tai käyttämään suoraan suuria muistisivuja määrittämällä MAP_HUGETLB-lipun mmapissa. puhelut. Ensimmäisessä tapauksessa suorituskyvyn parannuksia voidaan saavuttaa, jos Transparent Huge Pages -sivuja käytetään madvise-tilassa, ja toisessa tapauksessa tarjotaan mahdollisuus käyttää järjestelmän varaamia suuria sivuja (Huge Pages).
  • Lisätty _dl_find_object-toiminto, jota voidaan käyttää puhelupinon purkamistietojen lisäämiseen.
  • Lisätty tuki OpenRISC-arkkitehtuurille (tai 1k-linux-gnu) soft-float-tilassa. Portti vaatii binutils 2.35:n, GCC 11:n ja Linux-ytimen 5.4:n.
  • Lisätty koontimerkki "--with-rtld-early-cflags", jota voidaan käyttää määrittämään muita käännöslippuja, joita käytetään luotaessa dynaamisen linkityksen alkukoodia.
  • Linux-alustalle on lisätty epoll_pwait2-funktio, joka eroaa epoll_wait-funktiosta määrittämällä aikakatkaisun nanosekunnin tarkkuudella.
  • Lisätty posix_spawn_file_actions_addtcsetpgrp_np-toiminto kilpailuolosuhteiden eliminoimiseksi, kun ohjauspäätettä asetetaan uudelle prosessille.
  • Glibc:llä ja GCC 12+:lla käännetyille sovelluksille on toteutettu suojaustila "_FORTIFY_SOURCE=3", joka havaitsee mahdolliset puskurin ylivuodot suoritettaessa string.h-otsikkotiedostossa määritettyjä merkkijonofunktioita. Ero "_FORTIFY_SOURCE=2"-tilasta johtuu lisätarkistuksista, jotka voivat johtaa suorituskyvyn heikkenemiseen.
  • Intel MPX (Memory Protection Extensions) -tuki, jota käytetään osoittimien tarkistamiseen muistirajojen varalta, on lopetettu (tämä tekniikka ei ole yleistynyt, ja se on jo poistettu GCC:stä ja LLVM:stä).
  • Esilinkkimekanismi ja siihen liittyvät ympäristömuuttujat LD_TRACE_PRELINKING ja LD_USE_LOAD_BIAS on vanhentuneita ja poistetaan tulevassa julkaisussa.

    Haavoittuvuudet korjattu:

    • CVE-2022-23218, CVE-2022-23219 – Puskurin ylivuoto svcunix_create- ja clnt_create-funktioissa, joka johtuu tiedostonimiparametrin sisällön kopioimisesta pinoon tarkistamatta kopioitujen tietojen kokoa. Sovelluksissa, jotka on rakennettu ilman pinosuojausta ja jotka käyttävät "unix"-protokollaa, haavoittuvuus voi johtaa hyökkääjäkoodin suorittamiseen erittäin pitkiä tiedostonimiä käsiteltäessä.
    • CVE-2021-3998 on realpath()-funktion haavoittuvuus, joka johtuu tietyissä olosuhteissa väärän arvon palauttamisesta, joka sisältää pinosta puhdistamattomia jäännöstietoja. SUID-root fusermount -ohjelman haavoittuvuuden avulla voidaan hankkia arkaluonteisia tietoja prosessimuistista, esimerkiksi saadakseen tietoja osoittimista.
    • CVE-2021-3999 - Yksitavuisen puskurin ylivuoto getcwd()-funktiossa. Ongelman aiheuttaa vuodesta 1995 lähtien ollut bugi. Jos haluat aiheuttaa ylivuodon, kutsu chdir() hakemistosta "/" erillisessä liitoskohdan nimiavaruudessa.

    Lähde: opennet.ru

Lisää kommentti