Wydanie biblioteki systemowej Glibc 2.40

Po sześciu miesiącach prac rozwojowych opublikowano wydanie systemowej biblioteki GNU C Library (glibc) 2.40, która w pełni spełnia wymagania standardów ISO C11 i POSIX.1-2017. W nowym wydaniu zawarto poprawki od 68 programistów.

Wśród wprowadzonych w Glibc 2.40 ulepszeń można wyróżnić:

  • Do pliku nagłówkowego math.h dodano nowe funkcje wykładnicze i logarytmiczne, określone w standardzie C23: exp2m1, exp10m1, log2p1, log10p1 oraz logp1. Funkcje te są dostępne w wariantach dla typów float, double, long double, _FloatN i _FloatNx.
  • Dodano makro _ISOC23_SOURCE, które określa użycie możliwości oferowanych w standardzie C23 (w chwili obecnej w Glibc zrealizowano tylko część możliwości C23). Możliwości C23 można również włączyć podczas kompilacji, wskazując opcje w GCC -std=c23, -std=gnu23, -std=c2x lub -std=gnu2x.
  • Dodano ustawienie „glibc.rtld.enable_secure”, które pozwala podczas testów uruchomić program tak, jakby miał flagę zmiany identyfikatora użytkownika (setuid).
  • Na platformie Linux plik nagłówkowy epoll.h został zaktualizowany w celu wsparcia nowych ioctl i struktur epoll, które pojawiły się w jądrze Linux 6.9.
  • Funkcjonalność wykrywania potencjalnych przepełnień bufora i związanych z bezpieczeństwem błędów podczas wykonywania funkcji pracy z ciągami i zarządzania pamięcią („_FORTIFY_SOURCE”) została dostosowana do budowy Glibc za pomocą kompilatora Clang.
  • W bibliotece z funkcjami matematyki wektorowej (libmvec) zaproponowano implementacje funkcji acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh i tanh dla architektury Aarch64.
  • Na systemach x86 w celu przyspieszenia zapisu dużych zbiorów danych w funkcji memset udostępniono możliwość wyłączenia użycia buforów tymczasowych. Optymalizacja ta jest aktywowana przez ustawienie „x86_memset_non_temporal_threshold”.
  • Makra w pliku nagłówkowym stdbit.h, pracujące z różnymi typami (type-generic), przy użyciu GCC 14 zostały przetłumaczone na użycie wbudowanych funkcji __builtin_stdc_bit_ceil w celu wsparcia operandów z typami __int128 i _BitInt(N).
  • Pola z epokowym licznikiem czasu w struktach lastlog, utmp i utmpx zostały przetłumaczone z wykorzystania 32-bitowego typu ze znakiem na typ bez znaku, co pozwala na wydłużenie maksymalnego adresowanego czasu przez licznik z 2038 roku do 2106 roku.
  • Usunięto luki bezpieczeństwa:
    • CVE-2024-2961 — przepełnienie bufora podczas konwersji specjalnie sformatowanych ciągów w kodowaniu ISO-2022-CN-EXT przez funkcję iconv(). W praktyce ta luka może być wykorzystana do zdalnego ataku na aplikacje PHP, prowadzącego do wykonania kodu.
    • CVE-2024-33599 — przepełnienie bufora w kodzie zarządzającym pamięcią podręczną netgroup w procesie nscd (Demon Pamięci Podręcznej Usług Nazw). Ta luka może być eksploatowana poprzez wysyłanie specjalnie sformatowanego zapytania przez klienta.
    • CVE-2024-33600 — dereferencja wskaźnika zerowego w procesie nscd, co może prowadzić do awarii podczas przetwarzania określonych zapytań.
    • CVE-2024-33601 — błąd w zarządzaniu pamięcią podręczną netgroup może prowadzić do awarii procesu nscd z powodu błędów przy alokacji pamięci.
    • CVE-2024-33602 — uszkodzenie pamięci podczas pracy z pamięcią podręczną netgroup w procesie nscd.

    Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster