Выход системной библиотеки Glibc 2.19

Представлен релиз системной библиотеки GNU C Library (glibc) 2.19, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 78 разработчиков.

Glibc является основой большинства Linux-дистрибутивов, за исключением OpenWrt, Mandriva, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc. Библиотека Eglibc построена на актуальной кодовой базе Glibc и полностью совместима с ней на уровне API и ABI, отличаясь интеграцией некоторых дополнительных наработок для встраиваемых систем, более низкими системными требованиями, возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования.

Из добавленных в 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.