Lẹhin osu mẹfa ti idagbasoke atejade idasilẹ ìkàwé eto GNU C Library (glibc) 2.32, eyi ti o ni kikun ni ibamu pẹlu awọn ibeere ti ISO C11 ati POSIX.1-2017. Itusilẹ tuntun pẹlu awọn atunṣe lati ọdọ awọn olupilẹṣẹ 67.
Ti ṣe imuse ni Glibc 2.32 awọn ilọsiwaju o le ṣe akiyesi:
Добавлена поддержка процессоров Synopsys ARC HS (ARCv2 ISA). Для работы порта требуется как минимум binutils 2.32, gcc 8.3 и ядро Linux 5.1. Поддерживается три варианта ABI arc-linux-gnu, arc-linux-gnuhf и arceb-linux-gnu (big-endian);
Реализована загрузка модулей аудита, указанных в секциях DT_AUDIT и
DT_DEPAUDIT исполняемого файла.
Для архитектуры powerpc64le реализована поддержка типа IEEE128 long double, включаемая при сборке с опцией «-mabi=ieeelongdouble».
Некоторые API аннотированы с использованием GCC-атрибута ‘access’, позволяющего при компиляции в GCC 10 генерировать более качественные предупреждения при определении возможных переполнений буферов и других вариантов выхода за допустимые границы.
Для Linux-систем реализованы функции pthread_attr_setsigmask_np и
pthread_attr_getsigmask_np, дающие приложению возможность указать маску сигнала для потоков, созданных при помощи pthread_create.
Awọn data fifi koodu, alaye iru ohun kikọ, ati awọn tabili iyipada ti ni imudojuiwọn lati ṣe atilẹyin sipesifikesonu Unicode 13.0.0;
Добавлен новый заголовочный файл <sys/single_threaded.h>, определяющий переменную __libc_single_threaded, которую можно использовать в приложениях для однопоточных оптимизаций.
Добавлены функции sigabbrev_np и sigdescr_np, возвращающие сокращённое название и описание сигнала (например, «HUP» и Hangup» для SIGHUP).
Добавлены функции strerrorname_np и strerrordesc_np, возвращающие имя и описание ошибки (например, «EINVAL» и «Invalid argument» для EINVAL).
Для платформы ARM64 добавлен флаг «—enable-standard-branch-protection» (или -mbranch-protection=standard в GCC), задействующий механизм ARMv8.5-BTI (Branch Target Indicator) для защиты выполнения наборов инструкций, на которые не должны выполняться переходы при ветвлении. Блокирование переходов на произвольные участки кода реализовано для противодействия созданию гаджетов в эксплоитах, использующих приёмы возвратно-ориентированного программирования (ROP — Return-Oriented Programming, атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися кусками машинных инструкций, завершающихся инструкцией возврата управления, из которых выстраиваются цепочка вызовов для получения нужной функциональности).
Проведена большая чистка устаревших возможностей, в том числе удалены опции «—enable-obsolete-rpc» и «—enable-obsolete-nsl», заголовочный файл <sys/sysctl.h>. Объявлены устаревшими функции sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore и sigset, массивы sys_siglist, _sys_siglist и sys_sigabbrev, символы sys_errlist, _sys_errlist, sys_nerr и _sys_nerr, NSS-модуль hesiod.
ldconfig по умолчанию переведён на использование нового формата ld.so.cache, который поддерживается в glibc уже почти 20 лет.
Awọn ailagbara ti o wa titi:
CVE-2016-10228 — зацикливание в утилите iconv, проявляющееся при запуске с опцией «-c», в случае обработки некорректных многобайтовых данных.
CVE-2020-10029 — повреждение стека при вызове тригонометрических функций с псевдонулевым аргументом.
CVE-2020-1752 — обращение к области памяти после её освобождения (use-after-free) в функции glob при раскрытии ссылки на домашний каталог («~user») в путях.
CVE-2020-6096 — некорректная обработка на платформе ARMv7 отрицательных значений параметра в memcpy() и memmove(), определяющего размер копируемой области. Faye gba организовать выполнение кода при обработке в функциях memcpy() и memmove() определённым образом оформленных данных. Показательно, что проблема оставалась неисправленной почти два месяца с момента публичного раскрытия информации и пять месяцев с момента уведомления разработчиков Glibc.