Glibc 2.31 Stelselbiblioteekvrystelling

Na ses maande van ontwikkeling gepubliseer stelsel biblioteek vrystelling GNU C-biblioteek (glibc) 2.31, wat ten volle aan die vereistes van ISO C11 en POSIX.1-2008 voldoen. Die nuwe weergawe bevat regstellings van 58 ontwikkelaars.

Geïmplementeer in Glibc 2.31 verbeterings jy kan daarop let:

  • Bygevoeg _ISOC2X_SOURCE makro om vermoëns moontlik te maak wat in die konsep toekomstige ISO-standaard gedefinieer is C2X. Hierdie kenmerke word ook geaktiveer wanneer die _GNU_SOURCE makro gebruik word of wanneer gcc ingebou word met die “-std=gnu2x” vlag;
  • Vir funksies gedefinieer in die koplêer "math.h" wat hul resultate na 'n kleiner tipe afrond, word die ooreenstemmende generiese tipe makro's voorgestel in die lêer "tgmath.h", soos vereis deur die spesifikasies TS 18661-1:2014 en TS 18661-3: 2015;
  • Bygevoeg pthread_clockjoin_np() funksie, wat wag vir die draad om te voltooi, met inagneming van die time-out (as die time-out plaasvind voor voltooiing, sal die funksie 'n fout terugstuur). Anders as pthread_timedjoin_np(), in pthread_clockjoin_np() is dit moontlik om die tipe timer vir die berekening van die time-out te definieer - CLOCK_MONOTONIC (neem die tyd in ag wat die stelsel in slaapmodus spandeer) of CLOCK_REALTIME;
  • Die DNS-oplosser ondersteun nou die trust-ad-opsie in /etc/resolv.conf en die RES_TRUSTAD-vlag in _res.options, wanneer dit gestel is, word die DNSSEC-vlag in DNS-versoeke versend AD (geverifieerde data). In hierdie modus word die AD-vlag wat deur die bediener gestel is, beskikbaar vir toepassings wat funksies soos res_search() oproep. By verstek, as die voorgestelde opsies nie gestel is nie, spesifiseer glibc nie die AD-vlag in versoeke nie en vee dit outomaties uit in antwoorde, wat aandui dat DNSSEC-kontroles ontbreek;
  • Die bou van werkende stelseloproepbindings vir Glibc vereis nie meer die installering van die Linux-kernkoplêers nie. Die uitsondering is die 64-bis RISC-V argitektuur;
  • Uitgeskakel kwesbaarheid CVE-2019-19126, wat jou toelaat om die beskerming te omseil
    ASLR in programme met die setuid-vlag en bepaal die adresuitleg in gelaaide biblioteke deur manipulasie van die LD_PREFER_MAP_32BIT_EXEC omgewingsveranderlike.

Veranderinge wat versoenbaarheid verbreek:

  • totalorder(), totalordermag() en soortgelyke funksies vir ander drywende-punttipes aanvaar nou wysers as argumente om waarskuwings oor die omskakeling van waardes in staat uit te skakel NaN, in ooreenstemming met die aanbevelings van TS 18661-1 voorgestel vir die toekomstige C2X-standaard.
    Bestaande uitvoerbare programme wat drywende punt-argumente direk slaag, sal voortgaan om sonder wysiging te loop;

  • Die lank-verouderde stime-funksie is nie meer beskikbaar vir glibc-gekoppelde binaries nie, en die definisie daarvan is van tyd af verwyder.h. Gebruik die clock_settime-funksie om die stelseltyd te stel. In die toekoms beplan ons om die verouderde ftime-funksie te verwyder, sowel as die sys/timeb.h-koplêer (gettimeofday of clock_gettime moet in plaas van ftime gebruik word);
  • Die gettimeofday-funksie gee nie meer inligting oor die stelselwye tydsone deur nie (hierdie kenmerk was relevant in die dae van 4.2-BSD en is vir baie jare afgekeur). Die 'tzp'-argument moet nou 'n nulwyser deurgegee word, en die localtime()-funksie moet gebruik word om tydsone-inligting te verkry gebaseer op die huidige tyd. Deur gettimeofday te roep met 'n nie-nul 'tzp' argument sal die leë tz_minuteswest en tz_dsttime velde in die tydsonestruktuur terugstuur. Die gettimeofday-funksie self word onder POSIX afgekeur (clock_gettime word aanbeveel in plaas van gettimeofday), maar daar is geen planne om dit van glibc te verwyder nie;
  • settimeofday ondersteun nie meer gelyktydige deurstuur van parameters vir die stel van die tyd en die tydkorreksieverskuiwing nie. Wanneer settimeofday geroep word, moet een van die argumente (tyd of offset) nou op nul gestel word, anders sal die funksie-oproep misluk met 'n EINVAL-fout. Soos gettimeofday, is die settimeofday-funksie afgekeur in POSIX en word aanbeveel om vervang te word deur die clock_settime-funksie of die adjtime-familie van funksies;
  • Ondersteuning vir die SPARC ISA v7-argitektuur is gestaak (v8-ondersteuning word vir eers behou, maar slegs vir verwerkers wat CAS-instruksies ondersteun, soos LEON-verwerkers, nie SuperSPARC-verwerkers nie).
  • As paring misluk in "lui", waarin die skakelaar nie vir simbole van 'n funksie soek tot die eerste oproep na daardie funksie nie, dwing die dlopen-funksie nou die proses om te beëindig (het voorheen NULL teruggestuur by mislukking);
  • Vir die MIPS hard-float ABI word die uitvoerbare stapel nou gebruik, tensy die bou uitdruklik die gebruik van die Linux-kern 4.8+ beperk via die "-enable-kernel=4.8.0" parameter (met pitte tot 4.8, is ineenstortings waargeneem vir sommige MIPS-konfigurasies);
  • Die bindings rondom stelseloproepe wat met tydmanipulasie verband hou, is geskuif om die time64-stelseloproep te gebruik, indien teenwoordig (op 32-bis stelsels, probeer glibc eers nuwe stelseloproepe wat die 64-bis tydtipe manipuleer, en as daar geen is nie, val terug na die oues 32-bis oproepe).

Bron: opennet.ru

Voeg 'n opmerking