Nach sechs Monaten Entwicklung Release der Systembibliothek (glibc) , die vollständig den Anforderungen der Standards ISO C11 und POSIX.1-2008 entspricht. Die neue Version enthält Fehlerbehebungen von 48 Entwicklern.
Zu den Implementierungen in Glibc 2.30 gehören:
- Im dynamischen Linker wurde die Unterstützung der Option „—preload“ für die Vorladung von gemeinsam genutzten Objekten (analog zur Umgebungsvariablen LD_PRELOAD) hinzugefügt;
- Die Funktion twalk_r wurde hinzugefügt, die ähnlich wie die bereits vorhandene Funktion twalk ist, jedoch die Übergabe eines zusätzlichen Arguments an die definierte Callback-Funktion ermöglicht;
- Für Linux wurden neue Funktionen wie getdents64, gettid und tgkill eingeführt;
- Es wurde sichergestellt, dass die Funktionen zur Speicherverwaltung malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign und posix_memalign mit einem Fehlercode beendet werden, wenn die Gesamtgröße des Objekts den Wert PTRDIFF_MAX überschreitet. Diese Änderung verhindert undefiniertes Verhalten, wenn die Pointer-Manipulation 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, die ähnlich wie ihre „timed“-Äquivalente sind, aber zusätzlich einen Parameter clockid_t zur Auswahl des Timers akzeptieren, wurden hinzugefügt; - Die Codierungsdaten, Informationen über Zeichentypen und Transliterationstabellen wurden aktualisiert, um die Spezifikation Unicode 12.1.0 zu unterstützen;
- In der Bibliothek librt stehen für neue Anwendungen die Funktionen clock_gettime, clock_getres, clock_settime, clock_getcpuclockid und clock_nanosleep nicht mehr zur Verfügung; stattdessen werden automatisch Definitionen in libc verwendet;
- Die Unterstützung der Option „inet6“ wurde in /etc/resolv.conf eingestellt. Veraltete Flags RES_USE_INET6, RES_INSECURE1 und RES_INSECURE2 wurden aus resolv.h entfernt;
- Wenn die Option „—enable-bind-now“ angegeben wird, werden die installierten Programme jetzt mit dem Flag BIND_NOW verbunden;
- Die spezifischen Linux-Headers sys/sysctl.h und die Funktion sysctl wurden als veraltet erklärt; stattdessen sollten Anwendungen das Pseudo-Dateisystem /proc verwenden;
- Für den Bau von Glibc wird jetzt GCC 6.2 oder eine neuere Version benötigt (für den Bau von Anwendungen können beliebige Compiler verwendet werden);
- Eine Schwachstelle wurde behoben in der Implementierung der Funktion memcmp für Subarchitektur x32 (nicht zu verwechseln mit x86 IA-32), wodurch die Funktion möglicherweise fälschlicherweise den Wert 0 für nicht übereinstimmende Strings zurückgeben konnte;
- Eine Schwachstelle wurde behoben , die dazu führen kann, dass Daten außerhalb der Speichergrenzen gelesen werden, wenn bestimmte reguläre Ausdrücke verarbeitet werden.
Quelle: opennet.ru
