Veröffentlichung der Systembibliothek Glibc 2.31

Nach sechs Monaten Entwicklung veröffentlicht Release der Systembibliothek GNU C-Bibliothek (glibc) 2.31, die vollständig den Anforderungen der ISO C11- und POSIX.1-2008-Normen entspricht. Die neue Version enthält Korrekturen von 58 Entwicklern.

In der Glibc 2.31 umgesetzt Verbesserungen gehören:

  • Der Makro _ISOC2X_SOURCE wurde hinzugefügt, um die Funktionen zu aktivieren, die im Entwurf des künftigen ISO-Standards definiert sind C2X. Diese Funktionen werden ebenfalls aktiviert, wenn Sie den Makro _GNU_SOURCE verwenden oder bei der Kompilierung in gcc mit der Option „-std=gnu2x“;
  • Für bestimmte Funktionen, die im Header «math.h» definiert sind und ihre Ergebnisse auf einen kleineren Typ runden, wurden in der Datei «tgmath.h» entsprechende generische Makros vorgeschlagen, wie es die Spezifikationen TS 18661-1:2014 und TS 18661-3:2015 erfordern;
  • Die Funktion pthread_clockjoin_np() wurde hinzugefügt, die auf das Ende eines Threads mit Timeout wartet (wenn das Timeout vor dem Ende eintritt, gibt die Funktion einen Fehler zurück). Im Gegensatz zu pthread_timedjoin_np()lässt pthread_clockjoin_np() die Bestimmung des Timer-Typs zur Berechnung des Timeouts zu — CLOCK_MONOTONIC (berücksichtigt die von dem System im Sleep-Modus verbrachte Zeit) oder CLOCK_REALTIME;
  • Im DNS-Resolver wurde die Unterstützung für die Option trust-ad in /etc/resolv.conf und das Flag RES_TRUSTAD in _res.options hinzugefügt, bei deren Aktivierung das DNSSEC-Flag in den DNS-Anfragen übertragen wird. AD (authentifizierte Daten). In diesem Modus wird das vom Server gesetzte AD-Flag Anwendungen zugänglich, die Funktionen wie res_search() aufrufen. Standardmäßig gibt glibc, wenn die vorgeschlagenen Optionen nicht gesetzt sind, das AD-Flag nicht in Anfragen an und löscht es automatisch in den Antworten, was auf das Fehlen einer DNSSEC-Prüfung hinweist;
  • Für den Aufbau funktionierender Bindings von Systemaufrufen für Glibc ist jetzt keine Installation von Linux-Kopfzeilen mehr erforderlich. Eine Ausnahme bildet die 64-Bit-Architektur RISC-V;
  • Beheben in Cisco-Switches die gesamte Unternehmensnetzwerkwelt fast weltweit in Frage. CVE-2019-19126, das eine Umgehung des Schutzes ermöglicht
    ASLR in Programmen mit dem setuid-Flag und die Bestimmung der Adressverteilung in geladenen Bibliotheken durch Manipulation der Umgebungsvariablen LD_PREFER_MAP_32BIT_EXEC.

Änderungen, die die Abwärtskompatibilität beeinträchtigen:

  • Bei totalorder(), totalordermag() und ähnlichen Funktionen für andere Datentypen mit Fließkommazahlen werden jetzt Zeiger als Argumente verwendet, um Warnungen über die Umwandlung von Werten in den Zustand NaN, gemäß den Empfehlungen von TS 18661-1, die für den zukünftigen Standard C2X vorgeschlagen wurden.
    Vorhandene ausführbare Dateien, in denen die Argumente mit Fließkommazahlen direkt übergeben werden, werden weiterhin ohne Änderungen funktionieren;
  • Die seit langem als veraltet erklärte Funktion stime ist jetzt für mit glibc gebundene Binärdateien nicht mehr verfügbar, und ihre Definition wurde aus time.h entfernt. Zur Einstellung der Systemzeit sollte die Funktion clock_settime verwendet werden. In Zukunft ist geplant, auch die als veraltet markierte Funktion ftime sowie die Header-Datei sys/timeb.h zu entfernen (statt ftime sollte gettimeofday oder clock_gettime verwendet werden);
  • Die Funktion gettimeofday überträgt nun keine Informationen zur allgemeinen Zeitzone mehr (diese Möglichkeit war zu Zeiten von 4.2-BSD verfügbar und wurde seit vielen Jahren als veraltet erklärt). Im Argument 'tzp' sollte nun ein Nullzeiger übergeben werden, und zur Abfrage von Zeitzoneninformationen in Bezug auf die aktuelle Zeit sollte die Funktion localtime() verwendet werden. Bei einem Aufruf von gettimeofday mit einem nicht-null Argument 'tzp' werden leere Felder tz_minuteswest und tz_dsttime in der Struktur timezone zurückgegeben. Die Funktion gettimeofday gilt in POSIX als veraltet (statt gettimeofday wird empfohlen, clock_gettime zu verwenden), aber es ist nicht geplant, sie aus glibc zu entfernen;
  • Bei settimeofday wurde die Unterstützung für die gleichzeitige Übergabe von Parametern zur Einstellung der Uhrzeit und der Zeitkorrektur eingestellt. Bei einem Aufruf von settimeofday muss jetzt einer der Argumente (Zeit oder Offset) auf null gesetzt werden, andernfalls schlägt der Funktionsaufruf mit dem Fehler EINVAL fehl. Wie bei gettimeofday wird die Funktion settimeofday in POSIX als veraltet betrachtet, und es wird empfohlen, die Funktion clock_settime oder die Familie von Funktionen adjtime zu verwenden.
  • Die Unterstützung für die SPARC ISA v7 Architektur wurde eingestellt (v8 wird weiterhin unterstützt, jedoch nur für Prozessoren, die CAS-Befehle unterstützen, wie die LEON-Prozessoren, aber nicht die SuperSPARC-Prozessoren).
  • Im Falle eines Bindungsfehlers im "lazy" Modus, bei dem der Linker die Symbolsuchen der Funktion bis zum ersten Aufruf dieser Funktion nicht ausführt, beendet die Funktion dlopen jetzt den Prozess zwangsweise (zuvor wurde NULL zurückgegeben, wenn ein Fehler auftrat);
  • Für ABI MIPS hard-float wird jetzt ein ausführbarer Stack verwendet, wenn beim Bauen keine Einschränkung auf den Linux-Kernel 4.8+ über den Parameter "—enable-kernel=4.8.0" festgelegt ist (bei Kernen bis 4.8 treten bei einigen MIPS-Konfigurationen Fehler auf);
  • Die Anpassungen an den Systemaufrufen für die Zeitmanipulation wurden auf die Verwendung des Systemaufrufs time64 umgestellt, sofern dieser verfügbar ist (auf 32-Bit-Systemen versucht glibc zunächst, neue Systemaufrufe zu verwenden, die mit dem 64-Bit-Typ für Zeit arbeiten; falls diese nicht vorhanden sind, wird auf die älteren 32-Bit-Aufrufe zurückgegriffen).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster