
إصدار مصحح من محلل Expat XML لـ AOSP10، يعالج CVE-2022-25236. يوفر الكود المصدري لتحليل الثغرات ومراجعة تعليمية للإصلاح.
هذه هي مكتبة Expat، وهي مكتبة بلغة C لتحليل XML، بدأها James Clark في عام 1997. Expat هي أداة تحليل XML موجهة للتيار (stream-oriented). هذا يعني أنك تسجل معالجات (handlers) مع المحلل قبل بدء التحليل. يتم استدعاء هذه المعالجات عندما يكتشف المحلل الهياكل المرتبطة بها في المستند الجاري تحليله. وسم البداية (start tag) هو مثال على نوع الهياكل التي يمكنك تسجيل معالجات لها.
يجب على مستخدمي Windows استخدام حزمة
expat_win32،
والتي تتضمن كلاً من المكتبات والبرامج القابلة للتنفيذ المجمّعة مسبقاً، وكود المصدر
للمطورين.
Expat هي برمجيات حرة.
يمكنك نسخها وتوزيعها وتعديلها بموجب شروط الترخيص
الموجودة في الملف
COPYING
الموزع مع هذه الحزمة.
هذا الترخيص هو نفسه ترخيص MIT/X Consortium.
إذا كنت تقوم ببناء Expat من نسخة مسحوبة (check-out) من مستودع Git، فأنت بحاجة إلى تشغيل سكريبت يقوم بإنشاء سكريبت التهيئة (configure) باستخدام أدوات GNU autoconf و libtool. للقيام بذلك، يجب أن يكون لديك autoconf الإصدار 2.58 أو أحدث. قم بتشغيل السكريبت بهذه الطريقة:
./buildconf.sh
بمجرد الانتهاء من ذلك، اتبع نفس الإرشادات المتبعة للبناء من توزيعة المصدر.
لإنشاء Expat من توزيعة المصدر، قم أولاً بتشغيل سكريبت شل التهيئة في دليل التوزيعة العلوي:
./configure
هناك العديد من الخيارات التي يمكنك تقديمها لأمر configure (والتي يمكنك
اكتشافها عن طريق تشغيل configure مع الخيار --help). لكن الخيار
الأكثر أهمية هو الذي يحدد دليل التثبيت.
افتراضياً، سيقوم سكريبت configure بإعداد الأمور لتثبيت
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
ومع ذلك، فإن مثل هذا التعديل سيكون تغييراً كاسراً (breaking change) لواجهة ABI وبالتالي لا يُنصح به للاستخدام العام — على سبيل المثال كجزء من توزيعة لينكس — بل للبنى ذات المتطلبات الخاصة.
بعد تشغيل سكريبت configure، سيقوم أمر make ببناء
الأشياء وسيقوم make install بتثبيتها في موقعها
المناسب. ألق نظرة على Makefile لمعرفة المزيد عن خيارات
make الإضافية. لاحظ أنك بحاجة إلى صلاحية الكتابة في
الدلائل التي سيتم التثبيت فيها.
إذا كنت مهتماً ببناء Expat لتوفير معلومات المستند
بترميز 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).
قم بتشغيل make install (مرة أخرى، يستثني xmlwf).
استخدام DESTDIR مدعوم. يعمل على النحو التالي:
make install DESTDIR=/path/to/image
يتجاوز قيمة DESTDIR المحددة داخل الملف Makefile، لأن أولوية تعيين المتغير هي
ملاحظة: ينطبق هذا فقط على مكتبة Expat نفسها، بناء نسخ UTF-16 من xmlwf والاختبارات غير مدعوم حالياً.
عند استخدام Expat مع مشروع يستخدم autoconf للتهيئة، يمكنك
استخدام ماكرو الكشف (probing macro) في conftools/expat.m4 لتحديد كيفية
تضمين Expat. راجع التعليقات في أعلى هذا الملف لمزيد من
المعلومات.
يتوفر دليل مرجعي في ملف doc/reference.html في هذه
التوزيعة.