
إصدار مصحح من مكتبة محلل Expat XML يعالج الثغرة CVE-2022-23852، وهي ثغرة قراءة زائدة عن الحد للمخزن المؤقت في الكومة في دالة doContent، لتكامل AOSP 10 r33.
هذه هي مكتبة إكسبات، وهي مكتبة بلغة C لتحليل XML، بدأها جيمس كلارك في عام 1997. إكسبات هو محلل XML موجه نحو التدفق. وهذا يعني أنك تسجل معالجات مع المحلل قبل بدء التحليل. يتم استدعاء هذه المعالجات عندما يكتشف المحلل الهياكل المرتبطة بها في المستند الذي يتم تحليله. العلامة الافتتاحية هي مثال على نوع الهياكل التي يمكنك تسجيل معالجات لها.
يجب على مستخدمي Windows استخدام
حزمة expat_win32،
التي تتضمن كلاً من المكتبات والملفات القابلة للتنفيذ المجمعة مسبقًا، وشفرة المصدر للمطورين.
إكسبات هو برنامج حر.
يمكنك نسخه وتوزيعه وتعديله بموجب شروط الترخيص
الموجود في الملف
COPYING
الموزع مع هذه الحزمة.
هذا الترخيص هو نفس ترخيص MIT/X Consortium.
إذا كنت تقوم ببناء إكسبات من نسخة مسحوبة من مستودع Git، تحتاج إلى تشغيل برنامج نصي يولد برنامج التهيئة باستخدام أدوات GNU autoconf و libtool. للقيام بذلك، يجب أن يكون لديك autoconf 2.58 أو أحدث. قم بتشغيل البرنامج النصي هكذا:
./buildconf.sh
بمجرد القيام بذلك، اتبع نفس التعليمات الخاصة بالبناء من توزيعة مصدرية.
لبناء إكسبات من توزيعة مصدرية، قم أولاً بتشغيل برنامج shell للتهيئة في دليل التوزيعة الأعلى:
./configure
هناك العديد من الخيارات التي يمكنك تقديمها إلى configure (والتي يمكنك
اكتشافها بتشغيل configure مع الخيار --help). لكن
الأكثر أهمية هو الذي يحدد دليل التثبيت.
بشكل افتراضي، سيقوم برنامج التهيئة بإعداد الأمور لتثبيت
libexpat في /usr/local/lib، و expat.h في /usr/local/include، و
xmlwf في /usr/local/bin. إذا كنت، على سبيل المثال، تفضل التثبيت
في /home/me/mystuff/lib، و /home/me/mystuff/include، و
/home/me/mystuff/bin، يمكنك إخبار configure بذلك عن طريق:
./configure --prefix=/home/me/mystuff
خيار آخر مثير للاهتمام هو تمكين دعم الأعداد الصحيحة 64 بت لأرقام الأسطر والأعمدة وفهرس البايت الكلي:
./configure CPPFLAGS=-DXML_LARGE_SIZE
ومع ذلك، فإن مثل هذا التعديل سيكون تغييرًا مكسورًا لـ ABI وبالتالي لا ينصح به للاستخدام العام — على سبيل المثال كجزء من توزيعة Linux — بل للبنى ذات المتطلبات الخاصة.
بعد تشغيل برنامج التهيئة، سيقوم الأمر make ببناء
الأشياء و make install سيقوم بتثبيت الأشياء في مكانها
الصحيح. ألق نظرة على Makefile لمعرفة المزيد عن خيارات make
الإضافية. لاحظ أنك تحتاج إلى صلاحية الكتابة في
الدلائل التي سيتم التثبيت فيها.
إذا كنت مهتمًا ببناء إكسبات لتوفير معلومات المستند
بتشفير UTF-16 بدلاً من UTF-8 الافتراضي، اتبع هذه
التعليمات (بعد تشغيل make distclean).
يرجى ملاحظة أننا نضبط باستخدام --without-xmlwf لأن xmlwf لا يدعم
وضع التجميع هذا (حتى الآن):
قم بتعديل جماعي لملفات Makefile.am لاستخدام libexpatw.la كاسم مكتبة:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
قم بتشغيل automake لإعادة كتابة ملفات Makefile.in:
automake
لإخراج UTF-16 كنوع unsigned short (ونسخ الإصدار/الخطأ كـ char)،
قم بتشغيل:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
لإخراج UTF-16 كـ wchar_t (بما في ذلك نسخ الإصدار/الخطأ)، قم بتشغيل:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
ملاحظة: يتطلب الأخير ترجمة libc مع -fshort-wchar أيضًا.
قم بتشغيل make (الذي يستبعد xmlwf).
يتم دعم استخدام DESTDIR. يعمل كما يلي:
make install DESTDIR=/path/to/image
يتجاوز DESTDIR المحدد في ملف makefile، لأن أولوية تعيين المتغير هي
ملاحظة: ينطبق هذا فقط على مكتبة إكسبات نفسها، بناء إصدارات UTF-16 من xmlwf والاختبارات غير مدعوم حاليًا.
عند استخدام إكسبات مع مشروع يستخدم autoconf للتكوين، يمكنك
استخدام الماكرو الاستقصائي في conftools/expat.m4 لتحديد كيفية
تضمين إكسبات. راجع التعليقات في أعلى ذلك الملف لمزيد من المعلومات.
يتوفر دليل مرجعي في الملف doc/reference.html في هذه التوزيعة.
قم بتشغيل make install (مرة أخرى، يستبعد xmlwf).