Publikimi i bibliotekës sistemit Glibc 2.35

Pas six muaj zhvillimi, është publikuar versione e bibliotekës sistemike GNU C Library (glibc) 2.35, e cila plotëson plotësisht kërkesat e standardeve ISO C11 dhe POSIX.1-2017. Në këtë version të ri, janë përfshirë rregullime nga 66 zhvillues.

Disa nga përmirësimet në Glibc 2.35 përfshijnë:

  • Shtuar mbështetje për lokalitetin «C.UTF-8», i cili përfshin rregullat e renditjes për të gjitha kodet Unicode, por, për të kursyer hapësirë, është kufizuar në përdorimin e diapazonit ASCII në funksionet fnmatch, regexec dhe regcomp. Lokaliteti zë rreth 400 KB, prej të cilave 346 KB janë të dhëna LC_CTYPE për Unicode dhe kërkon instalim të veçantë (nuk është i përfshirë në Glibc).
  • Të dhënat e kodimeve, informacioni mbi tipet e simboleve dhe tabelat e transliterimit janë azhurnuar për të mbështetur specifikimin Unicode 14.0.0.
  • Në <math.h> dhe <tgmath.h> janë realizuar funksione dhe makros që përfundojnë rezultatin në një tip më të ngushtë: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN dhe fMfmafNx. Funksionet janë përshkruar në specifikimet TS 18661-1:2014, TS 18661-3:2015 dhe janë shtuar në draftin e standardit të ardhshëm C ISO C2X.
  • Në <math.h> dhe <tgmath.h> janë implementuar funksione dhe makro për gjetjen e minimumit dhe maksimumit të numrave me pikë fluturuese me tipe float, long double, _FloatN dhe _FloatNx, të përshkruara në specifikimin IEEE 754-2019 dhe të shtuara në projektin e standardit të ardhshëm të C-it ISO C2X: fmaximum, fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • Në <math.h> janë shtuar konstanta për numrat me pikë fluturuese me saktësi të vetme: 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_SQRT2f dhe M_SQRT1_2f.
  • Për funksionin exp10, në skedarin hyrës <tgmath.h> janë shtuar makros që nuk lidhen me tipe specifike.
  • Në <stdio.h> është shtuar makrosi _PRINTF_NAN_LEN_MAX, i propozuar në projektin e standardit ISO C2X.
  • Në funksionet e familjes printf janë shtuar specifikatorët e formatit «%b» dhe «%B» për të shfaqur numrat e plotë në përfaqësimin binar.
  • Në sistemin e lidhjes dinamike është implementuar një algoritëm i ri renditjeje DSO, që përdor metodën e kërkimit në thellësi (DFS) për të zgjidhur problemet e performancës gjatë përpunimit të varësive ciklike. Për të zgjedhur algoritmin e renditjes DSO, është propozuar parametri glibc.rtld.dynamic_sort, të cilit mund t'i caktohet vlera "1" për të kthyer në algoritmin e vjetër.
  • Në ABI është shtuar mbështetje për funksionin e ri ‘__memcmpeq’, i cili përdoret nga kompilatorët për optimizimin e përdorimit të ‘memcmp’, në rastin kur vlera e kthyer nga ky funksion përdoret vetëm për të kontrolluar statusin e përfundimit të operacionit.
  • Është shtuar mbështetje për regjistrimin automatik të threads, duke përdorur thirrjen sistemike rseq (sekuencat e ripërtypshme), e cila ofrohet që nga bërthama Linux 4.18. Thirrja sistemike rseq lejon organizimin e ekzekutimit të pandërprerë të një grupi instrukcionesh, pa ndërprerje dhe duke konfirmuar rezultatin e instrukciones së fundit në grup. Në thelb ofrohet një mjet për ekzekutimin shumë të shpejtë atomik të operacioneve, të cilat në rast ndërprerjeje nga një thread tjetër, pastrohen dhe përpunohet një përpjekje tjetër për ekzekutim.
  • Është shtuar një lidhje simbolike /usr/bin/ld.so.
  • Është siguruar ndërtimi default i të gjitha skedave ekzekutivë të programeve të brendshme dhe testit në mënyrën PIE (ekzekutiv i pavarur nga pozita). Për të çaktivizuar këtë sjellje është parashikuar opsioni "—disable-default-pie".
  • Për Linux është shtuar cilësimi glibc.malloc.hugetlb, që lejon kalimin e realizimit të malloc për të përdorur thirrjen sistemore madvise me flamurin MADV_HUGEPAGE për mmap dhe sbrk ose për të përdorur drejtpërdrejt faqet e mëdha të memories përmes përcaktimit të flamurit MAP_HUGETLB në thirrjet mmap. Në rastin e parë, mund të arrihet rritje e performancës nëse Transparent Huge Pages përdoren në mënyrën madvise, ndërsa në rastin e dytë ofrohet mundësia për përdorimin e faqeve të mëdha të rezervuara nga sistemi (Huge Pages).
  • Është shtuar funksioni _dl_find_object, i cili mund të përdoret për të shtuar informacion mbi zhvillimin e katërkëndshit të thirrjeve (unwind).
  • Është shtetur mbështetje për arkitekturën OpenRISC (or1k-linux-gnu) në modin e përpunimit programatik të operacioneve me pikatore të lëngshme (soft-float). Për funksionimin e portit kërkohen binutils 2.35, GCC 11, dhe bërthama Linux 5.4.
  • është shtuar flamuri i ndërtimit "--with-rtld-early-cflags", i cili lejon specifikimin e flamurëve shtesë të kompilimit që përdoren gjatë ndërtimit të kodit fillestar për lidhjen dinamike.
  • Për platformën Linux është shtuar funksioni epoll_pwait2, i cili dallon nga epoll_wait duke përcaktuar një kohë të pritur me saktësi nanoseconds.
  • Është shtuar funksioni posix_spawn_file_actions_addtcsetpgrp_np, i cili eliminon kushtet e garës kur konfigurohet terminali kontrollues për procesin e ri.
  • Për aplikacionet e kompiluar me Glibc dhe GCC 12+, është implementuar regjimi i mbrojtjes "_FORTIFY_SOURCE=3", i cili identifikon potencialet e tejkalimeve të tamponëve gjatë ekzekutimit të funksioneve të stringut të përcaktuara në skedarin header string.h. Dallimi nga regjimi "_FORTIFY_SOURCE=2" qëndron në verifikime të tjera shtesë, të cilat potencialisht mund të çojnë në zvogëlim të performancës.
  • Është ndërprerë mbështetje për zgjerimet Intel MPX (Memory Protection Extensions), të përdorura për verifikimin e treguesve në respektimin e kufijve të zonave të memories (kjo teknologji nuk u përhap dhe tashmë është hequr nga GCC dhe LLVM).
  • Mekanizmi prelink dhe variablat e mjedisit të lidhura LD_TRACE_PRELINKING dhe LD_USE_LOAD_BIAS shpallen të vjetra dhe do të hiqen në versionin e ardhshëm.

    Identifikuar dobësi:

    • CVE-2022-23218, CVE-2022-23219 — tepricë buffer në funksionet svcunix_create dhe clnt_create, e shkaktuar nga kopjimi i përmbajtjes së parametrave me emrin e skedarit në stack pa kontrollin e madhësisë së të dhënave të kopjuara. Për aplikacionet e ndërtuara pa mbrojtje të stack-ut dhe që përdorin protokollin 'unix', kjo cenueshmëri mund të çojë në ekzekutimin e kodit nga një sulmues gjatë përpunimit të emrave të skedarëve shumë të gjatë.
    • CVE-2021-3998 — cenueshmëri në funksionin realpath(), e shkaktuar nga kthimi i një vlerë të pasaktë nën kushtet e caktuara, që përmban të dhëna të papastruara nga stack-u. Për programin SUID-root fusermount, kjo cenueshmëri mund të përdoret për të marrë informacion konfidencial nga memoria e procesit, si për shembull informacion mbi treguesit.
    • CVE-2021-3999 — tepricë buffer një-byte në funksionin getcwd(). Problemi shkaktohet nga një gabim që është i pranishëm që nga viti 1995. Për të shkaktuar tepricën është e mjaftueshme të kryhet thirrja chdir() për katalogun '/' në një hapësirë emërimi të veçantë.

    Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster