Nach sechs Monaten Entwicklungszeit Release der Systembibliothek (glibc) , die vollständig den Anforderungen der Standards ISO C11 und POSIX.1-2008 entspricht. In das neue Release wurden Korrekturen von 48 Entwicklern aufgenommen.
In Glibc 2.30 wurden umgesetzt gehören:
- Im dynamischen Linker wird die Unterstützung der Option „—preload“ zur Vorabladung von gemeinsam genutzten Objekten (analog zur Umgebungsvariable LD_PRELOAD) bereitgestellt;
- Die Funktion twalk_r wurde hinzugefügt, die der bereits bestehenden Funktion twalk ähnlich ist, jedoch die Übermittlung eines zusätzlichen Arguments an die angegebene Callback-Funktion ermöglicht;
- Für Linux wurden neue Funktionen getdents64, gettid und tgkill hinzugefügt;
- Die Funktionen zur Speicherverwaltung malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign und posix_memalign geben nun einen Fehlercode zurück, wenn die Gesamtgröße des Objekts den Wert PTRDIFF_MAX überschreitet. Diese Änderung verhindert ein undefiniertes Verhalten, wenn das Ergebnis von Zeigeroperationen zu einem Überlauf des Typs ptrdiff_t führt;
- Die in POSIX vorgeschlagenen Funktionen pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock und sem_clockwait wurden hinzugefügt, die den „timed“-Äquivalenten ähnlich sind, jedoch zusätzlich den Parameter clockid_t zur Auswahl des Timers erhalten; - Die Daten zu Kodierungen, Informationen über Zeichentypen und Transliterationstabellen wurden aktualisiert, um die Spezifikation Unicode 12.1.0 zu unterstützen;
- In der Bibliothek librt werden für neue Anwendungen keine Funktionen clock_gettime, clock_getres, clock_settime, clock_getcpuclockid und clock_nanosleep mehr bereitgestellt, stattdessen werden automatisch die Definitionen in libc verwendet;
- In /etc/resolv.conf wird die Unterstützung für die Option „inet6“ eingestellt. Veraltete Flags RES_USE_INET6, RES_INSECURE1 und RES_INSECURE2 wurden aus resolv.h entfernt;
- Mit der Angabe der Option „—enable-bind-now“ werden installierte Programme jetzt mit dem Flag BIND_NOW verknüpft;
- Die für Linux spezifische Header-Datei sys/sysctl.h und die Funktion sysctl wurden als veraltet erklärt, stattdessen sollten Anwendungen das Pseudodateisystem /proc verwenden;
- Für den Build von Glibc wird nun GCC 6.2 oder eine neuere Version benötigt (für den Build von Anwendungen können beliebige Compiler verwendet werden);
- Sicherheitsanfälligkeit beseitigt in der Implementierung der Funktion memcmp für Subarchitektur x32 (nicht zu verwechseln mit x86 IA-32), weshalb die Funktion möglicherweise inkorrekt den Wert 0 für nicht übereinstimmende Strings zurückgab;
- Sicherheitsanfälligkeit beseitigt , was dazu führen kann, dass Daten aus dem Speicherbereich außerhalb der Buffergrenzen gelesen werden, wenn bestimmte reguläre Ausdrücke verarbeitet werden.
Quelle: opennet.ru
