
CVE-2023-5217 का प्रूफ-ऑफ-कॉन्सेप्ट रिपॉजिटरी libvpx VP8/VP9 कोडेक SDK के लिए, जो हीप बफर ओवरफ्लो कमजोरी को बिल्ड और टेस्ट वेक्टर सपोर्ट के साथ प्रदर्शित करता है।
README - 23 मार्च 2015
WebM VP8/VP9 कोडेक SDK में आपका स्वागत है!
एप्लिकेशन/लाइब्रेरी संकलित करना: उपयोग की जाने वाली बिल्ड प्रणाली autotools के समान है। बिल्डिंग में आम तौर पर आपके वांछित बिल्ड विकल्पों के साथ 'कॉन्फ़िगर' करना, फिर GNU make का उपयोग करके एप्लिकेशन बनाना शामिल है।
* सभी x86 लक्ष्यों के लिए Yasm[1] असेंबलर स्थापित होना आवश्यक है।
* सभी विंडोज बिल्ड के लिए Cygwin[2] स्थापित होना आवश्यक है।
* दस्तावेज़ निर्माण के लिए Doxygen[3] की आवश्यकता है। यदि आपके पास यह पैकेज नहीं है, तो install-docs विकल्प अक्षम कर दिया जाएगा।
* यूनिट टेस्ट के लिए डेटा डाउनलोड करने के लिए curl[4] और sha1sum की आवश्यकता है। sha1sum GNU coreutils के माध्यम से प्रदान किया जाता है, जो कई *nix प्लेटफार्मों के साथ-साथ MinGW और Cygwin पर डिफ़ॉल्ट रूप से स्थापित होता है। यदि coreutils उपलब्ध नहीं है, तो sha1sum का एक संगत संस्करण स्रोत[5] से बनाया जा सकता है। यदि यूनिट टेस्ट नहीं चलाए जा रहे हैं तो ये आवश्यकताएं वैकल्पिक हैं।
[1]: http://www.tortall.net/projects/yasm
[2]: http://www.cygwin.com
[3]: http://www.doxygen.org
[4]: http://curl.haxx.se
[5]: http://www.microbrew.org/tools/md5sha1sum/
2. आउट-ऑफ-ट्री बिल्ड आउट ऑफ ट्री बिल्ड एप्लिकेशन बनाने की एक समर्थित विधि है। आउट ऑफ ट्री बिल्ड के लिए, स्रोत ट्री को संकलन के दौरान उत्पन्न ऑब्जेक्ट फ़ाइलों से अलग रखा जाता है। उदाहरण के लिए:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. कॉन्फ़िगरेशन विकल्प 'configure' स्क्रिप्ट कई विकल्पों का समर्थन करती है। --help विकल्प का उपयोग समर्थित विकल्पों की सूची प्राप्त करने के लिए किया जा सकता है: $ ../libvpx/configure --help
armv6-darwin-gcc
armv6-linux-rvct
armv6-linux-gcc
armv6-none-rvct
arm64-darwin-gcc
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-vs11
armv7-win32-vs12
armv7s-darwin-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc32-darwin8-gcc
ppc32-darwin9-gcc
ppc32-linux-gcc
ppc64-darwin8-gcc
ppc64-darwin9-gcc
ppc64-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs7
x86-win32-vs8
x86-win32-vs9
x86-win32-vs10
x86-win32-vs11
x86-win32-vs12
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs8
x86_64-win64-vs9
x86_64-win64-vs10
x86_64-win64-vs11
x86_64-win64-vs12
universal-darwin8-gcc
universal-darwin9-gcc
universal-darwin10-gcc
universal-darwin11-gcc
universal-darwin12-gcc
universal-darwin13-gcc
universal-darwin14-gcc
generic-gnu
generic-gnu लक्ष्य, CROSS पर्यावरण चर के साथ मिलकर, उन आर्किटेक्चर को क्रॉस कंपाइल करने के लिए उपयोग किया जा सकता है जो स्पष्ट रूप से सूचीबद्ध नहीं हैं, यदि टूलचेन एक क्रॉस GNU (gcc/binutils) टूलचेन है। अन्य POSIX टूलचेन भी संभवतः काम करेंगे। उदाहरण के लिए, mipsel-linux-uclibc टूलचेन का उपयोग करके बनाने के लिए, निम्न कमांड का उपयोग किया जा सकता है (नोट, POSIX SH सिंटैक्स, अपने शेल के अनुसार अनुकूलित करें):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
इसके अलावा, पर्यावरण चर निर्दिष्ट करके आह्वान करने योग्य निष्पादन योग्य को ओवरराइड किया जा सकता है: CC, AR, LD, AS, STRIP, NM। CFLAGS, LDFLAGS, और ASFLAGS के साथ इन निष्पादन योग्यों को अतिरिक्त फ्लैग पारित किए जा सकते हैं।
VP8/VP9 परीक्षण वैक्टर: परीक्षण वैक्टर को configure चलाने के बाद बिल्ड सिस्टम का उपयोग करके डाउनलोड और सत्यापित किया जा सकता है। वैकल्पिक निर्देशिका निर्दिष्ट करने के लिए LIBVPX_TEST_DATA_PATH पर्यावरण चर का उपयोग किया जा सकता है।
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
समर्थन यह लाइब्रेरी एक ओपन सोर्स प्रोजेक्ट है जिसे इसके समुदाय द्वारा समर्थित किया जाता है। कृपया सहायता के लिए [email protected] पर ईमेल करें।