Uitgave van de systeembibliotheek Glibc 2.31

Na zes maanden ontwikkeling gepubliceerd release van de systeembibliotheek GNU C Library (glibc) 2.31, die volledig voldoet aan de vereisten van de ISO C11- en POSIX.1-2008-standaarden. De nieuwe versie bevat correcties van 58 ontwikkelaars.

Uitgevoerd in Glibc 2.31 verbeteringen kunnen worden opgemerkt:

  • De macro _ISOC2X_SOURCE is toegevoegd om de mogelijkheden in te schakelen die zijn gedefinieerd in de conceptversie van de toekomstige ISO-standaard. C2X. Deze mogelijkheden worden ook ingeschakeld bij gebruik van de macro _GNU_SOURCE of bij het bouwen met gcc met de vlag '-std=gnu2x';
  • Voor bepaalde functies in de hoofdheader 'math.h', die hun resultaten afronden naar een type met een kleinere grootte, zijn in de 'tgmath.h'-header corresponderende generalisatie-macro's voorgesteld, zoals voorgeschreven in de specificaties TS 18661-1:2014 en TS 18661-3:2015;
  • De functie pthread_clockjoin_np() is toegevoegd, die wacht op de voltooiing van een thread met inachtneming van een timeout (als de timeout vóór de voltooiing optreedt, retourneert de functie een fout). In tegenstelling tot pthread_timedjoin_np(), staat pthread_clockjoin_np() de definitie van het type timer toe voor de timeout-berekening — CLOCK_MONOTONIC (dat de tijd in de slaapmodus telt) of CLOCK_REALTIME;
  • In de DNS-resolver is ondersteuning toegevoegd voor de trust-ad-optie in /etc/resolv.conf en de vlag RES_TRUSTAD in _res.options, waardoor de DNSSEC-vlag in DNS-verzoeken wordt doorgegeven. AD (geauthenticeerde gegevens). In deze modus wordt de door de server ingestelde AD-vlag beschikbaar voor applicaties die functies aanroepen zoals res_search(). Standaard, als de voorgestelde opties niet zijn ingesteld, geeft glibc de AD-vlag niet op in verzoeken en verwijdert deze automatisch uit antwoorden, wat aangeeft dat er geen DNSSEC-controle is;
  • Voor het opbouwen van werkende omhulsels van systeemaanroepen voor Glibc is het nu niet meer nodig om de headerbestanden van de Linux-kernel te installeren. Uitzondering is de 64-bits architectuur RISC-V;
  • Verholpen kwetsbaarheid CVE-2019-19126, die de bescherming omzeilt
    ASLR in programma's met de setuid-vlag en de indeling van adressen in geladen bibliotheken bepaalt via manipulatie van de omgevingsvariabele LD_PREFER_MAP_32BIT_EXEC.

Wijzigingen die compatibiliteit schenden:

  • In totalorder(), totalordermag() en soortgelijke functies voor andere types met een kommagetalde waarde, worden nu pointers als argument geaccepteerd om waarschuwingen over typeconversie te vermijden NaN, in overeenstemming met de aanbevelingen van TS 18661-1, voorgesteld voor de toekomstige C2X-standaard.
    Bestaande uitvoerbare bestanden, waarbij drijvende-komma-argumenten rechtstreeks worden doorgegeven, blijven zonder wijzigingen werken;
  • De lang aangekondigde verouderde functie stime is nu niet meer beschikbaar voor binaire bestanden die met glibc zijn gekoppeld, en de definitie ervan is verwijderd uit time.h. Voor het instellen van de systeemtijd moet de functie clock_settime worden gebruikt. In de toekomst is het de bedoeling om ook de als verouderd gemarkeerde functie ftime en de headerbestand sys/timeb.h te verwijderen (in plaats van ftime gebruik je gettimeofday of clock_gettime);
  • De functie gettimeofday verzendt nu geen informatie meer over de algemene systeem tijdzone (deze mogelijkheid was relevant in de tijd van 4.2-BSD en is al vele jaren als verouderd gemarkeerd). In het argument ā€˜tzp’ moet nu een null-pointer worden doorgegeven, en voor het verkrijgen van informatie over de tijdzone in relatie tot de huidige tijd gebruik je de functie localtime(). Bij het aanroepen van gettimeofday met een niet-null argument ā€˜tzp’ worden lege velden tz_minuteswest en tz_dsttime in de structuur timezone teruggegeven. De functie gettimeofday wordt als verouderd beschouwd in POSIX (in plaats van gettimeofday wordt aanbevolen om clock_gettime te gebruiken), maar het is niet gepland om deze uit glibc te verwijderen;
  • In settimeofday is de ondersteuning voor het gelijktijdig doorgeven van parameters voor het instellen van de tijd en het corrigeren van de tijdzone stopgezet. Bij het aanroepen van settimeofday moet een van de argumenten (tijd of compensatie) nu verplicht op null worden gezet, anders zal de functieaanroep eindigen met een fout EINVAL. Net als gettimeofday wordt de functie settimeofday als verouderd beschouwd in POSIX en in plaats daarvan wordt aangeraden om de functie clock_settime of de functies uit de familie adjtime te gebruiken;
  • Ondersteuning voor de SPARC ISA v7-architectuur is stopgezet (ondersteuning voor v8 blijft voorlopig bestaan, maar alleen voor processoren die de CAS-instructies ondersteunen, zoals LEON-processoren, maar niet de processoren SuperSPARC).
  • In het geval van een verbindingsfout in de modus ā€œlazyā€œ, waarbij de linker geen zoekopdrachten uitvoert naar functie symbolen tot de eerste aanroep van die functie, beĆ«indigt de functie dlopen nu geforceerd het proces (voorheen werd NULL geretourneerd bij een fout);
  • Voor ABI MIPS hard-float wordt nu de uitvoerstapel gebruikt, tenzij tijdens het bouwen expliciet een beperking is opgelegd voor het gebruik van de Linux-kernel 4.8+ via de parameter ā€œā€”enable-kernel=4.8.0ā€ (met kernels tot 4.8 zijn er problemen voor sommige MIPS-configuraties);
  • Bindings boven systeemaanroepen die verband houden met tijdmanipulatie zijn overgeschakeld naar het gebruik van de systeemaanroep time64, indien aanwezig (op 32-bits systemen probeert glibc in eerste instantie de nieuwe systeemaanroepen te gebruiken die met een 64-bits tijdtype werken, en als die er niet zijn, wordt teruggevallen op de oude 32-bits aanroepen).

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster