
مستودع الكود المصدري لـ Expat 2.1.0، وهي مكتبة محلل XML موجهة للتدفق، مع التركيز على تحليل ومعالجة CVE-2022-43680.
Expat ، الإصدار 2.1.0
هذه هي Expat ، مكتبة C لتحليل XML، كتبها جيمس كلارك. Expat محلل XML موجه نحو التدفق. وهذا يعني أنك تسجل معالجات مع المحلل قبل بدء التحليل. يتم استدعاء هذه المعالجات عندما يكتشف المحلل الهياكل المرتبطة في المستند الذي يتم تحليله. العلامة الافتتاحية هي مثال على نوع الهياكل التي يمكنك تسجيل معالجات لها.
يجب على مستخدمي Windows استخدام حزمة expat_win32bin، والتي تتضمن كل من المكتبات والملفات التنفيذية المترجمة مسبقًا، بالإضافة إلى الكود المصدري للمطورين.
Expat هي برمجيات حرة. يمكنك نسخها وتوزيعها وتعديلها وفقًا لشروط الترخيص الموجود في ملف COPYING الموزع مع هذه الحزمة. هذا الترخيص هو نفس ترخيص MIT/X Consortium.
إصدارات Expat التي تحتوي على رقم إصدار ثانوي فردي (الرقم الأوسط في الإصدار أعلاه) هي إصدارات تطويرية ويجب اعتبارها برمجيات تجريبية. الإصدارات ذات الأرقام الثانوية الزوجية مخصصة لتكون برمجيات بدرجة إنتاجية.
إذا كنت تقوم ببناء Expat من نسخة مسحوبة من مستودع CVS، فستحتاج إلى تشغيل سكريبت يقوم بإنشاء سكريبت التكوين باستخدام أدوات GNU autoconf و libtool. للقيام بذلك، يجب أن يكون لديك autoconf 2.58 أو أحدث. قم بتشغيل السكريبت على النحو التالي:
./buildconf.sh
بمجرد القيام بذلك، اتبع نفس الإرشادات المتبعة للبناء من توزيعة مصدرية.
لبناء Expat من توزيعة مصدرية، تقوم أولاً بتشغيل سكريبت shell للتكوين في دليل التوزيعة الأعلى مستوى:
./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 --prefix=/home/me/mystuff
خيار آخر مثير للاهتمام هو تمكين دعم الأعداد الصحيحة 64 بت لأرقام الأسطر والأعمدة ومؤشر البايت الإجمالي:
./configure CPPFLAGS=-DXML_LARGE_SIZE
ومع ذلك، فإن مثل هذا التعديل سيكون تغييرًا مكسورًا لـ ABI وبالتالي لا يُنصح به للاستخدام العام - على سبيل المثال كجزء من توزيعة لينكس - بل للبنى ذات المتطلبات الخاصة.
بعد تشغيل سكريبت التكوين، سيقوم أمر "make" ببناء الأشياء وسيقوم "make install" بتثبيت الأشياء في مكانها الصحيح. ألق نظرة على "Makefile" لمعرفة المزيد حول خيارات "make". لاحظ أنك تحتاج إلى صلاحية الكتابة في الدلائل التي سيتم التثبيت فيها.
إذا كنت مهتمًا ببناء Expat لتوفير معلومات المستند بترميز UTF-16 بدلاً من UTF-8 الافتراضي، اتبع هذه الإرشادات (بعد تشغيل "make distclean"):
1. للحصول على مخرجات UTF-16 كـ unsigned short (وسلاسل الإصدارات/الأخطاء
كـ char)، قم بتشغيل:
./configure CPPFLAGS=-DXML_UNICODE
للحصول على مخرجات UTF-16 كـ wchar_t (بما في ذلك سلاسل الإصدارات/الأخطاء)،
قم بتشغيل:
./configure CFLAGS="-g -O2 -fshort-wchar" \
CPPFLAGS=-DXML_UNICODE_WCHAR_T
2. قم بتحرير ملف MakeFile، بتغيير:
LIBRARY = libexpat.la
إلى:
LIBRARY = libexpatw.la
(لاحظ حرف "w" الإضافي في اسم المكتبة.)
3. قم بتشغيل "make buildlib" (الذي يبني المكتبة فقط).
أو، لتوفير الخطوة 2، قم بتشغيل "make buildlib LIBRARY=libexpatw.la".
4. قم بتشغيل "make installlib" (الذي يثبت المكتبة فقط).
أو، إذا تم حذف الخطوة 2، قم بتشغيل "make installlib LIBRARY=libexpatw.la".
استخدام DESTDIR أو INSTALL_ROOT مفعل، مع كون INSTALL_ROOT هو القيمة الافتراضية لـ DESTDIR، وبقية ملف make يستخدم DESTDIR فقط. يعمل كما يلي: $ make install DESTDIR=/path/to/image يتجاوز DESTDIR المحدد داخل ملف make، بينما كلا من $ INSTALL_ROOT=/path/to/image make install $ make install INSTALL_ROOT=/path/to/image يستخدمان DESTDIR=$(INSTALL_ROOT)، حتى إذا تم تعريف DESTDIR في النهاية في البيئة، لأن أولوية تعريف المتغير هي
ملاحظة: هذا ينطبق فقط على مكتبة Expat نفسها، بناء إصدارات UTF-16 من xmlwf والاختبارات غير مدعوم حاليًا.
ملاحظة لمستخدمي Solaris: يوجد أمر "ar" عادةً في "/usr/ccs/bin"، وهو ليس في PATH الافتراضي. ستحتاج إلى إضافته إلى مسارك لأمر "make"، وربما أيضًا التبديل إلى GNU make (يبدو أن "make" الموجود في /usr/ccs/bin لا يعمل بشكل صحيح -- على ما يبدو أنه لا يفهم توجيهات .PHONY). إذا كنت تستخدم ksh أو bash، استخدم هذا الأمر للبناء:
PATH=/usr/ccs/bin:$PATH make
عند استخدام Expat مع مشروع يستخدم autoconf للتكوين، يمكنك استخدام ماكرو الاستقصاء في conftools/expat.m4 لتحديد كيفية تضمين Expat. راجع التعليقات في أعلى هذا الملف لمزيد من المعلومات.
يتوفر دليل مرجعي في ملف doc/reference.html في هذه التوزيعة.
الصفحة الرئيسية لهذا المشروع هي http://www.libexpat.org/. هناك روابط هناك لتوصلك بصفحة تقارير الأخطاء. إذا كنت بحاجة إلى الإبلاغ عن خطأ عندما لا يكون لديك وصول إلى متصفح، يمكنك أيضًا إرسال تقرير خطأ عبر البريد الإلكتروني إلى [email protected].
تجري المناقشات المتعلقة بتوجيه التطوير المستقبلي لـ Expat على [email protected]. يمكن العثور على أرشيفات هذه القائمة وقوائم أخرى متعلقة بـ Expat على:
http://mail.libexpat.org/mailman/listinfo/