The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск системной библиотеки Glibc 2.29"
Отправлено opennews, 01-Фев-19 10:56 
После шести месяцев разработки опубликован (https://sourceware.org/ml/libc-alpha/2019-01/msg00723.html) релиз системной библиотеки GNU C Library (http://ftp.gnu.org/gnu/glibc/) (glibc) 2.29 (http://sourceware.org/glibc/wiki/Release/2.29), которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 55 разработчиков.

Из добавленных в Glibc 2.29 улучшений (http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;h...) можно отметить:

-  Добавлена функция getcpu(), позволяющая получить сведения о используемых в настоящий момент CPU и узлах NUMA;

-  Для разработчиков дистрибутивов предложены сборочные команды "make localedata" и "make install-locale-files", дающие возможность собрать и установить все имеющиеся локали в форме раздельного набора каталогов с файлами;
-  В математические функции exp, exp2, log, log2, pow, sinf, cosf, sincosf и tanf внесены не специфичные для конкретных аппаратных платформ оптимизации;

-  Добавлена поддержка 32-разрядной процессорной архитектуры C-SKY (http://en.c-sky.com/solution/CPU-IP-shou-quan.htm) (ABIv2), развиваемой одноимённой китайской компанией для создания SoC для различных потребительских устройств. Для работы требуется наличие binutils 2.32, gcc 9.0 и ядра Linux 4.20. Поддерживается два варианта ABI:
"C-SKY ABIv2 soft-float little-endian" и "C-SKY ABIv2 hard-float little-endian";


-  Функция reallocarray() (http://manpages.ubuntu.com/manpages/xenial/man3/reallocarray...) перенесена из набора "_BSD_SOURCE" (интерфейсы BSD, которые конфликтуют с POSIX), в набор "_DEFAULT_SOURCE" (интерфейсы, которые включены по умолчанию);


-  Добавлены функции  posix_spawn_file_actions_addchdir_np (https://docs.oracle.com/cd/E86824_01/html/E54766/posix-spawn...) и
  posix_spawn_file_actions_addfchdir_np, применяющие вызовы  posix_spawn и posix_spawnp для запуска нового процесса в другом каталоге. Функции добавлены в секцию расширений GNU;

-  В функциях popen() и system() прекращён вызов обработчиков atfork (http://pubs.opengroup.org/onlinepubs/007904975/functions/pth...), вызываемых до и после выполнения fork(). Данное поведение возможно нарушает POSIX, который в документации на pthread_atfork предписывает обработчиках atfork обрабатывать состояние мьютекс после выполнения форка в многопоточных процессах, но вызовы popen и system не имеют прямого доступа к пользовательским мьютексам;

-  Механизм блокировок Transactional Lock Elision  (позволяет увеличить масштабируемость блокировок на системах с поддержкой инструкции HTM) теперь включается для процессоров powercp64le, только если применяются новые версии ядра Linux, собранные в режиме PPC_FEATURE2_HTM_NOSC на процессорах с поддержкой HWCAP2 (т.е. если выполняется сброс транзакции перед входом в ядро). Ранее для совместимости со  старыми ядрами не сбрасывающими транзакции, Glibc производил данную операцию самостоятельно, что приводило к снижению производительности на новых ядрах;
-  В функции strftime изменено применяемое по умолчанию форматирование альтернативного представления года с учётом локали ("%Ey"), которое теперь включает как минимум две цифры (без отбрасывания нулей) по аналогии с "%y". Изменение заметно только для японских локалей, в которых регулярно встречаются годы меньше 10. Для возвращения старого поведения вместе с "%EY" следует использовать флаги '_' и '-', определённые как расширения GNU;


-  Пространство имён glibc.tune переименовано в  glibc.cpu, а  glibc.tune.cpu в glibc.cpu.name;
-  Типы элементов pr_uid и pr_gid в структуре  elf_prpsinfo из sys/procfs.h приведены в соответствие с типами, используемыми в ядре Linux (размер структуры изменится только для архитектур MicroBlaze, MIPS (n64 ABI), Nios II и RISC-V). Аналогично к типам ядра приведены типы элементов pr_sigpend и pr_sighold структуры elf_prstatus и pr_flag из elf_prpsinfo, но данное изменение затрагивает только MIPS n32 ABI;
-  Устаревшие GNU-расширения форматирования в scanf ('%as', '%aS' и
  '%a[...]') теперь доступны только при  сборке в режимах  C89 и C++98 с флагом _GNU_SOURCE, так как они конфликтуют со спецификациями C99 и  C++11. В соответствии с рекомендациями  POSIX.1-2008 вместо '%as', '%aS' и'%a[...]' следует использовать '%ms', '%mS' и '%m[...]'. Для выявления применения устаревших расширений форматирования можно использовать режим "-Wformat" в GCC;
-  Для сборки Glibc теперь требуется наличие  GCC 5 и Python 3.4 или более новые версии (для сборки программ, использующих Glibc ограничения на версию GCC не накладываются);
-  Устранены уязвимости:


-   CVE-2018-19591 (https://security-tracker.debian.org/tracker/CVE-2018-19591) - утечка файловых дескрипторов в if_nametoindex может привести к отказу в обслуживании из-за исчерпание доступных дескрипторов. Утечка проявляется при вызове функции getaddrinfo() с передачей специально оформленного имени хоста;

-   CVE-2019-6488 (https://security-tracker.debian.org/tracker/CVE-2019-6488) - переполнение буфера при выполнении функции memcpy, проявляющиеся только в окружениях с архитектурой x32 (https://www.opennet.ru/opennews/art.shtml?num=49772) (не путать с x86 IA-32). Проблема вызвана ошибкой в ассемблерной вставке, из-за которой параметр  size_t записывается в нижние 32 бита часть 64-разрядного регистра без обнуления оставшихся верхних 32 бит;

-  CVE-2016-10739 (https://security-tracker.debian.org/tracker/CVE-2016-10739) - блокирована (https://sourceware.org/bugzilla/show_bug.cgi?id=20018) возможность разбора в функции getaddrinfo() адресов IPv4, содержащих произвольный набор символов в конце (например, "127.0.0.1\nTEST").  С одной стороны данное изменение нарушает сложившееся поведение и может привести к нарушению работы приложений, в которых осуществлялся разбор значений из /etc/hosts без разделения адресов. Но с другой стороны, указанная особенность приводила к уязвимостям в приложениях, которые используют getaddrinfo для проверки корректности адресов (getaddrinfo не возвращал ошибку и приложение считало адрес корректным, даже если после него указывались произвольные строки). На практике данная особенность использовалась (https://bugzilla.redhat.com/show_bug.cgi?id=1347549) для подстановки HTTP-заголовков в приложения на базе Python-библиотекеи httplib через передачу в поле адресов значений вида "127.0.0.1\r\nHttp-заголовок". В некоторых web-интерфейсах домашних маршрутизаторов в форме ping-проверки можно было запустить произвольные команды через передачу значений "127.0.0.1;cat /etc/passwd".


URL: https://sourceware.org/ml/libc-alpha/2019-01/msg00723.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=50068

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру