Glibc 2.35 சிஸ்டம் லைப்ரரி வெளியீடு

ஆறு மாத வளர்ச்சிக்குப் பிறகு, GNU C நூலகம் (glibc) 2.35 வெளியிடப்பட்டது, இது ISO C11 மற்றும் POSIX.1-2017 தரநிலைகளின் தேவைகளுக்கு முழுமையாக இணங்குகிறது. புதிய வெளியீட்டில் 66 டெவலப்பர்களின் திருத்தங்கள் உள்ளன.

Glibc 2.35 இல் செயல்படுத்தப்பட்ட சில மேம்பாடுகள் பின்வருமாறு:

  • "C.UTF-8" லோகேலுக்கான ஆதரவு சேர்க்கப்பட்டது, இதில் அனைத்து யூனிகோட் குறியீடுகளுக்கான தொகுப்பு விதிகளும் அடங்கும், ஆனால் இடத்தை சேமிப்பது fnmatch, regexec மற்றும் regcomp செயல்பாடுகளில் ASCII வரம்புகளின் பயன்பாட்டிற்கு மட்டுமே. லோகேல் சுமார் 400 KB ஆகும், இதில் 346 KB என்பது யூனிகோடிற்கான LC_CTYPE தரவு மற்றும் தனி நிறுவல் தேவைப்படுகிறது (Glibc இல் கட்டமைக்கப்படவில்லை).
  • யூனிகோட் 14.0.0 விவரக்குறிப்பை ஆதரிக்க குறியாக்க தரவு, எழுத்து வகை தகவல் மற்றும் ஒலிபெயர்ப்பு அட்டவணைகள் புதுப்பிக்கப்பட்டுள்ளன.
  • IN மற்றும் செயல்பாடுகள் மற்றும் மேக்ரோக்கள் செயல்படுத்தப்படுகின்றன, அவை முடிவை ஒரு குறுகிய வகைக்கு சுற்றி வருகின்றன: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafNx, fMfMfx, fMfMfx. செயல்பாடுகள் விவரக்குறிப்புகள் TS 18661-1:2014, TS 18661-3:2015 இல் விவரிக்கப்பட்டுள்ளன மற்றும் எதிர்கால ISO C2X C தரநிலையின் வரைவில் சேர்க்கப்பட்டுள்ளது.
  • IN மற்றும் ஃப்ளோட், லாங் டபுள், _FloatN மற்றும் _FloatNx வகைகளுடன் மிதக்கும் புள்ளி எண்களின் குறைந்தபட்ச மற்றும் அதிகபட்சத்தைக் கண்டறிவதற்காக செயல்படுத்தப்பட்ட செயல்பாடுகள் மற்றும் மேக்ரோக்கள், IEEE 754-2019 விவரக்குறிப்பில் விவரிக்கப்பட்டு எதிர்கால ISO C2X C தரநிலையின் வரைவில் சேர்க்கப்பட்டது: fmaximum, fmaximum_num , fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • IN ஒற்றைத் துல்லியமான மிதக்கும் புள்ளி எண்களுக்கான மாறிலிகளைச் சேர்த்தது: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTSQ2f மற்றும் M_1_SQRTPIf.
  • ஹெடர் கோப்பில் exp10 செயல்பாடுகளுக்கு குறிப்பிட்ட வகைகளுடன் இணைக்கப்படாத தொடர்புடைய மேக்ரோக்கள் சேர்க்கப்பட்டன.
  • IN வரைவு ISO C2X தரத்தில் முன்மொழியப்பட்ட _PRINTF_NAN_LEN_MAX மேக்ரோவைச் சேர்த்தது.
  • பைனரி பிரதிநிதித்துவத்தில் முழு எண்களை அச்சிடுவதற்கு "%b" மற்றும் "%B" வடிவமைப்பு குறிப்பான்கள் printf குடும்ப செயல்பாடுகளில் சேர்க்கப்பட்டது.
  • டைனமிக் லிங்க்கிங் சிஸ்டம் ஒரு புதிய டிஎஸ்ஓ வரிசையாக்க வழிமுறையை செயல்படுத்துகிறது, இது லூப் செய்யப்பட்ட சார்புகளைக் கையாளும் போது செயல்திறன் சிக்கல்களைத் தீர்க்க ஆழமான முதல் தேடலைப் (DFS) பயன்படுத்துகிறது. DSO வரிசையாக்க அல்காரிதத்தைத் தேர்ந்தெடுக்க, glibc.rtld.dynamic_sort அளவுரு முன்மொழியப்பட்டது, இது பழைய அல்காரிதத்திற்கு திரும்ப "1" ஆக அமைக்கப்படலாம்.
  • ABI ஆனது '__memcmpeq' என்ற புதிய செயல்பாட்டிற்கான ஆதரவைச் சேர்த்துள்ளது, இந்தச் செயல்பாட்டின் மூலம் வழங்கப்படும் மதிப்பானது செயல்பாட்டின் நிறைவு நிலையைச் சரிபார்க்க மட்டுமே பயன்படுத்தப்பட்டால், 'memcmp' இன் பயன்பாட்டை மேம்படுத்த கம்பைலர்களால் பயன்படுத்தப்படுகிறது.
  • லினக்ஸ் கர்னல் 4.18 இலிருந்து வழங்கப்பட்ட rseq (மறுதொடக்கம் செய்யக்கூடிய வரிசைகள்) கணினி அழைப்பைப் பயன்படுத்தி தானாக நூல்களைப் பதிவு செய்வதற்கான ஆதரவு சேர்க்கப்பட்டது. rseq சிஸ்டம் அழைப்பு குறுக்கிடப்படாத ஒரு குழு அறிவுறுத்தல்களின் தொடர்ச்சியான செயல்பாட்டை ஒழுங்கமைக்க உங்களை அனுமதிக்கிறது மற்றும் குழுவின் கடைசி அறிவுறுத்தலின் மூலம் முடிவை உறுதிப்படுத்துகிறது. அடிப்படையில், இது மற்றொரு நூலால் குறுக்கிடப்பட்டால், சுத்தம் செய்யப்பட்டு மீண்டும் முயற்சிக்கப்படும் செயல்பாடுகளை மிக வேகமாக அணுச் செயல்படுத்துவதற்கான வழிமுறையை வழங்குகிறது.
  • சிம்லிங்க் /usr/bin/ld.so சேர்க்கப்பட்டது.
  • உட்பொதிக்கப்பட்ட நிரல்களின் அனைத்து இயங்கக்கூடிய கோப்புகளின் இயல்புநிலை அசெம்பிளி மற்றும் PIE (நிலை சுயாதீன இயங்கக்கூடிய) முறையில் சோதனை அமைக்கப்பட்டுள்ளது. இந்த நடத்தையை முடக்க, “--disable-default-pie” விருப்பம் வழங்கப்படுகிறது.
  • Linux க்கு, mmap மற்றும் sbrk க்கு MADV_HUGEPAGE கொடியுடன் madvise அமைப்பு அழைப்பைப் பயன்படுத்த malloc செயலாக்கத்தை மாற்ற அனுமதிக்க glibc.malloc.hugetlb அமைப்பு சேர்க்கப்பட்டுள்ளது அல்லது mmap இல் MAP_HUGETLB கொடியைக் குறிப்பிடுவதன் மூலம் பெரிய நினைவகப் பக்கங்களை நேரடியாகப் பயன்படுத்தவும். அழைக்கிறது. முதல் வழக்கில், வெளிப்படையான பெரிய பக்கங்கள் மேட்வைஸ் பயன்முறையில் பயன்படுத்தப்பட்டால், செயல்திறன் ஆதாயங்களை அடைய முடியும், இரண்டாவது வழக்கில், கணினியில் ஒதுக்கப்பட்ட பெரிய பக்கங்களைப் பயன்படுத்துவதற்கான திறன் வழங்கப்படுகிறது.
  • _dl_find_object செயல்பாடு சேர்க்கப்பட்டது, இது அழைப்பு ஸ்டாக் அன்வைண்ட் தகவலைச் சேர்க்கப் பயன்படுகிறது.
  • OpenRISC கட்டமைப்பிற்கான ஆதரவு (or1k-linux-gnu) சாஃப்ட்-ஃப்ளோட் பயன்முறையில் சேர்க்கப்பட்டது. போர்ட்டிற்கு பினுட்டில்கள் 2.35, ஜிசிசி 11 மற்றும் லினக்ஸ் கர்னல் 5.4 தேவை.
  • "--with-rtld-early-cflags" என்ற உருவாக்கக் கொடி சேர்க்கப்பட்டது, இது டைனமிக் இணைப்பிற்கான ஆரம்பக் குறியீட்டை உருவாக்கும்போது பயன்படுத்தப்படும் கூடுதல் தொகுப்புக் கொடிகளைக் குறிப்பிடப் பயன்படுகிறது.
  • லினக்ஸ் இயங்குதளத்திற்கு, epoll_pwait2 செயல்பாடு சேர்க்கப்பட்டுள்ளது, இது நானோ விநாடி துல்லியத்துடன் காலக்கெடுவைக் குறிப்பிடுவதன் மூலம் epoll_wait இலிருந்து வேறுபடுகிறது.
  • புதிய செயல்முறைக்கான கட்டுப்பாட்டு முனையத்தை அமைக்கும் போது பந்தய நிலைமைகளை அகற்ற posix_spawn_file_actions_addtcsetpgrp_np செயல்பாடு சேர்க்கப்பட்டது.
  • Glibc மற்றும் GCC 12+ உடன் தொகுக்கப்பட்ட பயன்பாடுகளுக்கு, “_FORTIFY_SOURCE=3” பாதுகாப்பு பயன்முறை செயல்படுத்தப்படுகிறது, இது string.h ஹெடர் கோப்பில் வரையறுக்கப்பட்ட சரம் செயல்பாடுகளை இயக்கும் போது சாத்தியமான இடையக வழிதல்களைக் கண்டறியும். “_FORTIFY_SOURCE=2” பயன்முறையில் உள்ள வேறுபாடு கூடுதல் சரிபார்ப்புகளுக்கு வரும், இது செயல்திறன் குறைவதற்கு வழிவகுக்கும்.
  • நினைவக வரம்புகளுக்கான சுட்டிகளைச் சரிபார்க்கப் பயன்படுத்தப்படும் Intel MPX (நினைவகப் பாதுகாப்பு நீட்டிப்புகள்) க்கான ஆதரவு நிறுத்தப்பட்டது (இந்தத் தொழில்நுட்பம் பரவலாக இல்லை மற்றும் ஏற்கனவே GCC மற்றும் LLVM இலிருந்து அகற்றப்பட்டது).
  • ப்ரீலிங்க் மெக்கானிசம் மற்றும் அதனுடன் தொடர்புடைய சூழல் மாறிகள் LD_TRACE_PRELINKING மற்றும் LD_USE_LOAD_BIAS ஆகியவை நிராகரிக்கப்பட்டன, மேலும் அவை எதிர்கால வெளியீட்டில் அகற்றப்படும்.

    பாதிப்புகள் சரி செய்யப்பட்டது:

    • CVE-2022-23218, CVE-2022-23219 – svcunix_create மற்றும் clnt_create செயல்பாடுகளில் இடையக வழிதல், நகலெடுக்கப்பட்ட தரவின் அளவைச் சரிபார்க்காமல் கோப்புப்பெயர் அளவுருவின் உள்ளடக்கங்களை அடுக்கில் நகலெடுப்பதால் ஏற்படுகிறது. ஸ்டாக் பாதுகாப்பு இல்லாமல் மற்றும் "யூனிக்ஸ்" நெறிமுறையைப் பயன்படுத்தி உருவாக்கப்பட்ட பயன்பாடுகளுக்கு, மிக நீண்ட கோப்புப் பெயர்களைச் செயலாக்கும்போது பாதிப்பு தாக்குபவர் குறியீட்டை செயல்படுத்த வழிவகுக்கும்.
    • CVE-2021-3998 என்பது ரியல்பாத்() செயல்பாட்டில், சில நிபந்தனைகளின் கீழ், ஸ்டேக்கில் இருந்து சுத்தம் செய்யப்படாத எஞ்சிய தரவைக் கொண்ட தவறான மதிப்பை திரும்பப் பெறுவதால் ஏற்படும் பாதிப்பு ஆகும். SUID-root fusermount நிரலுக்கு, செயலி நினைவகத்திலிருந்து முக்கியமான தகவலைப் பெற, எடுத்துக்காட்டாக, சுட்டிகள் பற்றிய தகவலைப் பெற, பாதிப்பைப் பயன்படுத்தலாம்.
    • CVE-2021-3999 - getcwd() செயல்பாட்டில் ஒற்றை-பைட் இடையக வழிதல். 1995 ஆம் ஆண்டு முதல் இருக்கும் ஒரு பிழையால் இந்த பிரச்சனை ஏற்படுகிறது. ஒரு ஓவர்ஃப்ளோவை ஏற்படுத்த, ஒரு தனி மவுண்ட் பாயிண்ட் நேம்ஸ்பேஸில் உள்ள "/" கோப்பகத்தில் chdir() ஐ அழைக்கவும்.

    ஆதாரம்: opennet.ru

கருத்தைச் சேர்