Po sześciu miesiącach rozwoju wydanie biblioteki systemowej (glibc) , która w pełni spełnia wymagania standardów ISO C11 i POSIX.1-2008. Nowa wersja zawiera poprawki od 48 deweloperów.
W wersji Glibc 2.30 można wymienić:
- W dynamicznym linkerze dodano obsługę opcji „—preload” do wstępnego ładowania obiektów współdzielonych (odpowiednik zmiennej środowiskowej LD_PRELOAD);
- Dodano funkcję twalk_r, podobną do istniejącej funkcji twalk, ale pozwalającą na przekazanie dodatkowego argumentu do określonej funkcji callback;
- Dla systemu Linux dodano nowe funkcje getdents64, gettid i tgkill;
- Zapewniono zakończenie z kodem błędu funkcji zarządzania pamięcią malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign i posix_memalign, w sytuacji, gdy całkowity rozmiar obiektu przekracza wartość PTRDIFF_MAX. Zmiana ta pozwala uniknąć nieokreślonego zachowania, gdy manipulacja wskaźnikami prowadzi do przepełnienia typu ptrdiff_t;
- Dodano zalecane w POSIX funkcje pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock i sem_clockwait, podobne do odpowiedników „timed”, ale dodatkowo przyjmujące parametr clockid_t w celu wyboru timera; - Dane kodowania, informacje o typach znaków oraz tabele transliteracji zostały zaktualizowane w celu wsparcia specyfikacji Unicode 12.1.0;
- W bibliotece librt dla nowych aplikacji nie są już dostarczane funkcje clock_gettime, clock_getres, clock_settime, clock_getcpuclockid i clock_nanosleep, zamiast nich automatycznie używane są definicje w libc;
- W pliku /etc/resolv.conf zaprzestano wsparcia dla opcji „inet6”. Z resolv.h usunięto przestarzałe flagi RES_USE_INET6, RES_INSECURE1 i RES_INSECURE2;
- Przy włączonej opcji „—enable-bind-now” instalowane programy są teraz wiązane z użyciem flagi BIND_NOW;
- Zostały uznane za przestarzałe specyficzne dla Linuksa nagłówki sys/sysctl.h oraz funkcja sysctl, zamiast nich aplikacje powinny korzystać z pseudo-FS /proc;
- Do zbudowania Glibc teraz wymagana jest wersja GCC 6.2 lub nowsza (do budowania aplikacji mogą być używane dowolne kompilatory);
- Usunięto podatność w implementacji funkcji memcmp dla podarchitektury x32 (nie mylić z x86 IA-32), co mogło powodować, że funkcja zwracała błędnie wartość 0 dla niezgodnych łańcuchów;
- Usunięto podatność , co może prowadzić do odczytu danych z obszaru poza granicami bufora podczas przetwarzania określonych wyrażeń regularnych.
Źródło: opennet.ru
