
Glibc to standardowa biblioteka uruchomieniowa dla języka GNU C.
Po sześciu miesiącach rozwoju se ogłosił wydanie nowej wersji Glibc 2.38, wersja, w której wprowadzono różne zmiany, zadeklarowano i usunięto przestarzałe funkcje, zintegrowano ulepszenia bezpieczeństwa i nie tylko.
Dla tych, którzy nie są zaznajomieni z Glibc, powinni wiedzieć, co to jest biblioteka GNU C, powszechnie znana jako glibc to standardowa biblioteka uruchomieniowa GNU C. W systemach, w których jest używany, ta biblioteka C, która udostępnia i definiuje wywołania systemowe i inne podstawowe funkcje, jest używany przez prawie wszystkie programy.
Główne nowe funkcje Glibc 2.38
W prezentowanej nowej wersji Glibc 2.38 jedną z głównych nowości, która się wyróżnia, jest to, że dodano nowe funkcje strlcpy i strlcat, który są alternatywami dla funkcji strncpy i strncat, które zawierają ochronę przed przepełnieniem bufora i koniecznie ustawiają końcowy ciąg na bajt zerowy. Implementacja funkcji została wykonana od OpenBSD i oczekuje się, że w przyszłości funkcje te zostaną włączone do standardu POSIX.
Kolejna nowość, która wyróżnia się w tej nowej wersji, gdy funkcje C2X są włączone, a argumentem podstawowym jest 0 lub 2, w parametrach wejściowych różnych funkcji, pozwalają na użycie przedrostków 0b i 0B do definiowania wartości binarnych, określając tryb formatowania za pomocą pliku „%i. Niezależnie od włączenia standardu C2X, funkcje te obsługują również oddzielną opcję formatu „%b” dla liczb binarnych.
Podkreślono również, że teraz możesz użyć nowa opcja konfiguracji"--enable-fortify-source", skompilować Glibc z "_FORTIFY_SOURCE", aby wykryć możliwe przepełnienie bufora podczas wykonywania funkcji łańcuchowych zdefiniowanych w pliku nagłówkowym string.h.
Oprócz tego terazFunkcje z rodziny Printf obsługują modyfikatory długości formatu «wN» dla argumentów typu intN_t, int_leastN_t, uintN_t i uint_leastN_t i format «wfN» modyfikatory długości dla argumentów typu int_fastN_t lub uint_fastN_t, jak określono w projekcie ISO C2X.
Naprawiono lukę CVE-2023-25139, co spowodowało przepełnienie bufora w funkcjach rodziny printf podczas zapisywania w buforze ciągów reprezentacji liczb z separatorami tysięcy, jeśli rozmiar bufora jest obliczany bez ograniczników (na przykład wyjście 1,234,567 2 XNUMX spowoduje przepełnienie XNUMX-bajtowe).
Z drugiej strony jest o tym mowa dla architektury AArch64 dodano obsługę biblioteka wektorów matematycznych «libmvec", co wymaga wersji GCC >= 10.1.0. Można go wyłączyć za pomocą «--disable-mathvec”, jednak nie jest to obsługiwana konfiguracja, ponieważ zmienia ABI. Nazwy symboli są zgodne z ABI wektora AArch64, są zadeklarowane w math.h i muszą być wywołane ręcznie w tym momencie.
Jeśli chodzi o ffunkcje, które zostały wycofane i usunięte w tej nowej wersji wspomniano na przykład, że ustat nie jest już dostępny dla nowo połączonych plików binarnych i nagłówków zostały usunięte I .
Domyślnie, biblioteka libcrypt nie jest już tworzony i teraz zaleca się użycie „--enable-crypt" budować biblioteka libcrypt. Jest prawdopodobne, że biblioteka libcrypt zostanie usunięty w przyszłej wersji, dlatego zaleca się przeniesienie aplikacji do alternatywy, takiej jak biblioteka libxcrypt.
Z innych zmian które wyróżniają się:
- Dodano ustawienian glibc.pthread.stack_hugetlb aby wyłączyć THP (Transparent Huge Pages) dla alokacji stosu podczas pthread_create.
- Dodano obsługę architektury x86_64 działającej w systemie Hurd. Ten port wymaga co najmniej binutils 2.40 i GCC 13.
- Usunięto „opcje”--disable-experimental-malloc" i "--enable-tunables" (ustawienie wewnętrzne jest teraz zawsze włączone).
- Makra C2X PRIb*, PRIB* i SCNb* zostały dodane do nagłówka .
- W jądrze Linuksa dla architektury hppa/parisc niektóre stałe MADV_XXX zostały zmienione, aby miały takie same wartości jak inne architektury.
Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.