После шести месяцев разработки представлен релиз системной библиотеки GNU C Library (glibc) 2.24, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 57 разработчиков.
Из добавленных в Glibc 2.24 улучшений можно отметить:
- В математическую библиотеку libm добавлены новые функции nextupl, nextup, nextupf, nextdownl, nextdown и nextdownf, которые определены в спецификациях TS 18661 и IEEE754-2008. В Glibc данные функции отнесены к расширениям GNU. Функции nextup* возвращают следующее представление числа в направлении положительной бесконечности, а функции nextdown - отрицательной бесконечности;
- В NSS добавлена поддержка операции слияния (MERGE), упрощающей конфигурацию учётных записей пользователей в крупных распределённых системах. Например, при помощи операции MERGE в локальные файлы, такие как /etc/groups, можно включить содержимое внешних хранилищ параметров пользователей, подобных LDAP. Пример настройки MERGE в /etc/nsswitch.conf: "group: files [SUCCESS=merge] nis";
- Подняты требования к минимальной версии ядра Linux. Для работы Glibc на архитектурах, отличных от x86 и x86_64 теперь требуется ядро Linux 3.2 или более новый выпуск. Для систем x86 и x86_64 возможна работа с ядром 2.6.32. Для сборки на любых архитектурах требуются заголовочные файлы от ядра 3.2 или новее;
- Удалённые или устаревшие возможности:
- Объявлены устаревшими функции readdir_r и readdir64_r, вместо которых рекомендуется использовать readdir и readdir64;
- Удалён тип "union wait", который был объявлен устаревшим ещё в начале 1990-х годов и никогда не входил в спецификации POSIX. Вместо "union wait" в приложениях следует использовать тип "int";
- Из API удалена устаревшая переменная __malloc_initialize_hook;
- В утилите localedef прекращена поддержка давно не используемой опции "--old-style", которая уже более 16 лет является ничего не выполняющей заглушкой;
- Прекращена поддержка локали pap_AN, на смену которой в прошлых выпусках пришли локали pap_AW и pap_CW;
- Устранённые уязвимости:
- CVE-2016-3075 - переполнение стека при передаче функции getnetbyname слишком длинного параметра;
- CVE-2016-3706 - потенциальное переполнение стека в getaddrinfo из-за неполного устранения уязвимости CVE-2013-4458. В новом вызове getaddrinfo переведён на использование кучи вместо стека;
- CVE-2016-1234 - переполнение стека в функции glob, при её вызове с флагом GLOB_ALTDIRFUNC и передаче слишком длинного имени файла;
- CVE-2016-4429 - DoS-атака на UDP-клиент Sun RPC путём израсходования всей доступной памяти стека при флуде специально оформленными пакетами ICMP и UDP;
- CVE-2016-5417 - DoS-атака в форме израсходования всей доступной процессу памяти, инициируемая через отправку специально оформленных запросов резолвинга по IPv6.
|