После шести месяцев разработки опубликован релиз системной библиотеки GNU C Library (glibc) 2.30, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 48 разработчиков.
Из реализованных в Glibc 2.30 улучшений можно отметить:
- В динамическом компоновщике обеспечена поддержка опции «—preload» для предзагрузки разделяемых объектов (аналог переменной окружения LD_PRELOAD);
- Добавлена функция twalk_r, похожая на уже существующую функцию twalk, но позволяющая передать дополнительный аргумент в заданную callback-функцию;
- Для Linux добавлены новые функции getdents64, gettid и tgkill;
- Обеспечено завершение с кодом ошибки функций управления памятью malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign и posix_memalign, в ситуации, когда общий размер объекта превышает значение PTRDIFF_MAX. Указанное изменение позволяет избежать неопределённого поведения, когда результат манипуляции с указателями приводит к переполнению типа ptrdiff_t;
- Добавлены предложенные в POSIX функции pthread_cond_clockwait, pthread_mutex_clocklock, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock и sem_clockwait, похожие на эквиваленты «timed», но дополнительно принимающие параметр clockid_t для выбора таймера;
- Данные кодировок, информация о типах символов и таблицы транслитерации обновлены для поддержки спецификации Unicode 12.1.0;
- В библиотеке librt для новых приложений больше не предоставляются функции clock_gettime, clock_getres, clock_settime, clock_getcpuclockid и clock_nanosleep, вместо которых автоматически используются определения в libc;
- В /etc/resolv.conf прекращена поддержка опции «inet6». Из resolv.h удалены устаревшие флаги RES_USE_INET6, RES_INSECURE1 и RES_INSECURE2;
- При указании опции «—enable-bind-now» устанавливаемые программы теперь связываются с использованием флага BIND_NOW;
- Объявлены устаревшими специфичные для Linux заголовочный файл sys/sysctl.h и функция sysctl, вместо которых приложениям следует использовать псевдо-ФС /proc;
- Для сборки Glibc теперь требуется GCC 6.2 или более новая версия (для сборки приложений могут использоваться любые компиляторы);
- Устранена уязвимость CVE-2019-7309 в реализации функции memcmp для устаревшей субархитектуры x32 (не путать с x86 IA-32), в результате которой функция некорректно могла возвращать значение 0 для несовпадающих строк;
- Устранена уязвимость CVE-2019-9169, которая может привести к чтению данных из области вне границ буфера при обработке определённых регулярных выражений.
Источник: http://www.opennet.ru/opennews/art.shtml?num=51205