Релиз системной библиотеки Glibc 2.23
19 февраля 2016 года
После шести месяцев разработки состоялся релиз системной библиотеки GNU C Library (glibc) 2.23, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 74 разработчиков.
Из добавленных в Glibc 2.23 улучшений можно отметить:
- Поддержка Unicode 8.0.0: обновлены все кодировки, информация о типах символов и таблицы транслитерации, для которых также задействованы новые или обновлённые скрипты генерации, позволившие закрыть несколько давно висевших отчётов об ошибках;
- Вызовы sched_setaffinity и pthread_setaffinity_np теперь не пытаются угадать внутренние параметры активных CPU в ядре, что позволило исключить сбои при попытке изменения привязки процессов к определённым CPU (CPU affinity). В случае необходимости определения эффективных привязок CPU в приложениях следует вызывать функцию sched_getaffinity или pthread_getaffinity_np, так как ранее заданные установки могут быть откорректированы ядром;
- При сборке с опцией "-D_FILE_OFFSET_BITS=64" теперь можно использовать заголовочный файл fts.h, в котором для больших файлов предлагаются новые вызовы fts64_children, fts64_close,
fts64_open, fts64_read и fts64_set;
- В функцию getaddrinfo добавлена проверка на наличие некоторых некорректных ответов через внутренний сокет netlink. В случае поступления подобных ответов, подверженный проблеме процесс будет завершён с сообщением о непредвиденной ошибке ("Unexpected error NUM on netlink descriptor NUM" или " "Unexpected netlink response of size NUM on descriptor NUM"), так как наиболее вероятной причиной повреждения ответа является ошибочное повторное использование закрытого файлового дескриптора netlink в многопоточных приложениях;
- Устранён дефект в реализации вызова malloc, связанный с выполнением лишних запросов на сериализацию памяти в многопоточных приложениях, с большой частотой создающих и завершающих потоки. Проблема проявлялась начиная с glibc 2.15 (2012 год) или начиная с glibc 2.10 при сборке с опцией "--enable-experimental-malloc" (2009 год). После устранения ошибки наблюдается значительное увеличение пропускной способности одновременных запросов распределение памяти;
- Добавлена новая сборочная опция "--disable-timezone-tools", дающая возможность отключить сборку и установку утилит, связанных с обработкой баз часовых поясов (zic, zdump и tzselect);
- Удалён устаревший заголовочный файл "regexp.h", вместо которого следует использовать "regex.h";
- Удалён заголовочный файл "sys/kdaemon.h", а устаревшие функции bdflush, create_module, get_kernel_syms,
query_module и uselib теперь недоступны для вновь скомпонованных бинарных файлов. Данный заголовочный файл и функции специфичны для систем на базе ядра Linux и потеряли смысл на системах с ядром Linux новее 2.6;
- Проведена оптимизация строковых операций, функций работы с памятью и вызовов wcsmbs для систем IBM z13;
- Вновь скомпонованные программы, в которых определена переменная signgam, теперь не смогут установить её через функции lgamma, lgammaf и lgammal, так как данная переменная теперь определена в заголовочном файле math.h;
- Для сборки Glibc 2.23 теперь требуется как минимум GCC 4.7, для сборки связанных с Glibc программ по-прежнему могут применяться старые версии GCC и иные компиляторы;
- Устранены уязвимости:
- CVE-2015-7547 - несколько дней назад анонсированная критическая уязвимость в libresolv, позволяющая удалённо выполнить код в системе при резолвинге подконтрольного атакующему доменного имени в любом приложении, использующем вызов getaddrinfo(). Проблема является одной из самых опасных уязвимостей за последнее время и может проявиться в широком спектре клиентских и серверных программ, от почтовых серверов до web-приложений на PHP и Ruby on Rails;
- CVE-2015-8776 - крах, вызванный обращением за границы буфера, в котором размещена структура tm при вызове функции strftime;
- CVE-2015-8777 - возможность использования переменной окружения LD_POINTER_GUARD для отключения механизмов защиты указателей в исполняемых файлах, запущенных в режиме AT_SECURE;
- CVE-2015-8778 - целочисленное переполнение в функциях hcreate и hcreate_r, которое может привести к обращению к областям памяти вне границ буфера;
- CVE-2015-8779 - выход за границы стека в функции catopen;
- CVE-2014-9761 - выход за границы стека при обработке слишком больших строк в функциях nan, nanf и nanl;
- Закрыто 264 отчёта об ошибках.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.