إصدار مكتبة النظام Glibc 2.34

بعد ستة أشهر من التطوير ، تم نشر إصدار مكتبة GNU C (glibc) 2.34 ، والتي تتوافق تمامًا مع متطلبات معايير ISO C11 و POSIX.1-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.
  • يوفر القدرة على استخدام نوع time_t 64 بت في التكوينات التي تستخدم تقليديًا نوع time_t 32 بت. في مثل هذه التكوينات، على سبيل المثال في أنظمة x86، يظل الإعداد الافتراضي هو time_t 32 بت، ولكن يمكن الآن تغيير هذا السلوك باستخدام الماكرو "_TIME_BITS". هذه الميزة متاحة فقط على الأنظمة التي تحتوي على الإصدار 5.1 من Linux kernel على الأقل.
  • تمت إضافة وظيفة _Fork، وهي بديل لوظيفة fork التي تلبي متطلبات "async-signal-safe"، أي. السماح بالاتصال الآمن من معالجات الإشارة. أثناء تنفيذ _Fork، يتم إنشاء الحد الأدنى من البيئة الكافية لاستدعاء الوظائف في معالجات الإشارة مثل الرفع والتنفيذ دون تضمين ميزات قد تغير الأقفال أو الحالة الداخلية. سيتم تعريف استدعاء _Fork في إصدار مستقبلي لمعيار POSIX، ولكن في الوقت الحالي تم تضمينه كملحق GNU.
  • بالنسبة لمنصة Linux، تم تنفيذ وظيفة execveat، والتي تسمح لك بتشغيل ملف قابل للتنفيذ من واصف ملف مفتوح. يتم استخدام الوظيفة الجديدة أيضًا في تنفيذ استدعاء fexecve، الذي لا يتطلب pseudo-FS /proc مثبتًا عند بدء التشغيل.
  • تمت إضافة وظيفة timespec_getres، المحددة في مسودة معيار ISO C2X، والتي تعمل على توسيع وظيفة timespec_get بقدرات مشابهة لوظيفة POSIX Clock_getres.
  • تمت إضافة وظيفة Close_range()، والتي تسمح للعملية بإغلاق نطاق كامل من واصفات الملفات المفتوحة مرة واحدة. الوظيفة متاحة على الأنظمة التي تحتوي على Linux kernel بالإصدار 5.9 على الأقل.
  • تمت إضافة وظائف Closefrom وposix_spawn_file_actions_add Closefrom_np، مما يسمح لك بإغلاق جميع واصفات الملفات مرة واحدة، والتي يكون عددها أكبر من أو يساوي القيمة المحددة.
  • في الوضعين "_DYNAMIC_STACK_SIZE_SOURCE" و"_GNU_SOURCE"، لم تعد PTHREAD_STACK_MIN وMINSIGSTKSZ وSIGSTKSZ ثوابت، مما يسمح بدعم مجموعات التسجيل ذات الحجم الديناميكي مثل تلك المتوفرة في ملحق ARM SVE.
  • ينفذ الرابط خيار "--list-diagnostics" لعرض المعلومات المتعلقة بعمليات تعريف IFUNC (وظيفة غير مباشرة) واختيار الدليل الفرعي glibc-hwcaps.
  • تم تنفيذ الماكرو __STDC_WANT_IEC_60559_EXT__، وهو مصمم للتحقق من وجود الوظائف المحددة في الملحق F من مواصفات ISO C2X.
  • بالنسبة لأنظمة powerpc64*، تم تنفيذ خيار "--disable-scv"، والذي يسمح لك ببناء glibc دون دعم تعليمات scv.
  • يتم ترك الحد الأدنى فقط من وحدات gconv الأساسية في ملف gconv-modules، ويتم نقل الباقي إلى ملف إضافي gconv-modules-extra.conf، الموجود في دليل gconv-modules.d.
  • بالنسبة لنظام التشغيل 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_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res _الاستعلام عن الاسم، res_queriesmatch، res_randomid، Sym_ntop وsym_ntos وsym_ston) و (ns_datetosecs، 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_setrobust وsched_yield بدلاً من ذلك.
  • توقف عن استخدام الروابط الرمزية لربط الكائنات المشتركة المثبتة بإصدار 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 (برنامج التخزين المؤقت لخادم الأسماء) بسبب الاستدعاء المزدوج للوظيفة المجانية عند معالجة طلبات netgroup المعدة خصيصًا.
    • CVE-2021-33574: الوصول إلى منطقة الذاكرة المحررة بالفعل (الاستخدام بعد الاستخدام) في وظيفة mq_notify عند استخدام نوع الإشعار SIGEV_THREAD مع سمة مؤشر الترابط التي تم تعيين قناع تقارب بديل لوحدة المعالجة المركزية (CPU) لها. يمكن أن تؤدي المشكلة إلى حدوث عطل، لكن لا يمكن استبعاد خيارات الهجوم الأخرى.
    • CVE-2021-35942: يمكن أن يؤدي تجاوز حجم المعلمة في وظيفة wordexp إلى تعطل التطبيق.

المصدر: opennet.ru

إضافة تعليق