Toleo la Maktaba ya Mfumo wa Glibc 2.35

Baada ya miezi sita ya maendeleo, maktaba ya mfumo wa GNU C Library (glibc) 2.35 imetolewa, ambayo inatii kikamilifu mahitaji ya viwango vya ISO C11 na POSIX.1-2017. Toleo jipya linajumuisha marekebisho kutoka kwa watengenezaji 66.

Baadhi ya maboresho yaliyotekelezwa katika Glibc 2.35 ni pamoja na:

  • Usaidizi ulioongezwa kwa lugha ya "C.UTF-8", ambayo inajumuisha sheria za mgongano wa misimbo yote ya Unicode, lakini kuhifadhi nafasi ni tu matumizi ya safu za ASCII katika fnmatch, regexec na vitendaji vya regcomp. Eneo hilo ni takriban KB 400, ambapo 346 KB ni data ya LC_CTYPE ya Unicode, na inahitaji usakinishaji tofauti (usiojengwa ndani ya Glibc).
  • Data ya usimbaji, maelezo ya aina ya wahusika, na majedwali ya unukuzi yamesasishwa ili kutumia vipimo vya Unicode 14.0.0.
  • KATIKA Na kazi na makro hutekelezwa ambayo huzunguka matokeo kwa aina nyembamba zaidi: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafNx, fMfxfMNx na fMfx Kazi zimeelezwa katika vipimo TS 18661-1:2014, TS 18661-3:2015 na kuongezwa kwenye rasimu ya kiwango cha ISO C2X C cha baadaye.
  • KATIKA Na kazi zilizotekelezwa na macros za kutafuta kiwango cha chini na cha juu zaidi cha nambari za sehemu zinazoelea na aina za kuelea, mbili ndefu, _FloatN na _FloatNx, zilizofafanuliwa katika vipimo vya IEEE 754-2019 na kuongezwa kwa rasimu ya kiwango cha ISO C2X C cha siku zijazo: fmaximum, fmaximum_num , fminimum_mag, fminimum_mag_num, fminimum_num, fminimum_mag, fminimum_mag_num.
  • KATIKA iliongeza viunga kwa nambari moja za uhakika zinazoelea: 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_2_fSRT1.
  • Kwa kazi exp10 katika faili ya kichwa Aliongeza macros sambamba ambayo si amefungwa kwa aina maalum.
  • KATIKA aliongeza _PRINTF_NAN_LEN_MAX jumla iliyopendekezwa katika rasimu ya ISO C2X ya kawaida.
  • Imeongeza vibainishi vya umbizo "%b" na "%B" kwenye familia ya printf ya chaguo za kukokotoa ili kuchapisha nambari kamili katika uwakilishi wa mfumo wa jozi.
  • Mfumo unaobadilika wa kuunganisha hutekeleza algoriti mpya ya kupanga ya DSO inayotumia utafutaji wa kina-kwanza (DFS) kushughulikia masuala ya utendakazi wakati wa kushughulikia utegemezi uliokatika. Ili kuchagua algoriti ya kupanga ya DSO, kigezo cha glibc.rtld.dynamic_sort kinapendekezwa, ambacho kinaweza kuwekwa kuwa "1" ili kurudi kwenye algoriti ya zamani.
  • ABI imeongeza usaidizi kwa chaguo mpya la kukokotoa '__memcmpeq', linalotumiwa na wakusanyaji kuboresha matumizi ya 'memcmp' ikiwa thamani iliyorejeshwa na chaguo hili la kukokotoa itatumika tu kuangalia hali ya kukamilika kwa operesheni.
  • Usaidizi ulioongezwa wa kusajili nyuzi kiotomatiki kwa kutumia simu ya mfumo ya rseq (mifuatano inayoweza kuanzishwa tena) iliyotolewa tangu Linux kernel 4.18. Simu ya mfumo wa rseq hukuruhusu kupanga utekelezaji endelevu wa kikundi cha maagizo ambacho hakijaingiliwa na inathibitisha matokeo kwa maagizo ya mwisho kwenye kikundi. Kimsingi, hutoa njia ya utekelezaji wa haraka wa atomiki wa shughuli ambazo, ikiwa zimekatizwa na uzi mwingine, husafishwa na kujaribu tena.
  • Ulinganisho ulioongezwa /usr/bin/ld.so.
  • Mkusanyiko wa chaguo-msingi wa faili zote zinazoweza kutekelezwa za programu zilizopachikwa na jaribio lililowekwa katika hali ya PIE (msimamo wa kujitegemea unaoweza kutekelezwa) hutolewa. Ili kuzima tabia hii, chaguo la "--disable-default-pie" limetolewa.
  • Kwa Linux, mpangilio wa glibc.malloc.hugetlb umeongezwa ili kuruhusu utekelezaji wa malloc kubadilishwa ili kutumia simu ya mfumo wa madvise yenye bendera ya MADV_HUGEPAGE ya mmap na sbrk, au kutumia moja kwa moja kurasa kubwa za kumbukumbu kwa kubainisha bendera ya MAP_HUGETLB katika mmap. simu. Katika kesi ya kwanza, faida za utendakazi zinaweza kupatikana ikiwa Kurasa Kubwa za Uwazi zinatumiwa katika hali ya madvise, na katika kesi ya pili, uwezo wa kutumia Kurasa Kubwa zilizohifadhiwa na mfumo hutolewa.
  • Imeongeza _dl_find_object chaguo za kukokotoa ambazo zinaweza kutumika kuongeza maelezo ya kutengua rundo la simu.
  • Usaidizi ulioongezwa kwa usanifu wa OpenRISC (or1k-linux-gnu) katika hali ya kuelea laini. Bandari inahitaji binutils 2.35, GCC 11, na Linux kernel 5.4.
  • Imeongeza bendera ya muundo "--with-rtld-early-cflags", ambayo inaweza kutumika kubainisha bendera za mjumuisho za ziada zinazotumiwa wakati wa kuunda msimbo wa awali wa kuunganisha kwa nguvu.
  • Kwa jukwaa la Linux, chaguo za kukokotoa za epoll_pwait2 zimeongezwa, ambazo hutofautiana na epoll_wait kwa kubainisha muda wa kuisha kwa usahihi wa nanosecond.
  • Umeongeza kitendakazi cha posix_spawn_file_actions_addtcsetpgrp_np ili kuondoa masharti ya mbio wakati wa kuweka kidhibiti cha mchakato mpya.
  • Kwa programu zilizokusanywa na Glibc na GCC 12+, hali ya ulinzi ya "_FORTIFY_SOURCE=3" inatekelezwa, ambayo hutambua uwezekano wa kufurika kwa bafa wakati wa kutekeleza vipengele vya kamba vilivyobainishwa katika faili ya kichwa cha string.h. Tofauti kutoka kwa hali ya "_FORTIFY_SOURCE=2" inakuja kwenye ukaguzi wa ziada, ambao unaweza kusababisha kupungua kwa utendakazi.
  • Usaidizi wa Intel MPX (Viendelezi vya Ulinzi wa Kumbukumbu), unaotumiwa kuangalia viashiria kwa mipaka ya kumbukumbu, umekataliwa (teknolojia hii haijaenea na tayari imeondolewa kwenye GCC na LLVM).
  • Utaratibu wa kiunganishi na vigeu vyake vya mazingira vinavyohusishwa LD_TRACE_PRELINKING na LD_USE_LOAD_BIAS vimeacha kutumika na vitaondolewa katika toleo la baadaye.

    Udhaifu umewekwa:

    • CVE-2022-23218, CVE-2022-23219 - Buffer kufurika katika svcunix_create na clnt_create vitendaji, vinavyosababishwa na kunakili yaliyomo kwenye kigezo cha jina la faili kwenye rafu bila kuangalia ukubwa wa data iliyonakiliwa. Kwa programu zilizoundwa bila ulinzi wa rafu na kwa kutumia itifaki ya "unix", uwezekano wa kuathiriwa unaweza kusababisha utekelezaji wa msimbo wa mshambulizi wakati wa kuchakata majina ya faili ndefu sana.
    • CVE-2021-3998 ni hatari katika njia ya kukokotoa ya realpath() kutokana na kurejesha, chini ya hali fulani, kwa thamani isiyo sahihi iliyo na data iliyo najisi ya salio kutoka kwa rafu. Kwa programu ya SUID-root fusermount, athari inaweza kutumika kupata taarifa nyeti kutoka kwa kumbukumbu ya mchakato, kwa mfano, kupata taarifa kuhusu viashiria.
    • CVE-2021-3999 - bafa ya baiti moja inafurika katika kitendakazi cha getcwd(). Tatizo linasababishwa na mdudu ambaye amekuwepo tangu 1995. Ili kusababisha kufurika, piga simu chdir() kwenye saraka ya "/" kwenye nafasi tofauti ya jina la sehemu ya mlima.

    Chanzo: opennet.ru

Kuongeza maoni