Wydanie biblioteki systemowej Glibc 2.34

Po sześciu miesiącach pracy opublikowano wersję systemowej biblioteki GNU C Library (glibc) 2.34, która w pełni spełnia wymogi standardów ISO C11 i POSIX.1-2017. Do nowego wydania wprowadzono poprawki od 66 programistów.

Do ulepszeń wprowadzonych w Glibc 2.34 można zaliczyć:

  • Do głównego składnika libc zintegrowano biblioteki libpthread, libdl, libutil i libanl, co sprawia, że korzystanie z ich funkcjonalności w aplikacjach nie wymaga już wiązania z użyciem flag -lpthread, -ldl, -lutil i -lanl. Przygotowano integrację libresolv z libc. Integracja umożliwi osiągnięcie bardziej spójnego procesu aktualizacji glibc i uprości realizację runtime. W celu zapewnienia zgodności wstecznej z aplikacjami zbudowanymi na starszych wersjach glibc, dostarczono biblioteki zastępcze. Z powodu rozszerzenia liczby struktur i funkcji dostępnych w glibc, mogą wystąpić problemy w aplikacjach, które mają kolizje nazw z wcześniej nieużywanymi bibliotekami libpthread, libdl, libutil, libresolv i libanl.
  • Dostarczono możliwość używania 64-bitowego typu time_t w konfiguracjach, w których tradycyjnie stosowano 32-bitowy typ time_t. W takich konfiguracjach, na przykład na systemach x86, domyślnie nadal pozostaje 32-bitowy time_t, ale to zachowanie można teraz zmienić za pomocą makra "_TIME_BITS". Możliwość ta jest dostępna tylko na systemach z jądrem Linux w wersji co najmniej 5.1.
  • Dodano funkcję _Fork, która jest alternatywą dla funkcji fork, spełniającą wymagania "async-signal-safe", co oznacza, że można ją bezpiecznie wywoływać z obsług sygnałów. Podczas wykonywania _Fork tworzony jest minimalny kontekst, wystarczający do wywoływania funkcji w obsługach sygnałów, takich jak raise i execve, bez angażowania możliwości, które mogą prowadzić do zmiany blokad lub wewnętrznego stanu. Wywołanie _Fork zostanie określone w przyszłej wersji standardu POSIX, ale obecnie jest wliczane w poczet rozszerzeń GNU.
  • Dla platformy Linux zaimplementowano funkcję execveat, która umożliwia uruchomienie pliku wykonywalnego z otwartego deskryptora pliku. Nowa funkcja jest również wykorzystywana w realizacji wywołania fexecve, które nie wymaga posiadania zamontowanego pseudo-FS /proc podczas uruchamiania.
  • Dodano funkcję timespec_getres, zdefiniowaną w roboczej wersji standardu ISO C2X, która uzupełnia funkcję timespec_get o możliwości podobne do funkcji POSIX clock_getres.
  • Dodano funkcję close_range(), która umożliwia procesowi jednoczesne zamknięcie całego zakresu otwartych deskryptorów plików. Funkcja jest dostępna na systemach z jądrem Linux w wersji co najmniej 5.9.
  • Dodano funkcje closefrom i posix_spawn_file_actions_addclosefrom_np, które pozwalają na jednoczesne zamknięcie wszystkich deskryptorów plików, których numer jest równy lub większy od podanej wartości.
  • W trybach „_DYNAMIC_STACK_SIZE_SOURCE” i „_GNU_SOURCE” wartości PTHREAD_STACK_MIN, MINSIGSTKSZ i SIGSTKSZ nie są już stałymi, co pozwala na wsparcie dla zestawów rejestrów o dynamicznej wielkości, na przykład dostarczanych w rozszerzeniu ARM SVE.
  • W linkerze wprowadzono opcję „—list-diagnostics” do wyświetlania informacji związanych z operacjami określania IFUNC (indirect function) i wyboru podkatalogu glibc-hwcaps.
  • Wprowadzono makro __STDC_WANT_IEC_60559_EXT__, zaprojektowane do sprawdzania obecności funkcji zdefiniowanych w aplikacji „F” specyfikacji ISO C2X.
  • Dla systemów powerpc64* wprowadzono opcję „—disable-scv”, umożliwiającą skompilowanie glibc bez wsparcia dla instrukcji scv.
  • W pliku gconv-modules pozostawiono tylko minimalny zestaw podstawowych modułów gconv, a pozostałe przeniesiono do dodatkowego pliku gconv-modules-extra.conf, umieszczonego w katalogu gconv-modules.d.
  • Dla platformy Linux wprowadzono parametr glibc.pthread.stack_cache_size, który może być używany do konfigurowania rozmiaru pamięci podręcznej stosu pthread.
  • Funkcja inet_neta z pliku nagłówkowego oraz różne rzadko używane funkcje z (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) oraz (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain) ogłoszono jako przestarzałe. Zamiast tych funkcji zaleca się używanie oddzielnych bibliotek do pracy z DNS.
  • Ogłoszono za przestarzałe funkcje pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np i pthread_yield, które powinny być zastąpione przez pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust oraz sched_yield.
  • Przestało być używane powiązanie symboliczne do łączenia instalowanych współdzielonych obiektów z wersją Glibc. Takie obiekty są teraz instalowane takimi, jakie są (na przykład, libc.so.6 jest teraz plikiem, a nie linkiem do libc-2.34.so).
  • Domyślnie wyłączono funkcje debugowania w malloc, takie jak MALLOC_CHECK_ (glibc.malloc.check), mtrace() i mcheck(), które zostały przeniesione do osobnej biblioteki libc_malloc_debug.so, do której przeniesiono również przestarzałe funkcje malloc_get_state i malloc_set_state.
  • W systemie Linux do działania funkcji takich jak shm_open i sem_open teraz wymagane jest istnienie urządzenia /dev/shm.
  • Usunięto luki bezpieczeństwa:
    • CVE-2021-27645: awaria procesu nscd (demon pamięci podręcznej nazw) z powodu podwójnego wywołania funkcji free podczas przetwarzania specjalnie sformatowanych zapytań netgroup.
    • CVE-2021-33574: odniesienie do już zwolnionego obszaru pamięci (use-after-free) w funkcji mq_notify podczas korzystania z typu powiadomień SIGEV_THREAD z atrybutem wątku, dla którego ustalono alternatywną maskę powiązania z CPU. Problem może prowadzić do awarii, ale nie wyklucza innych rodzajów ataków.
    • CVE-2021-35942: przepełnienie parametru w funkcji wordexp może prowadzić do awarii aplikacji.

Ź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