Выпуск системной библиотеки Glibc 2.33
2 февраля 2021 года
После шести месяцев разработки опубликован релиз системной библиотеки GNU C Library (glibc) 2.33, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2017. В состав нового выпуска включены исправления от 72 разработчиков.
Из реализованных в Glibc 2.33 улучшений можно отметить:
- В компоновщике (dynamic linker), отвечающем за динамическую загрузку и связывание разделяемых библиотек при запуске программы, реализована поддержка загрузки оптимизированных реализаций разделяемых объектов из подкаталогов glibc-hwcaps, созданных в областях ФС, просматриваемых при поиске библиотек. В настоящий момент реализованы подкаталоги "x86-64-v2", "x86-64-v3" и
"x86-64-v4" для архитектуры x86_64-linux-gnu, "power9" и "power10" для архитектуры powerpc64le-linux-gnu, "z13", "z14" и "z15" для s390x-linux-gnu. В случае архитектуры x86_64-linux-gnu имя подкаталога выбирается в зависимости от версии psABI.
- В компоновщик также добавлены флаги: "--list-tunables" для вывода всех поддерживаемых внутренних настроек поведения Glibc, "--argv0" для изменения строки argv[0], в которой содержится название текущего исполняемого файла, и "--help" для вывода подсказки и информации о проверяемых файловых путях.
- Добавлена функция mallinfo2, которая также как
mallinfo выводит статистику о распределении памяти, но с большим размером полей, позволяющим выводить значения, не умещающиеся в тип integer.
- Добавлен заголовочный файл <sys/platform/x86.h> с макросами для проверки функциональных возможностей x86 CPU.
- Добавлена поддержка 32-разрядных систем на базе архитектуры набора команд RISC-V (ISA rv32imac, rv32imafdc и rv32imafdc). Для работы 32-разрядного порта RISC-V требуется как минимум ядро Linux 5.4, GCC 7.1 и binutils 2.28. 64-разрядный порт RISC-V поддерживается начиная с Glibc 2.27.
- Добавлен новый режим защиты "_FORTIFY_SOURCE=3", предназначенный для определения во время компиляции и во время работы возможных переполнений буфера при выполнении строковых функций, определённых в заголовочном файле string.h. Отличие от режима "_FORTIFY_SOURCE=2" сводится к дополнительным проверкам, которые потенциально могут приводить к снижению производительности. На стороне компилятора режим пока поддерживается только в LLVM 9 (в GCC ещё не реализован).
- Объявлена устаревшей функция mallinfo. Удалена функция vtimes (оставлена заглушка для сохранения совместимости) и заголовочный файл <sys/vtimes.h>.
- При вызове dlopen из программ со статическим связыванием прекращена загрузка альтернативных библиотек из подкаталогов HWCAP.
В будущих выпусках glibc решено прекратить загрузку разделяемых объектов из подкаталогов tls. Приложениям следует перейти на новый механизм glibc-hwcaps.
- В Linux прекращена корректировка прав доступа к устройствам терминала силами Glibc. Администраторам теперь нужно следить за режимом доступа к /dev/pts самостоятельно, но изменение во многом формальность, так как в большинстве систем давно выставляются необходимые значения (группа tty, право чтения/записи для пользователя и право записи для группы).
- Функции posix_openpt и getpt больше не пытаются использовать устаревшие псевдотерминалы в Linux и при наличии /dev/ptmx считают псевдо-ФС devpts примонтированной к /dev/pts.
- Устранены уязвимости:
- CVE-2019-25013 - переполнение буфера при обработке в функции iconv строки в кодировке EUC-KR, включающей некорректные многобайтовые последовательности (например, echo -en "\x00\xfe" | iconv -c -f EUC-KR -t "UTF-8").
- CVE-2021-3326 - крах из-за срабатывания assert-проверки при преобразовании символов ISO-20220-JP-3 при помощи функции iconv из-за выхода результирующей строки за конц буфера на два символа.
- CVE-2020-27618 - зацикливание при обработке в iconv определённых последовательностей символов в кодировках IBM1364,
IBM1371, IBM1388, IBM1390 и IBM1399.
- CVE-2020-29562 - крах из-за срабатывания assert-проверки при обработке в функции iconv некорректных символов в кодировке UCS4.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.
- 2 февраля 2021
- Новости 2021 года
- 2021
- 2 февраля
- Февраль 2021
- Материалы OpenNET
- Загружено ботом
- Загружено ботом NewsBots
- Загружено ботом/OpenNET
- GNU Compiler Collection
- Glibc
- Libc
- Llvm
- Компиляторы
- Компьютерные технологии
- Наука и технологии
- Программное обеспечение
- Свободное программное обеспечение
- Технологии
- Опубликовано