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