Glibc 2.31 System Library Release

Nei seis moannen fan ûntwikkeling publisearre systeem biblioteek release GNU C Bibleteek (glibc) 2.31, dy't folslein foldocht oan de easken fan ISO C11 en POSIX.1-2008 noarmen. De nije release omfettet fixes fan 58 ûntwikkelders.

Fan dy ymplementearre yn Glibc 2.31 ferbetterings do kinst notearje:

  • _ISOC2X_SOURCE makro tafoege om mooglikheden yn te skeakeljen definieare yn it konsept fan takomstige ISO-standert C2X. Dizze funksjes binne ek ynskeakele by it brûken fan de _GNU_SOURCE makro of by it bouwen yn gcc mei de "-std = gnu2x" flagge;
  • Foar funksjes definieare yn 'e kopteksttriem "math.h" dy't har resultaten rûnen op in lytser type, wurde de oerienkommende generyske type makro's foarsteld yn 'e triem "tgmath.h", lykas fereaske troch de spesifikaasjes TS 18661-1:2014 en TS 18661-3: 2015;
  • Added pthread_clockjoin_np () -funksje, dy't wachtet op 'e tried om te foltôgjen, rekken hâldend mei de time-out (as de timeout komt foar foltôging, de funksje sil werom in flater). Oars as pthread_timedjoin_np(), yn pthread_clockjoin_np () is it mooglik om te definiearjen it type timer foar it berekkenjen fan de timeout - CLOCK_MONOTONIC (nacht de tiid bestege troch it systeem yn sliep modus) of CLOCK_REALTIME;
  • De DNS-resolver stipet no de trust-ad-opsje yn /etc/resolv.conf en de RES_TRUSTAD-flagge yn _res.options, as ynsteld, wurdt de DNSSEC-flagge oerdroegen yn DNS-oanfragen AD (ferifiearre gegevens). Yn dizze modus wurdt de AD flagge ynsteld troch de tsjinner beskikber foar applikaasjes dy't ropt funksjes lykas res_search (). Standert, as de foarstelde opsjes net ynsteld binne, spesifisearret glibc de AD-flagge net yn oanfragen en wisket it automatysk yn antwurden, wat oanjout dat DNSSEC-kontrôles ûntbrekke;
  • It bouwen fan wurksysteemopropbindingen foar Glibc fereasket net mear it ynstallearjen fan de Linux kernel-header-bestannen. De útsûndering is de 64-bit RISC-V-arsjitektuer;
  • Eliminearre kwetsberens CVE-2019-19126, wêrtroch jo de beskerming kinne omgean
    ASLR yn programma's mei de setuid flagge en bepale it adres yndieling yn laden bibleteken troch manipulaasje fan de LD_PREFER_MAP_32BIT_EXEC omjouwingsfariabele.

Feroarings dy't kompatibiliteit brekke:

  • totalorder (), totalordermag (), en ferlykbere funksjes foar oare driuwende-punttypen akseptearje no pointers as arguminten om warskôgingen te eliminearjen oer it konvertearjen fan wearden yn steat NaN, yn oerienstimming mei de oanbefellings fan TS 18661-1 foarsteld foar de takomstige C2X standert.
    Besteande útfierbere triemmen dy't driuwende punt-arguminten direkt trochjaan, sille trochgean sûnder wiziging te rinnen;

  • De lang ferâldere stime funksje is net mear beskikber foar glibc-keppele binaries, en syn definysje is fuorthelle út time.h. Om de systeemtiid yn te stellen, brûk de funksje clock_settime. Yn 'e takomst planje wy de ferâldere ftime-funksje te ferwiderjen, lykas de sys/timeb.h-header-bestân (gettimeofday of clock_gettime moatte brûkt wurde ynstee fan ftime);
  • De funksje gettimeofday jout gjin ynformaasje mear oer de systeembrede tiidsône (dizze funksje wie relevant yn 'e dagen fan 4.2-BSD en is in protte jierren ôfkard). It argumint 'tzp' moat no in nul-oanwizer wurde trochjûn, en de funksje localtime() moat brûkt wurde om tiidsône-ynformaasje te krijen basearre op 'e hjoeddeistige tiid. It oproppen fan gettimeofday mei in 'tzp' argumint net nul sil de lege tz_minuteswest en tz_dsttime fjilden yn 'e tiidsônestruktuer werombringe. De gettimeofday-funksje sels wurdt ôfret ûnder POSIX (clock_gettime wurdt oanrikkemandearre ynstee fan gettimeofday), mar d'r binne gjin plannen om it fan glibc te ferwiderjen;
  • settimeofday stipet net mear simultane trochjaan fan parameters foar it ynstellen fan de tiid en de tiidkorrigearjende offset. By it oanroppen fan settimeofday moat ien fan 'e arguminten (tiid of offset) no op nul steld wurde, oars sil de funksje-oanrop mislearje mei in EINVAL-flater. Lykas gettimeofday, wurdt de settimeofday-funksje ôfret yn POSIX en wurdt oanrikkemandearre om te ferfangen troch de clock_settime-funksje of de adjtime-famylje fan funksjes;
  • Stipe foar de SPARC ISA v7-arsjitektuer is beëinige (v8-stipe wurdt foar no behâlden, mar allinich foar processors dy't CAS-ynstruksjes stypje, lykas LEON-processors, net SuperSPARC-processors).
  • As paring mislearret yn "loai", wêryn't de linker net nei symboalen fan in funksje siket oant de earste oprop nei dy funksje, twingt de dlopen-funksje no it proses om te beëinigjen (foarhinne NULL weromjûn by mislearring);
  • Foar de MIPS hard-float ABI wurdt de útfierbere stack no brûkt, útsein as de build it gebrûk fan 'e Linux 4.8+ kernel eksplisyt beheint fia de parameter "-enable-kernel=4.8.0" (mei kernels oant 4.8, crashes binne waarnommen foar guon MIPS-konfiguraasjes);
  • De bindingen om systeemoproppen yn ferbân mei tiidmanipulaasje binne ferpleatst om de time64-systeemoprop te brûken, as oanwêzich (op 32-bit systemen, glibc besiket earst nije systeemoproppen dy't it 64-bit tiidtype manipulearje, en as d'r gjin binne, falt werom nei de âlde 32-bit-oproppen).

Boarne: opennet.ru

Add a comment