Состоялся релиз системной библиотеки Glibc 2.22

Материал из Викиновостей, свободного источника новостей

15 августа 2015 года

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

Из добавленных в Glibc 2.22 улучшений можно отметить:

  • В состав включена библиотека векторных математических функций libmvec, позволяющая задействовать в приложениях векторизированные реализации типовых математических функций, в которых используются SIMD-расширения. Для архитектуры x86_64 в библиотеке представлены следующие функции: cos, cosf, sin, sinf, sincos, sincosf, log, logf, exp, expf, pow и powf, оптимизированные при помощи инструкций SSE и AVX.

Для использования векторизированных функций при обращении к GCC следует указать флаги "-fopenmp -ffast-math" (поддерживаются выпуски GCC, начиная с 4.9.0 в режимах оптимизации, начиная с "-O1"). Связывание исполняемого файла с libmvec.so производится автоматически при указании "-lm" (нет необходимости явно указывать "-lmvec"). При желании сборку libmvec в составе Glibc можно отключить при помощи опции "--disable-mathvec"

  • Новая реализация функции fmemopen, отличающаяся более строгим следованием рекомендациям POSIX. В частности, в новой реализации fmemopen решены с давних пор остававшиеся неисправленными проблемы совместимости с POSIX ( 6544, 11216, 12836, 13151, 13152, 14292). Код старой реализации fmemopen также оставлен в составе Glibc и продолжит использоваться в собранных ранее программах;
  • Компоненты Glibc портированы для работы в браузерных окружениях Native Client на системах с архитектурой ARMv7-A ("--host=arm-nacl")
  • Код разбора файлов с правилами перевода времени в часовых поясах переработан с целью повышения надёжности обработки некорректных данных, что увеличило стойкость к попыткам атак через подстановку модифицированных файлов часовых поясов, которые ранее могли вызвать переполнение буфера при некорректном заполнении полей tzh_ttisstdcnt и tzh_ttisgmtcnt или при обработке файлов очень большого размера. Также добавлена защита от манипуляций значениями переменной окружения TZ (установка слишком длинной строки приводила к переполнению стека и краху);
  • В реализацию TLS (Thread-local storage) добавлены оптимизации, специфичные для архитектур

powerpc и powerpc64. Кроме того, по аналогии с кодом для x86 и x86-64, добавлены блоки описания для LD и GD. Для использования оптимизаций требуется установка binutils 2.24+;

  • Таблицы ctype и кодировки символов приведены в соответствие со спецификацией Unicode 7.0.0. Использованы новые скрипты генерации локали, которые позволили решить возникшие при переходе на Unicode 7.0.0 проблемы с локалью, такие как несрабатывание проверки islower для некоторых символов в нижнем регистре;
  • Налажена работа sigaction ABI на 32-разрядных системах SPARC (в glibc 2.19 и 2.20 данный ABI был поломан);
  • Для архитектуры s390 реализована возможность запроса информации из кэша через sysconf() с опцией _SC_LEVEL1_ICACHE_SIZE;
  • Заголовочный файл "regexp.h" помечен как устаревший (исключен из стандарта в 2001 году) и будет удалён в одном из ближайших выпусков. При обращении к "regexp.h" теперь выводится специальное предупреждение. Разработчикам следует перейти к использованию "regex.h" вместо "regexp.h";
  • Устранены уязвимости:
  • CVE-2015-1781 - переполнение буфера в gethostbyname_r и других функциях, отправляющих запросы к DNS, потенциально позволяющее организовать выполнение кода при возврате специально оформленных ответов от подконтрольного атакующему DNS-сервера. Проблема проявляется если функции NSS вызваны с использованием невыравненного буфера.
  • CVE-2014-8121 - возможность инициирования отказа в обслуживании приложения, из-за сохранения состояния NSS-вызовами getXXent и getXXbyYY в одной БД.
  • Закрыт 101 отчёт об ошибках.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Состоялся релиз системной библиотеки Glibc 2.22», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.