Выход системной библиотеки Glibc 2.19
8 февраля 2014 года
Представлен релиз системной библиотеки GNU C Library (glibc) 2.19, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 78 разработчиков.
Glibc является основой большинства Linux-дистрибутивов за исключением OpenWrt, Mandriva, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc. Библиотека Eglibc развивается синхронно с Glibc, построена на актуальной кодовой базе Glibc и полностью совместима с ней на уровне API и ABI, отличаясь интеграцией некоторых дополнительных наработок для встраиваемых систем, более низкими системными требованиями, возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования. Одновременно с релизом Glibc 2.19 сформирована новая ветка Eglibc 2.19.
Из добавленных в Glibc 2.19 улучшений можно отметить:
- Поддержка компиляции с использованием Clang-расширения "-fblock" и сборки программ из кодовой базы BSD-систем, за счёт прекращения использования в публичных заголовочных файлах конструкций "__unused" и "__block";
- Улучшения, связанные с процессорами Power: поддержка архитектуры powerpc64le; в soft-float порт powerpc добавлена поддержка процессоров e500; для архитектур ppc32/power4+ и ppc64 добавлена поддержка символов STT_GNU_IFUNC;
- Улучшения, связанные с локализацией:
- Для почти всех поддерживаемых локалей в поле LC_ADDRESS добавлена поддержка указания аббревиатуры страны, используемой в автомобильных номерах (country_car). Например, ru_RU соответствует аббревиатура
RUS;
- Добавлена поддержка определений ISO 1427 и ISO 3166 (кодовые обозначения государств);
- В утилиту localedef добавлены опции "--big-endian" и "--little-endian" для генерации локалей для различных типов систем, отличных от текущей системы;
- Бинарные файлы с параметрами локалей теперь зависят только от порядка следования байтов в системах и ни от каких других параметров. Бинарные файлы, созданные новой версией localedef, могут оказаться несовместимыми с прошлыми выпусками Glibc, и наоборот, созданные старыми версиями localedef бинарные файлы могут оказаться несовместимыми с новой версией Glibc, при следующих условиях:
- Возможно нарушение совместимости файлов с локалями для архитектуры m68k;
- Возможно нарушение совместимости архивов с локалями (не отдельных файлов) на системах в которых символ определяется знаковым типом;
- Поддержка контрольных вызовов SystemTap для функции malloc и медленных методов трансцендентных математических функций;
- Добавлен тестовый макрос _DEFAULT_SOURCE для активации объявлений в заголовочных файлах, аналогичных тем, что включены по умолчанию, даже если при сборке используются опции компилятора или макросы, отключающие некоторые объявления (например, -std=c99);
- Тестовый макрос _BSD_SOURCE отныне не активирует интерфейсы BSD, которые конфликтуют с POSIX. Удалена библиотека
libbsd-compat;
- Из скрипта configure удалена поддержка опции "--disable-versioning", сборка с которой не работает уже несколько лет;
- Исправлено 179 ошибок, в том числе устранено 6 уязвимостей:
- CVE-2012-4412, CVE-2012-4424 - переполнение буфера и стека в коде кэширования индексов для функции strcoll при сопоставлении последовательностей большого размера. Проблемы решены через использование более медленного алгоритма без кэширования в ситуациях когда размер данных слишком велик и может привести к целочисленному переполнению счётчика индекса или нехватке памяти;
- CVE-2013-4788 - система защиты указателей pointer guard не работала для статических приложений. Отныне для инициализации pointer guard для статически связанных приложений используются случайные значения;
- CVE-2013-4237 - функция "readdir_r" могла записать в поле "d_name" структуры "dirent" больше данных, чем определено лимитом NAME_MAX или потерять завершающий строку нулевой символ;
- CVE-2013-4332 - функции pvalloc, valloc, memalign, posix_memalign и
aligned_alloc могли выделить меньше памяти, чем необходимо, или повредить содержимое кучи при указании слишком большого размера запрошенной памяти;
- CVE-2013-4458 - переполнение стека при получении функцией getaddrinfo слишком большого числа результатов запроса при использовании протокола AF_INET6.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.