
مكتبة C لتحليل XML موجه للتيار مع التركيز على تحليل الثغرات واستغلال CVE-2022-43680، مما يتيح الفز والاختبار الأمني على المستوى الثنائي.
Expat، الإصدار 2.1.0
هذه هي مكتبة Expat، وهي مكتبة بلغة C لتحليل XML، كتبها جيمس كلارك. Expat هو محلل XML موجه للتيار. وهذا يعني أنك تسجل معالجات مع المحلل قبل بدء التحليل. يتم استدعاء هذه المعالجات عندما يكتشف المحلل الهياكل المرتبطة في المستند الذي يتم تحليله. علامة البداية مثال على نوع الهياكل التي يمكنك تسجيل معالجات لها.
يجب على مستخدمي ويندوز استخدام حزمة expat_win32bin، التي تتضمن كل من المكتبات والملفات التنفيذية المجمعة مسبقًا، والكود المصدري للمطورين.
Expat هو برنامج مجاني. يمكنك نسخه وتوزيعه وتعديله بموجب شروط الترخيص الموجود في الملف COPYING الموزع مع هذه الحزمة. هذا الترخيص هو نفسه ترخيص MIT/X Consortium.
إصدارات Expat التي تحتوي على رقم إصدار ثانوي فردي (الرقم الأوسط في الإصدار أعلاه) هي إصدارات تطويرية ويجب اعتبارها برامج تجريبية. الإصدارات ذات الأرقام الثانوية الزوجية تهدف إلى أن تكون برامج بجودة إنتاجية.
إذا كنت تقوم ببناء Expat من نسخة مستخرجة من مستودع CVS، فأنت بحاجة إلى تشغيل سكريبت يقوم بتوليد سكريبت configure باستخدام أدوات GNU autoconf و libtool. للقيام بذلك، يجب أن يكون لديك autoconf 2.58 أو أحدث. قم بتشغيل السكريبت كما يلي:
./buildconf.sh
بمجرد الانتهاء من ذلك، اتبع نفس التعليمات المتبعة للبناء من توزيعة مصدرية.
لبناء Expat من توزيعة مصدرية، قم أولاً بتشغيل سكريبت shell للتكوين في دليل التوزيعة العلوي:
./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
ومع ذلك، فإن مثل هذا التعديل سيكون تغييرًا جذريًا في ABI، ولذلك لا يوصى به للاستخدام العام - على سبيل المثال كجزء من توزيعة لينكس - بل للبناءات ذات المتطلبات الخاصة.
بعد تشغيل سكريبت configure، سيقوم أمر "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/