После шест месеци развоја, пуштена је системска библиотека ГНУ Ц Либрари (глибц) 2.35, која је у потпуности усклађена са захтевима стандарда ИСО Ц11 и ПОСИКС.1-2017. Ново издање укључује исправке од 66 програмера.
Нека од побољшања имплементираних у Глибц 2.35 укључују:
- Додата подршка за „Ц.УТФ-8“ локализацију, која укључује правила разврставања за све Уницоде кодове, али да би се уштедела простор ограничена је на употребу АСЦИИ опсега у функцијама фнматцх, регекец и регцомп. Локал је око 400 КБ, од чега су 346 КБ подаци ЛЦ_ЦТИПЕ за Уницоде и захтева посебну инсталацију (није уграђено у Глибц).
- Подаци о кодирању, информације о типовима знакова и табеле транслитерације су ажурирани да подржавају Уницоде 14.0.0 спецификацију.
- ИН И имплементиране су функције и макрои који заокружују резултат на ужи тип: фскрт, фскртл, дскртл, ффма, ффмал, дфмал, фМскртфН, фМскртфНк, фМкскртфН, фМкскртфНк, фМфмафН, фМфмафН, фМфмафк и фМфМк. Функције су описане у спецификацијама ТС 18661-1:2014, ТС 18661-3:2015 и додате нацрту будућег стандарда ИСО Ц2Кс Ц.
- ИН И имплементиране функције и макрои за проналажење минимума и максимума бројева са покретним зарезом са типовима флоат, лонг доубле, _ФлоатН и _ФлоатНк, описани у ИЕЕЕ 754-2019 спецификацији и додати у нацрт будућег ИСО Ц2Кс Ц стандарда: фмакимум, фмакимум_нум , фмакимум_маг, фмакимум_маг_нум, фминимум, фминимум_нум, фминимум_маг, фминимум_маг_нум.
- ИН додате константе за бројеве са покретним зарезом са једном прецизношћу: М_Еф, М_ЛОГ2Еф, М_ЛОГ10Еф, М_ЛН2ф, М_ЛН10ф, М_ПИф, М_ПИ_2ф, М_ПИ_4ф, М_1_ПИф, М_2_ПИф, М_2_СКРТПИф, М_СКРТПИф2 и М_Сф.
- За функције екп10 у датотеци заглавља Додати су одговарајући макрои који нису везани за одређене типове.
- ИН додао је макро _ПРИНТФ_НАН_ЛЕН_МАКС предложен у нацрту ИСО Ц2Кс стандарда.
- Додати спецификације формата „%б“ и „%Б“ у фамилију функција принтф за штампање целих бројева у бинарном приказу.
- Систем динамичког повезивања имплементира нови ДСО алгоритам за сортирање који користи претрагу по дубини (ДФС) за решавање проблема са перформансама при руковању зависностима у петљи. Да бисте изабрали алгоритам за сортирање ДСО, предложен је параметар глибц.ртлд.динамиц_сорт, који се може подесити на „1“ да бисте се вратили на стари алгоритам.
- АБИ је додао подршку за нову функцију '__мемцмпек', коју компајлери користе за оптимизацију употребе 'мемцмп' ако се вредност коју враћа ова функција користи само за проверу статуса завршетка операције.
- Додата је подршка за аутоматску регистрацију нити коришћењем системског позива rseq (рестартне секвенце) који је доступан од кернела Linux 4.18. Системски позив rseq омогућава континуирано извршавање групе инструкција, без прекида и потврђујући резултат последње инструкције у групи. У суштини, он пружа средства за веома брзо, атомско извршавање операција, које се, ако их прекине друга нит, бришу и покушава се поновни покушај.
- Додата симболична веза /уср/бин/лд.со.
- Обезбеђен је подразумевани склоп свих извршних датотека уграђених програма и тест скупа у режиму ПИЕ (извршна датотека независно од позиције). Да бисте онемогућили ово понашање, обезбеђена је опција „--дисабле-дефаулт-пие“.
- За Linux Додато је подешавање glibc.malloc.hugetlb које вам омогућава да промените имплементацију malloc-а тако да користи системски позив madvise са заставицом MADV_HUGEPAGE за mmap и sbrk, или да директно користи огромне меморијске странице навођењем заставице MAP_HUGETLB у mmap позивима. Прва опција омогућава повећање перформанси при коришћењу транспарентних огромних страница у madvise режиму, док друга опција омогућава коришћење огромних страница резервисаних од стране система.
- Додата функција _дл_финд_објецт која се може користити за додавање информација о одмотавању стека позива.
- Додата је подршка за OpenRISC архитектуру (or1k-linux-gnu) у soft-float режиму. Овај порт захтева binutils 2.35, GCC 11 и језгро. Linux 5.4.
- Додата је заставица за изградњу "--витх-ртлд-еарли-цфлагс", која се може користити за одређивање додатних заставица компилације које се користе приликом прављења почетног кода за динамичко повезивање.
- За платформу Linux Додата је функција epoll_pwait2, која се разликује од epoll_wait по томе што одређује време чекања са прецизношћу од наносекунде.
- Додата функција посик_спавн_филе_ацтионс_аддтцсетпгрп_нп за елиминисање услова трке приликом постављања контролног терминала за нови процес.
- За апликације компајлиране са Глибц и ГЦЦ 12+, имплементиран је режим заштите “_ФОРТИФИ_СОУРЦЕ=3”, који детектује могуће преливање бафера приликом извршавања функција стрингова дефинисаних у датотеци заглавља стринг.х. Разлика у односу на режим „_ФОРТИФИ_СОУРЦЕ=2“ своди се на додатне провере, што потенцијално може довести до смањења перформанси.
- Подршка за Интел МПКС (Мемори Протецтион Ектенсионс), која се користи за проверу показивача за меморијске границе, је укинута (ова технологија није постала широко распрострањена и већ је уклоњена из ГЦЦ-а и ЛЛВМ-а).
- Механизам претходног повезивања и његове повезане променљиве окружења ЛД_ТРАЦЕ_ПРЕЛИНКИНГ и ЛД_УСЕ_ЛОАД_БИАС су застареле и биће уклоњене у будућем издању.
Поправљене рањивости:
- ЦВЕ-2022-23218, ЦВЕ-2022-23219 – Преливање бафера у функцијама свцуник_цреате и цлнт_цреате узроковано копирањем садржаја параметра назива датотеке на стек без провере величине копираних података. За апликације направљене без заштите стека и које користе „уник“ протокол, рањивост може довести до извршења кода нападача приликом обраде веома дугачких имена датотека.
- ЦВЕ-2021-3998 је рањивост у функцији реалпатх() због враћања, под одређеним условима, нетачне вредности која садржи неочишћене преостале податке из стека. За СУИД-роот фусермоунт програм, рањивост се може користити за добијање осетљивих информација из процесне меморије, на пример, за добијање информација о показивачима.
- ЦВЕ-2021-3999 – Преливање бафера од једног бајта у функцији гетцвд(). Проблем је узрокован грешком која је присутна од 1995. године. Да бисте изазвали преливање, једноставно позовите цхдир() у директоријуму "/" у посебном простору имена тачке монтирања.
Извор: опеннет.ру
