يأتي Glibc 2.35 مع تحسينات وإصلاحات للأخطاء والمزيد

بعد ستة أشهر من التطوير تم الإعلان عن إصدار النسخة الجديدة من Glibc 2.35 فيها يتضمن إصلاحات من 66 مطورًا ومن التحسينات التي تم تنفيذها يمكننا أن نجد أنه تمت إضافة الدعم للغة "C.UTF-8" ، والتي تتضمن عمليات تجميع لجميع رموز Unicode ، ولكنها تقتصر على استخدام نطاقات ASCII في وظائف fnmatch و regexec و regcomp للحفظ الفراغ.

تبلغ مساحة اللغة 400 كيلو بايت تقريبًا ، منها 346 كيلو بايت عبارة عن بيانات LC_CTYPE لـ Unicode ، ويجب تثبيتها بشكل منفصل (غير مضمنة في Glibc). تم تحديث بيانات الترميز ومعلومات نوع الحرف وجداول التحويل الصوتي لدعم مواصفات Unicode 14.0.0.

التغيير الآخر الذي يبرز هو ذلك ص تنفيذ الوظائف ووحدات الماكرو التي تقرب النتيجة إلى نوع أضيق ، بالإضافة إلى تنفيذ الوظائف ووحدات الماكرو للعثور على الحد الأدنى والحد الأقصى لأرقام الفاصلة العائمة لأنواع Float و long double و_FloatN و _FloatNx الموضحة في مواصفات IEEE 754-2019.

للوظائف exp10 ، تتم إضافة وحدات الماكرو المقابلة إلى ملف الرأس، التي لا ترتبط بأنواع معينة ، بالإضافة إلى إضافة الماكرو _PRINTF_NAN_LEN_MAX إلى ، المقترحة في مشروع معيار ISO C2X.

نظام الربط الديناميكي يطبق خوارزمية تصنيف جديدة DSO باستخدام البحث المتعمق (DFS) لمعالجة مشاكل الأداء عند معالجة تبعيات الحلقة. لتحديد خوارزمية فرز DSO ، تم اقتراح المعامل glibc.rtld.dynamic_sort ، والذي يمكن ضبطه على "1" للرجوع إلى الخوارزمية السابقة.

بالإضافة إلى أنه إضافة دعم لوظيفة جديدة "__memcmpeq" إلى ABI ، الذي يستخدمه المترجمون لتحسين استخدام "memcmp" عندما يتم استخدام القيمة المعادة لهذه الوظيفة فقط للتحقق من حالة إكمال العملية.

ال دعم التسجيل التلقائي للخيط باستخدام استدعاء نظام rseq (التسلسلات القابلة لإعادة التشغيل) المقدم منذ Linux kernel 4.18. استدعاء نظام rseq يسمح بتنظيم التنفيذ المستمر لمجموعة من التعليمات الذي لا يتم مقاطعته ويلتزم بالنتيجة مع آخر بيان في المجموعة. بشكل أساسي ، يوفر وسيلة لتنفيذ ذري سريع جدًا للعمليات التي ، إذا تم مقاطعتها بواسطة خيط آخر ، يتم تنظيفها وإعادة المحاولة.

من ناحية أخرى ، فإنه يوفر تجميع افتراضي لجميع الملفات القابلة للتنفيذ من البرامج المضمنة ومجموعة اختبار في وضع PIE (موضع تنفيذي مستقل).

لتعطيل هذا السلوك ، يتم توفير الخيار "–disable-default-pie"، بالإضافة إلى Linux ، تمت إضافة إعداد glibc.malloc.hugetlb لتغيير تنفيذ malloc لاستخدام استدعاء النظام madvise مع علامة MADV_HUGEPAGE لـ mmap و sbrk ، أو استخدام صفحات الذاكرة الكبيرة مباشرةً عن طريق تحديد علامة MAP_HUGETLB في مكالمات mmap.

في الحالة الأولى ، يمكن تحسين الأداء باستخدام Huge Pages الشفافة في وضع madvise ، وفي الحالة الثانية ، يمكنك استخدام الصفحات الضخمة المحجوزة للنظام (Huge Pages).

وتجدر الإشارة أيضًا إلى أنه تم إصلاح بعض الثغرات الأمنية في هذا الإصدار الجديد:

  • CVE-2022-23218 ، CVE-2022-23219: تجاوز سعة المخزن المؤقت في وظائف svcunix_create و clnt_create بسبب نسخ محتويات معلمة اسم الملف إلى المكدس دون التحقق من حجم البيانات المنسوخة. بالنسبة للتطبيقات التي تم إنشاؤها بدون حماية المكدس وباستخدام بروتوكول "unix" ، يمكن أن تؤدي الثغرة الأمنية إلى تنفيذ تعليمات برمجية ضارة عند معالجة أسماء ملفات طويلة جدًا.
  • CVE-2021-3998: ثغرة أمنية في دالة realpath () ناتجة عن إرجاع قيمة غير صحيحة في ظل ظروف معينة تحتوي على بيانات متبقية غير نظيفة من المكدس. بالنسبة لبرنامج fusermount SUID-root ، يمكن استخدام الثغرة الأمنية للحصول على معلومات حساسة من ذاكرة العملية ، على سبيل المثال ، للحصول على معلومات المؤشر.
  • CVE-2021-3999: تجاوز سعة المخزن المؤقت للبايت الواحد في دالة getcwd (). سبب المشكلة هو خطأ موجود منذ عام 1995. لاستدعاء تجاوز ، في مساحة اسم نقطة تحميل منفصلة ، فقط قم باستدعاء chdir () في الدليل "/".

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها ، يمكنك التحقق من التفاصيل في الرابط التالي.


كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.