
C लाइब्रेरी जो स्ट्रीम-आधारित XML पार्सिंग के लिए है, जिसमें CVE-2022-43680 की भेद्यता विश्लेषण और शोषण पर ध्यान केंद्रित किया गया है, जिससे फ़ज़िंग और बाइनरी-स्तरीय सुरक्षा परीक्षण संभव हो सके।
Expat, रिलीज़ 2.1.0
यह Expat है, XML पार्स करने के लिए एक C लाइब्रेरी, जिसे James Clark ने लिखा है। Expat एक स्ट्रीम-ओरिएंटेड XML पार्सर है। इसका मतलब है कि आप पार्स शुरू करने से पहले पार्सर के साथ हैंडलर पंजीकृत करते हैं। जब पार्सर दस्तावेज़ में संबंधित संरचनाओं का पता लगाता है तो ये हैंडलर कॉल किए जाते हैं। एक स्टार्ट टैग उन संरचनाओं का एक उदाहरण है जिनके लिए आप हैंडलर पंजीकृत कर सकते हैं।
Windows उपयोगकर्ताओं को expat_win32bin पैकेज का उपयोग करना चाहिए, जिसमें प्रीकंपाइल्ड लाइब्रेरी और एक्ज़ीक्यूटेबल दोनों शामिल हैं, और डेवलपर्स के लिए स्रोत कोड भी।
Expat मुक्त सॉफ्टवेयर है। आप इस पैकेज के साथ वितरित COPYING फ़ाइल में निहित लाइसेंस की शर्तों के तहत इसकी प्रतिलिपि, वितरण और संशोधन कर सकते हैं। यह लाइसेंस MIT/X Consortium लाइसेंस के समान है।
Expat के जिन संस्करणों का माइनर वर्जन विषम है (ऊपर रिलीज़ में मध्य संख्या), वे डेवलपमेंट रिलीज़ हैं और उन्हें बीटा सॉफ्टवेयर माना जाना चाहिए। सम माइनर वर्जन संख्या वाली रिलीज़ उत्पादन-ग्रेड सॉफ्टवेयर के लिए अभिप्रेत हैं।
यदि आप CVS रिपॉजिटरी से चेक-आउट से Expat बना रहे हैं, तो आपको एक स्क्रिप्ट चलाने की आवश्यकता है जो GNU autoconf और libtool टूल का उपयोग करके configure स्क्रिप्ट उत्पन्न करती है। ऐसा करने के लिए, आपके पास 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
हालांकि, ऐसा संशोधन ABI के लिए एक ब्रेकिंग परिवर्तन होगा और इसलिए सामान्य उपयोग के लिए अनुशंसित नहीं है - जैसे कि Linux वितरण के हिस्से के रूप में - बल्कि विशेष आवश्यकताओं वाले बिल्डों के लिए।
configure स्क्रिप्ट चलाने के बाद, "make" कमांड चीज़ों का निर्माण करेगा और "make install" चीज़ों को उनके उचित स्थान पर स्थापित करेगा। अतिरिक्त "make" विकल्पों के बारे में जानने के लिए "Makefile" देखें। ध्यान दें कि आपके पास उन निर्देशिकाओं में लिखने की अनुमति होनी चाहिए जिनमें चीज़ें स्थापित की जाएंगी।
यदि आप डिफ़ॉल्ट UTF-8 के बजाय UTF-16 एन्कोडिंग में दस्तावेज़ जानकारी प्रदान करने के लिए Expat बनाने में रुचि रखते हैं, तो इन निर्देशों का पालन करें ("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 के लिए डिफ़ॉल्ट मान है, और बाकी मेक फ़ाइल केवल DESTDIR का उपयोग करती है। यह इस प्रकार काम करता है: $ make install DESTDIR=/path/to/image मेक-फ़ाइल में सेट DESTDIR को ओवरराइड करता है, जबकि दोनों $ INSTALL_ROOT=/path/to/image make install $ make install INSTALL_ROOT=/path/to/image DESTDIR=$(INSTALL_ROOT) का उपयोग करते हैं, भले ही DESTDIR अंततः पर्यावरण में परिभाषित हो, क्योंकि चर-सेटिंग प्राथमिकता है
नोट: यह केवल Expat लाइब्रेरी पर ही लागू होता है, xmlwf और परीक्षणों के UTF-16 संस्करण बनाना वर्तमान में समर्थित नहीं है।
Solaris उपयोगकर्ताओं के लिए नोट: "ar" कमांड आमतौर पर "/usr/ccs/bin" में स्थित होता है, जो डिफ़ॉल्ट PATH में नहीं है। आपको "make" कमांड के लिए इसे अपने पथ में जोड़ने की आवश्यकता होगी, और संभवतः GNU make पर भी स्विच करना होगा ("make" जो /usr/ccs/bin में पाया जाता है वह ठीक से काम नहीं करता प्रतीत होता है -- जाहिर तौर पर यह .PHONY निर्देशों को नहीं समझता है)। यदि आप ksh या bash का उपयोग कर रहे हैं, तो निर्माण के लिए इस कमांड का उपयोग करें:
PATH=/usr/ccs/bin:$PATH make
जब Expat का उपयोग किसी ऐसे प्रोजेक्ट के साथ किया जा रहा है जो कॉन्फ़िगरेशन के लिए autoconf का उपयोग करता है, तो आप Expat को शामिल करने का तरीका निर्धारित करने के लिए conftools/expat.m4 में प्रोबिंग मैक्रो का उपयोग कर सकते हैं। अधिक जानकारी के लिए उस फ़ाइल के शीर्ष पर टिप्पणियाँ देखें।
एक संदर्भ मैनुअल इस वितरण में doc/reference.html फ़ाइल में उपलब्ध है।
इस प्रोजेक्ट का होमपेज http://www.libexpat.org/ है। वहाँ बग रिपोर्ट पेज से जुड़ने के लिए लिंक हैं। यदि आपको ब्राउज़र की सुविधा न होने पर बग की रिपोर्ट करनी हो, तो आप [email protected] पर ईमेल द्वारा भी बग रिपोर्ट भेज सकते हैं।
भविष्य के expat विकास की दिशा से संबंधित चर्चा [email protected] पर होती है। इस सूची और अन्य Expat-संबंधित सूचियों के पुरालेख निम्नलिखित पर पाए जा सकते हैं:
http://mail.libexpat.org/mailman/listinfo