
مكتبة C لتحليل XML، تم تصحيحها لثغرة CVE-2022-25315، وتوفّر تحليل XML موجّهًا بالتدفق مع معالجات لمعالجة المستندات بكفاءة.
هذه هي مكتبة Expat، وهي مكتبة بلغة C لتحليل XML، بدأها جيمس كلارك في عام 1997. Expat هي محلل XML موجه نحو التدفق. وهذا يعني أنك تسجل معالجات مع المحلل قبل البدء في التحليل. يتم استدعاء هذه المعالجات عندما يكتشف المحلل الهياكل المرتبطة في المستند الذي يتم تحليله. علامة البداية هي مثال على نوع الهياكل التي قد تسجل لها معالجات.
يجب على مستخدمي Windows استخدام
حزمة expat_win32،
التي تتضمن كلاً من المكتبات والملفات التنفيذية المجمعة مسبقًا، والشفرة المصدرية للمطورين.
Expat هي برمجيات حرة.
يمكنك نسخها وتوزيعها وتعديلها بموجب شروط الترخيص
الموجودة في الملف
COPYING
الموزع مع هذه الحزمة.
هذا الترخيص هو نفسه ترخيص MIT/X Consortium.
إذا كنت تقوم ببناء Expat من تفريغ (check-out) من مستودع Git، فأنت بحاجة إلى تشغيل سكريبت يُنشئ سكريبت التهيئة باستخدام أدوات GNU autoconf و libtool. للقيام بذلك، يجب أن يكون لديك autoconf 2.58 أو أحدث. قم بتشغيل السكريبت على النحو التالي:
./buildconf.sh
بمجرد القيام بذلك، اتبع نفس التعليمات الخاصة بالبناء من توزيعة المصدر.
لبناء Expat من توزيعة المصدر، قم أولاً بتشغيل سكريبت shell الخاص بالتهيئة في دليل التوزيعة الأعلى:
./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
الإضافية. لاحظ أنك تحتاج إلى صلاحية الكتابة في
الدلائل التي سيتم التثبيت فيها.
إذا كنت مهتمًا ببناء 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 للتهيئة، يمكنك
استخدام ماكرو الاستكشاف في conftools/expat.m4 لتحديد كيفية
تضمين Expat. راجع التعليقات في أعلى ذلك الملف لمزيد من
المعلومات.
يتوفر دليل مرجعي في الملف doc/reference.html في هذه
التوزيعة.