Wydanie biblioteki systemowej Glibc 2.30

Po sześciu miesiącach rozwoju opublikowany wydanie biblioteki systemowej Biblioteka GNU C (glibc) 2.30, który jest w pełni zgodny z wymaganiami norm ISO C11 i POSIX.1-2008. Nowa wersja zawiera poprawki od 48 programistów.

Zaimplementowano w Glibc 2.30 ulepszenia możesz zauważyć:

  • Dynamiczny linker obsługuje opcję „--preload” do wstępnego ładowania obiektów współdzielonych (podobnie do zmiennej środowiskowej LD_PRELOAD);
  • Dodana funkcja twalk_r, podobna do już istniejącej funkcji twalk, ale pozwalająca na przekazanie dodatkowego argumentu do danej funkcji wywołania zwrotnego;
  • Dla Linuksa dodano nowe funkcje getdents64, gettid i tgkill;
  • Funkcje zarządzania pamięcią malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign i posix_memalign kończą się kodem błędu, gdy całkowity rozmiar obiektu przekracza wartość PTRDIFF_MAX. Ta zmiana pozwala uniknąć niezdefiniowanego zachowania, gdy wynikiem manipulacji wskaźnikiem jest przepełnienie typu ptrdiff_t;
  • Dodano proponowane funkcje POSIX pthread_cond_clockwait, pthread_mutex_clocklock,
    pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock i sem_clockwait, podobne do odpowiedników „timed”, ale dodatkowo pobierające parametr clockid_t do wyboru timera;

  • Dane kodowania, informacje o typach znaków i tabele transliteracji zostały zaktualizowane, aby obsługiwały specyfikację Unicode 12.1.0;
  • Funkcje clock_gettime, clock_getres, clock_settime, clock_getcpuclockid i clock_nanosleep nie są już dostępne w bibliotece librt dla nowych aplikacji, a zamiast nich używane są automatycznie definicje libc;
  • W pliku /etc/resolv.conf opcja „inet6” została wycofana. Usunięto przestarzałe flagi RES_USE_INET6, RES_INSECURE1 i RES_INSECURE2 z resolv.h;
  • Po określeniu opcji „--enable-bind-now” zainstalowane programy są teraz powiązane przy użyciu flagi BIND_NOW;
  • Specyficzny dla Linuksa plik nagłówkowy sys/sysctl.h i funkcja sysctl są przestarzałe i zamiast tego aplikacje powinny używać pseudo-FS /proc;
  • Glibc wymaga teraz do budowania GCC 6.2 lub nowszego (do budowania aplikacji można używać dowolnego kompilatora);
  • Naprawiono lukę CVE-2019-7309 w implementacji funkcji memcmp dla przestarzały podarchitektura x32 (nie mylić z x86 IA-32), w wyniku czego funkcja mogła błędnie zwrócić wartość 0 dla niepasujących ciągów znaków;
  • Naprawiono lukę CVE-2019-9169, co może powodować odczytywanie danych z bufora spoza zakresu podczas przetwarzania niektórych wyrażeń regularnych.

Źródło: opennet.ru

Dodaj komentarz