След шестмесечно разработване релиз на системната библиотека (glibc) , който напълно отговаря на изискванията на стандартите ISO C11 и POSIX.1-2008. В новата версия са включени поправки от 48 разработчици.
От реализираните в Glibc 2.30 може да се отбележи:
- В динамичния линкер е добавена поддръжка на опцията «—preload» за предварително зареждане на споделени обекти (аналог на променливата на средата LD_PRELOAD);
- Добавена е функцията twalk_r, подобна на вече съществуващата функция twalk, но позволяваща предаване на допълнителен аргумент на определената callback-функция;
- За Linux са добавени нови функции getdents64, gettid и tgkill;
- Обезпечено е завършване с код на грешка на функциите за управление на паметта malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign и posix_memalign, в ситуации, когато общият размер на обекта надвишава стойността PTRDIFF_MAX. Посоченото изменение позволява да се избегне неопределено поведение, когато резултатът от манипулацията с указатели доведе до преливане на типа ptrdiff_t;
- Добавени са предложените в POSIX функции pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock и sem_clockwait, подобни на еквивалентите «timed», но допълнително приемат параметър clockid_t за избор на таймер; - Данните за кодировките, информацията за типовете символи и таблиците за транслитерация са обновени за поддръжка на спецификацията Unicode 12.1.0;
- В библиотеката librt за нови приложения вече не се предоставят функциите clock_gettime, clock_getres, clock_settime, clock_getcpuclockid и clock_nanosleep, вместо които автоматично се използват определения в libc;
- В /etc/resolv.conf е прекратена поддръжката на опцията «inet6». От resolv.h са премахнати остарелите флагове RES_USE_INET6, RES_INSECURE1 и RES_INSECURE2;
- При указване на опцията «—enable-bind-now» инсталираните програми сега се свързват, използвайки флага BIND_NOW;
- Обявени са за остарели специфичните за Linux заглавен файл sys/sysctl.h и функцията sysctl, вместо които приложенията следва да използват pseudo-файловата система /proc;
- За изграждането на Glibc сега е необходима GCC 6.2 или по-нова версия (за изграждане на приложения могат да се използват всякакви компилатори);
- Отстранена уязвимост в реализацията на функцията memcmp за субархитектура x32 (не бъркайте с x86 IA-32), в резултат на което функцията може неправилно да връща значение 0 за несъвпадащи низове;
- Отстранена уязвимост , което може да доведе до четене на данни от област извън границите на буфера при обработка на определени регулярни изрази.
Източник: opennet.ru
