Glibc 2.34 Жүйе кітапханасының шығарылымы

Алты айлық әзірлеуден кейін ISO C2.34 және POSIX.11-1 стандарттарының талаптарына толығымен сәйкес келетін GNU C Library (glibc) 2017 жүйелік кітапханасы шығарылды. Жаңа шығарылым 66 әзірлеушінің түзетулерін қамтиды.

Glibc 2.34-да енгізілген кейбір жақсартулар мыналарды қамтиды:

  • libpthread, libdl, libutil және libanl кітапханалары негізгі libc құрылымына біріктірілген, қолданбаларда олардың функционалдығын пайдалану енді -lpthread, -ldl, -lutil және -lanl жалаушалары арқылы байланыстыруды қажет етпейді. Libresolv-ті libc-ке біріктіру үшін дайындықтар жасалды. Интеграция glibc жаңарту процесіне кедергісіз мүмкіндік береді және орындау уақытын іске асыруды жеңілдетеді. Stub кітапханалары glibc ескі нұсқаларымен құрастырылған қолданбалармен кері үйлесімділікті қамтамасыз ету үшін берілген. Glibc-те берілген құрылымдар мен функциялар санының кеңеюіне байланысты бұрын пайдаланылмаған libpthread, libdl, libutil, libresolv және libanl кітапханаларымен атаулардың қиылысуы бар қолданбаларда мәселелер туындауы мүмкін.
  • Дәстүрлі түрде 64 биттік time_t түрін пайдаланатын конфигурацияларда 32 биттік time_t түрін пайдалану мүмкіндігін береді. Мұндай конфигурацияларда, мысалы, x86 жүйелерінде, әдепкі әлі 32-бит time_t, бірақ бұл әрекетті енді "_TIME_BITS" макросы арқылы өзгертуге болады. Бұл мүмкіндік кем дегенде Linux ядросының 5.1 нұсқасы бар жүйелерде ғана қолжетімді.
  • _Fork функциясы қосылды, «асинхронды-сигнал-қауіпсіз» талаптарына сәйкес келетін аша функциясын ауыстыру, яғни. сигнал өңдеушілерінен қауіпсіз қоңырау шалуға мүмкіндік береді. _Fork орындалу кезінде құлыптарды немесе ішкі күйді өзгертуі мүмкін мүмкіндіктерді қоспай, жоғарылату және орындау сияқты сигнал өңдегіштеріндегі функцияларды шақыруға жеткілікті минималды орта жасалады. _Fork қоңырауы POSIX стандартының болашақ нұсқасында анықталады, бірақ қазір ол GNU кеңейтімі ретінде қосылған.
  • Linux платформасы үшін ашық файл дескрипторынан орындалатын файлды іске қосуға мүмкіндік беретін execveat функциясы жүзеге асырылды. Жаңа функция іске қосу кезінде орнатылған жалған FS /proc қажет етпейтін fexecve шақыруын жүзеге асыруда да қолданылады.
  • POSIX clock_getres функциясына ұқсас мүмкіндіктермен timespec_get функциясын кеңейтетін ISO C2X стандартының жобасында анықталған timespec_getres функциясы қосылды.
  • Процесске ашық файл дескрипторларының барлық ауқымын бірден жабуға мүмкіндік беретін close_range() функциясы қосылды. Функция кем дегенде 5.9 нұсқасы Linux ядросы бар жүйелерде қол жетімді.
  • Қосылған closefrom және posix_spawn_file_actions_addclosefrom_np, бұл барлық файл дескрипторларын бірден жабуға мүмкіндік береді, олардың саны көрсетілген мәннен үлкен немесе оған тең.
  • "_DYNAMIC_STACK_SIZE_SOURCE" және "_GNU_SOURCE" режимдерінде PTHREAD_STACK_MIN, MINSIGSTKSZ және SIGSTKSZ енді тұрақты емес, ARM SVE кеңейтімінде берілгендер сияқты динамикалық өлшемді регистр жиындарына қолдау көрсетуге мүмкіндік береді.
  • Байланыстырушы IFUNC (жанама функция) анықтау әрекеттеріне және glibc-hwcaps ішкі каталогын таңдауға қатысты ақпаратты көрсету үшін "--list-diagnostics" опциясын жүзеге асырады.
  • ISO C60559X спецификациясының F қосымшасында анықталған функциялардың болуын тексеруге арналған __STDC_WANT_IEC_2_EXT__ макросы жүзеге асырылды.
  • Powerpc64* жүйелері үшін scv нұсқаулығын қолдамай glibc құруға мүмкіндік беретін “--disable-scv” опциясы іске асырылды.
  • gconv-modules файлында негізгі gconv модульдерінің ең аз жинағы ғана қалады, ал қалғандары gconv-modules.d каталогында орналасқан gconv-modules-extra.conf қосымша файлына жылжытылады.
  • Linux платформасы үшін glibc.pthread.stack_cache_size параметрі жүзеге асырылады, оны pthread стек кэшінің өлшемін конфигурациялау үшін пайдалануға болады.
  • тақырып файлындағы inet_neta функциясы, сондай-ақ (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p__dassn, p__d) файлынан сирек қолданылатын әртүрлі функциялар ескірген. p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntoss, (sym_ntos.) және ns_format_ttl, ns_makecanon, ns _parse_ttl, ns_samedomain , ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Бұл функциялардың орнына DNS-мен жұмыс істеу үшін бөлек кітапханаларды пайдалану ұсынылады.
  • pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np және pthread_yield функциялары ескірген және pthread_mutex_consistent, thread_mutexattr_getrobust және орнына hread_mutexattr_getrobust.
  • Орнатылған ортақ нысандарды Glibc нұсқасына байланыстыру үшін символдық сілтемелерді пайдалану тоқтатылды. Мұндай нысандар енді сол күйінде орнатылады (мысалы, libc.so.6 енді libc-2.34.so сілтемесі емес, файл болып табылады).
  • Әдепкі бойынша, malloc жүйесіндегі жөндеу мүмкіндіктері өшірілген, мысалы, MALLOC_CHECK_ (glibc.malloc.check), mtrace() және mcheck(), олар libc_malloc_debug.so бөлек кітапханасына жылжытылады, онда malloc_get_state және malloc_set_state ескірген функциялары да бар. жылжытылды.
  • Linux жүйесінде shm_open және sem_open сияқты функциялар жұмыс істеу үшін /dev/shm құрылғысын қажет етеді.
  • Түзетілген осалдықтар:
    • CVE-2021-27645: nscd (атау серверін кэштеу демоны) процесі арнайы жасалған желілік топ сұрауларын өңдеу кезінде бос функцияға қосарланған қоңырауға байланысты бұзылады.
    • CVE-2021-33574: SIGEV_THREAD хабарландыру түрін балама процессордың ұқсастығы маскасы орнатылған ағын атрибуты бар пайдаланған кезде mq_notify функциясында әлдеқашан босатылған жад аймағына кіру (бос орыннан кейін пайдалану). Мәселе апатқа әкелуі мүмкін, бірақ басқа шабуыл опцияларын жоққа шығаруға болмайды.
    • CVE-2021-35942: wordexp функциясындағы параметр өлшемінің асып кетуі қолданбаның бұзылуына әкелуі мүмкін.

Ақпарат көзі: opennet.ru

пікір қалдыру