Message ID | 20241219094524.3435317-1-hongxu.jia@windriver.com |
---|---|
State | New |
Headers | show |
Series | [V3,1/3] Use 7zip 2409 to replace p7zip 16.02 | expand |
Hello, Thanks for this patch, it looks much better than the one which we have started (and which is now obsolete and should be removed from master-next now) I have following problems with this patch however: - version needs to be 24.09, not 2409 (you can take SRC_URI hack from our patch) - where does the bash dependency come from? gpl-3 is not nice without a good explanation... Regards, Peter > -----Original Message----- > From: openembedded-devel@lists.openembedded.org <openembedded- > devel@lists.openembedded.org> On Behalf Of hongxu via > lists.openembedded.org > Sent: Thursday, December 19, 2024 10:45 > To: openembedded-devel@lists.openembedded.org > Subject: [oe] [PATCH V3 1/3] Use 7zip 2409 to replace p7zip 16.02 > > According to DOC/readme.txt [1]: > > 7-Zip and p7zip > =============== > Now there are two different ports of 7-Zip for Linux/macOS: > > 1) p7zip - another port of 7-Zip for Linux, made by an independent developer. > The latest version of p7zip now is 16.02, and that p7zip 16.02 is outdated now. > http://sourceforge.net/projects/p7zip/ > > 2) 7-Zip for Linux/macOS - this package - it's new code with all changes from > latest 7-Zip for Windows > > Add recipe 7-zip [2] to instead of recipe p7zip[3] in which the upstream is dead > since 2016 > > Drop obsolete patches > - CVE-2016-9296.patch > - CVE-2017-17969.patch > - CVE-2018-5996.patch > - change_numMethods_from_bool_to_unsigned.patch > - 0001-Fix-two-buffer-overflow-vulnerabilities.patch > - 0001-Fix-narrowing-errors-Wc-11-narrowing.patch > > License-Update: DOC/License.txt: Add BSD-2-Clause & BSD-3-Clause > License-Update: DOC/copying.txt: newline differs > > The codec libraries was removed since 21.02 [4] > > Refer debian to compile 7-zip [5] > > Add link 7z.so to lib7z.so and create wrapper to command 7za 7zr 7z > which required running with absolute path to link the library > > [1] https://salsa.debian.org/debian/7zip/- > /blob/master/DOC/readme.txt?ref_type=heads > [2] https://sourceforge.net/projects/p7zip/ > [3] https://www.7-zip.org/ > [4] https://github.com/p7zip- > project/p7zip/commit/6c6ed1eba9ff0c0ded9323600f1f3c686d6b6692 > [5] https://salsa.debian.org/debian/7zip/-/blob/master/debian/rules > > Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> > --- > .../p7zip_16.02.bb => 7zip/7zip_2409.bb} | 60 +++-- > .../0001-support-yocto-cross-compiling.patch | 51 ++++ > ...Fix-narrowing-errors-Wc-11-narrowing.patch | 49 ---- > .../p7zip/files/CVE-2016-9296.patch | 27 --- > .../p7zip/files/CVE-2017-17969.patch | 40 --- > .../p7zip/files/CVE-2018-5996.patch | 227 ------------------ > ...nge_numMethods_from_bool_to_unsigned.patch | 34 --- > ...t_override_compiler_and_do_not_strip.patch | 38 --- > 8 files changed, 87 insertions(+), 439 deletions(-) > rename meta-oe/recipes-extended/{p7zip/p7zip_16.02.bb => > 7zip/7zip_2409.bb} (22%) > create mode 100644 meta-oe/recipes-extended/7zip/files/0001-support-yocto- > cross-compiling.patch > delete mode 100644 meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing- > errors-Wc-11-narrowing.patch > delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2016- > 9296.patch > delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2017- > 17969.patch > delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2018- > 5996.patch > delete mode 100644 meta-oe/recipes- > extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch > delete mode 100644 meta-oe/recipes- > extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch > > diff --git a/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb b/meta-oe/recipes- > extended/7zip/7zip_2409.bb > similarity index 22% > rename from meta-oe/recipes-extended/p7zip/p7zip_16.02.bb > rename to meta-oe/recipes-extended/7zip/7zip_2409.bb > index 789819a5e..0db9148ef 100644 > --- a/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb > +++ b/meta-oe/recipes-extended/7zip/7zip_2409.bb > @@ -1,46 +1,58 @@ > SUMMARY = "7-zip is a commandline utility handling 7z archives." > HOMEPAGE = "http://www.7-zip.org/" > -LICENSE = "LGPL-2.1-or-later & unRAR" > -LIC_FILES_CHKSUM = > "file://DOC/copying.txt;md5=4fbd65380cdd255951079008b364516c \ > +LICENSE = "LGPL-2.1-or-later & unRAR & PD & BSD-2-Clause & BSD-3-Clause" > +LIC_FILES_CHKSUM = > "file://DOC/copying.txt;md5=b0d181292c99cf9bb2ae9166dd3a0239 \ > > file://DOC/unRarLicense.txt;md5=9c87ddde469ef94aed153b0951d088de \ > - file://DOC/License.txt;md5=879598edf1f54dddb6930d7581357f8b" > - > -SRC_URI = > "http://downloads.sourceforge.net/p7zip/p7zip/${PV}/p7zip_${PV}_src_all.tar.bz > 2 \ > - file://do_not_override_compiler_and_do_not_strip.patch \ > - file://CVE-2017-17969.patch \ > - file://0001-Fix-narrowing-errors-Wc-11-narrowing.patch \ > - file://change_numMethods_from_bool_to_unsigned.patch \ > - file://CVE-2018-5996.patch \ > - file://CVE-2016-9296.patch \ > + file://DOC/License.txt;md5=8bfe22e0285a3043b61ea408d234c55d" > + > +SRC_URI = "https://www.7-zip.org/a/7z${PV}-src.tar.xz \ > + file://0001-support-yocto-cross-compiling.patch \ > " > > -SRC_URI[sha256sum] = > "5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f" > +SRC_URI[sha256sum] = > "49c05169f49572c1128453579af1632a952409ced028259381dac30726b6133a" > + > +UPSTREAM_CHECK_URI = "https://www.7-zip.org/download.html" > > -UPSTREAM_CHECK_URI = "https://tracker.debian.org/pkg/p7zip" > -UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)" > +S = "${WORKDIR}/sources" > +UNPACKDIR = "${S}" > > -S = "${WORKDIR}/${BPN}_${PV}" > +# Support Yocto cross compiling > +EXTRA_OEMAKE += " \ > + CXXFLAGS_EXTRA='${CXXFLAGS}' \ > + CFLAGS_BASE2='${CFLAGS}' \ > + LDFLAGS_STATIC_3='${LDFLAGS}' \ > +" > > -do_compile:append() { > - oe_runmake 7z > +do_compile() { > + oe_runmake -C CPP/7zip/Bundles/Alone2 -f ../../cmpl_gcc.mak > + oe_runmake -C CPP/7zip/Bundles/Format7zF -f ../../cmpl_gcc.mak > + oe_runmake -C CPP/7zip/UI/Console -f ../../cmpl_gcc.mak > + oe_runmake -C CPP/7zip/Bundles/SFXCon -f ../../cmpl_gcc.mak > + oe_runmake -C CPP/7zip/Bundles/Alone -f ../../cmpl_gcc.mak > + oe_runmake -C CPP/7zip/Bundles/Alone7z -f ../../cmpl_gcc.mak > } > FILES:${PN} += "${libdir}/* ${bindir}/7z" > > FILES_SOLIBSDEV = "" > INSANE_SKIP:${PN} += "dev-so" > +RDEPENDS:${PN} = "bash" > > do_install() { > install -d ${D}${bindir} > - install -d ${D}${bindir}/Codecs > + install -m 0755 ${S}/CPP/7zip/Bundles/Alone/b/g/7za ${D}${bindir} > + install -m 0755 ${S}/CPP/7zip/Bundles/Alone7z/b/g/7zr ${D}${bindir} > + install -m 0755 ${S}/CPP/7zip/UI/Console/b/g/7z ${D}${bindir} > + for bin in 7za 7zr 7z; do > + create_cmdline_wrapper ${D}${bindir}/$bin > + done > + > install -d ${D}${libdir} > - install -d ${D}${libdir}/Codecs > - install -m 0755 ${S}/bin/7za ${D}${bindir} > - ln -s 7za ${D}${bindir}/7z > - install -m 0755 ${S}/bin/Codecs/* ${D}${libdir}/Codecs/ > - install -m 0755 ${S}/bin/7z.so ${D}${libdir}/lib7z.so > + install -m 0755 ${S}/CPP/7zip/Bundles/Format7zF/b/g/7z.so > ${D}${libdir}/lib7z.so > + ln -rsn ${D}${libdir}/lib7z.so ${D}${bindir}/7z.so > } > > -RPROVIDES:${PN} += "lib7z.so()(64bit) 7z lib7z.so" > +PROVIDES += "p7zip" > +RPROVIDES:${PN} += "lib7z.so()(64bit) 7z lib7z.so p7zip" > RPROVIDES:${PN}-dev += "lib7z.so()(64bit) 7z lib7z.so" > > BBCLASSEXTEND = "native nativesdk" > diff --git a/meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross- > compiling.patch b/meta-oe/recipes-extended/7zip/files/0001-support-yocto- > cross-compiling.patch > new file mode 100644 > index 000000000..32b698ecd > --- /dev/null > +++ b/meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross- > compiling.patch > @@ -0,0 +1,51 @@ > +From 80321060ff24edee11d9ead8e21e9168f52d1d44 Mon Sep 17 00:00:00 > 2001 > +From: Hongxu Jia <hongxu.jia@windriver.com> > +Date: Wed, 18 Dec 2024 16:38:11 +0800 > +Subject: [PATCH] support yocto cross compiling > + > +Remove -s from $LFLAGS_STRIP, do not strip binary to workaournd > +Yocto build warning > +... > +WARNING: 7zip-native-24.09-r0 do_populate_sysroot: File 'tmp/work/x86_64- > linux/ > +7zip-native/24.09/recipe-sysroot-native/usr/lib/7z.so' from 7zip-native was > already stripped, > +this will prevent future debugging! > +... > + > +Apply CC, CXX from environments > + > +Upstream-Status: Inappropriate [Yocto specific] > + > +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> > +--- > + CPP/7zip/7zip_gcc.mak | 2 +- > + CPP/7zip/var_gcc.mak | 2 -- > + 2 files changed, 1 insertion(+), 3 deletions(-) > + > +diff --git a/CPP/7zip/7zip_gcc.mak b/CPP/7zip/7zip_gcc.mak > +index fcb580a..74a15d9 100755 > +--- a/CPP/7zip/7zip_gcc.mak > ++++ b/CPP/7zip/7zip_gcc.mak > +@@ -45,7 +45,7 @@ CFLAGS_DEBUG = -g > + else > > + CFLAGS_DEBUG = -DNDEBUG > > + ifneq ($(CC), $(CROSS_COMPILE)clang) > > +-LFLAGS_STRIP = -s > > ++LFLAGS_STRIP = > > + endif > > + endif > > + > > +diff --git a/CPP/7zip/var_gcc.mak b/CPP/7zip/var_gcc.mak > +index 803c8de..48a7c09 100755 > +--- a/CPP/7zip/var_gcc.mak > ++++ b/CPP/7zip/var_gcc.mak > +@@ -6,7 +6,5 @@ IS_ARM64= > + CROSS_COMPILE= > > + MY_ARCH= > > + USE_ASM= > > +-CC=$(CROSS_COMPILE)gcc > > +-CXX=$(CROSS_COMPILE)g++ > > + > > + # -march=armv8-a+crc+crypto > > +-- > +2.25.1 > + > diff --git a/meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc- > 11-narrowing.patch b/meta-oe/recipes-extended/p7zip/files/0001-Fix- > narrowing-errors-Wc-11-narrowing.patch > deleted file mode 100644 > index 1f08d1603..000000000 > --- a/meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc-11- > narrowing.patch > +++ /dev/null > @@ -1,49 +0,0 @@ > -From 653674e11872465dd5edf1c1e8413ea813d7e086 Mon Sep 17 00:00:00 > 2001 > -From: Khem Raj <raj.khem@gmail.com> > -Date: Mon, 23 Apr 2018 23:07:21 -0700 > -Subject: [PATCH] Fix narrowing errors -Wc++11-narrowing > - > -Clang 6.x finds these errors > - > - ../../../../CPP/Windows/ErrorMsg.cpp:24:10: error: case value evaluates to - > 2147024809, which cannot be narrowed to type 'DWORD' (aka 'unsigned int') [- > Wc++11-narrowing] > - case E_INVALIDARG : txt = "E_INVALIDARG"; break ; > - ^ > - > -HRESULT causes the macro to be parsed as a signed long, so we need to force it > -to be checked as an unsigned long instead. > - > -also reported here https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=224930 > - > -Upstream-Status: Pending > - > -Signed-off-by: Khem Raj <raj.khem@gmail.com> > - > ---- > - CPP/Windows/ErrorMsg.cpp | 14 +++++++------- > - 1 file changed, 7 insertions(+), 7 deletions(-) > - > -diff --git a/CPP/Windows/ErrorMsg.cpp b/CPP/Windows/ErrorMsg.cpp > -index 99684ae..78a64ba 100644 > ---- a/CPP/Windows/ErrorMsg.cpp > -+++ b/CPP/Windows/ErrorMsg.cpp > -@@ -15,13 +15,13 @@ UString MyFormatMessage(DWORD errorCode) > - > - switch(errorCode) { > - case ERROR_NO_MORE_FILES : txt = "No more files"; break ; > -- case E_NOTIMPL : txt = "E_NOTIMPL"; break ; > -- case E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; > -- case E_ABORT : txt = "E_ABORT"; break ; > -- case E_FAIL : txt = "E_FAIL"; break ; > -- case STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ; > -- case E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ; > -- case E_INVALIDARG : txt = "E_INVALIDARG"; break ; > -+ case (DWORD) E_NOTIMPL : txt = "E_NOTIMPL"; break ; > -+ case (DWORD) E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; > -+ case (DWORD) E_ABORT : txt = "E_ABORT"; break ; > -+ case (DWORD) E_FAIL : txt = "E_FAIL"; break ; > -+ case (DWORD) STG_E_INVALIDFUNCTION : txt = > "STG_E_INVALIDFUNCTION"; break ; > -+ case (DWORD) E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ; > -+ case (DWORD) E_INVALIDARG : txt = "E_INVALIDARG"; break ; > - case ERROR_DIRECTORY : txt = "Error Directory"; break ; > - default: > - txt = strerror(errorCode); > diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch b/meta- > oe/recipes-extended/p7zip/files/CVE-2016-9296.patch > deleted file mode 100644 > index 98e186cbf..000000000 > --- a/meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch > +++ /dev/null > @@ -1,27 +0,0 @@ > -p7zip: Update CVE-2016-9296 patch URL. > -From: Robert Luberda <robert@debian.org> > -Date: Sat, 19 Nov 2016 08:48:08 +0100 > -Subject: Fix nullptr dereference (CVE-2016-9296) > - > -Patch taken from https://sourceforge.net/p/p7zip/bugs/185/ > -This patch file taken from Debian's patch set for p7zip > - > -Upstream-Status: Backport [https://sourceforge.net/p/p7zip/bugs/185/] > -CVE: CVE-2016-9296 > - > -Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com> > - > -Index: p7zip_16.02/CPP/7zip/Archive/7z/7zIn.cpp > - > ================================================================= > == > ---- p7zip_16.02.orig/CPP/7zip/Archive/7z/7zIn.cpp > -+++ p7zip_16.02/CPP/7zip/Archive/7z/7zIn.cpp > -@@ -1097,7 +1097,8 @@ HRESULT CInArchive::ReadAndDecodePackedS > - if (CrcCalc(data, unpackSize) != folders.FolderCRCs.Vals[i]) > - ThrowIncorrect(); > - } > -- HeadersSize += folders.PackPositions[folders.NumPackStreams]; > -+ if (folders.PackPositions) > -+ HeadersSize += folders.PackPositions[folders.NumPackStreams]; > - return S_OK; > - } > - > diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch > b/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch > deleted file mode 100644 > index 9ba107807..000000000 > --- a/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch > +++ /dev/null > @@ -1,40 +0,0 @@ > -From 7f2da4f810b429ddb7afa0e252e3d02ced0eba87 Mon Sep 17 00:00:00 > 2001 > -From: Radovan Scasny <radovan.scasny@siemens.com> > -Date: Tue, 20 Feb 2018 12:08:13 +0100 > -Subject: [PATCH] p7zip: Fix CVE-2017-17969 > - > -[No upstream tracking] -- https://bugs.debian.org/cgi- > bin/bugreport.cgi?bug=888297 > - > -Heap-based buffer overflow in 7zip > - > -Compress/ShrinkDecoder.cpp: Heap-based buffer overflow > -in the NCompress::NShrink::CDecoder::CodeReal method > -in 7-Zip before 18.00 and p7zip allows remote attackers > -to cause a denial of service (out-of-bounds write) > -or potentially execute arbitrary code via a crafted ZIP archive. > - > -Upstream-Status: Backport > [https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/8316/attachm > ent/CVE-2017-17969.patch] > -CVE: CVE-2017-17969 > -Signed-off-by: Radovan Scasny <radovan.scasny@siemens.com> > - > ---- > - CPP/7zip/Compress/ShrinkDecoder.cpp | 5 +++++ > - 1 file changed, 5 insertions(+) > - > -diff --git a/CPP/7zip/Compress/ShrinkDecoder.cpp > b/CPP/7zip/Compress/ShrinkDecoder.cpp > -index 80b7e67..5bb0559 100644 > ---- a/CPP/7zip/Compress/ShrinkDecoder.cpp > -+++ b/CPP/7zip/Compress/ShrinkDecoder.cpp > -@@ -121,7 +121,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream > *inStream, ISequentialOutStream * > - { > - _stack[i++] = _suffixes[cur]; > - cur = _parents[cur]; > -+ if (cur >= kNumItems || i >= kNumItems) > -+ break; > - } > -+ > -+ if (cur >= kNumItems || i >= kNumItems) > -+ break; > - > - _stack[i++] = (Byte)cur; > - lastChar2 = (Byte)cur; > diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch b/meta- > oe/recipes-extended/p7zip/files/CVE-2018-5996.patch > deleted file mode 100644 > index 47868c982..000000000 > --- a/meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch > +++ /dev/null > @@ -1,227 +0,0 @@ > -From: Robert Luberda <robert@debian.org> > -Date: Sun, 28 Jan 2018 23:47:40 +0100 > -Subject: CVE-2018-5996 > - > -Hopefully fix Memory Corruptions via RAR PPMd (CVE-2018-5996) by > -applying a few changes from 7Zip 18.00-beta. > - > -Bug-Debian: https://bugs.debian.org/#888314 > - > -Upstream-Status: Backport [https://sources.debian.org/data/non-free/p/p7zip- > rar/16.02-3/debian/patches/06-CVE-2018-5996.patch] > -CVE: CVE-2018-5996 > - > -Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com> > ---- > - CPP/7zip/Compress/Rar1Decoder.cpp | 13 +++++++++---- > - CPP/7zip/Compress/Rar1Decoder.h | 1 + > - CPP/7zip/Compress/Rar2Decoder.cpp | 10 +++++++++- > - CPP/7zip/Compress/Rar2Decoder.h | 1 + > - CPP/7zip/Compress/Rar3Decoder.cpp | 23 ++++++++++++++++++++--- > - CPP/7zip/Compress/Rar3Decoder.h | 2 ++ > - 6 files changed, 42 insertions(+), 8 deletions(-) > - > -diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp > b/CPP/7zip/Compress/Rar1Decoder.cpp > -index 1aaedcc..68030c7 100644 > ---- a/CPP/7zip/Compress/Rar1Decoder.cpp > -+++ b/CPP/7zip/Compress/Rar1Decoder.cpp > -@@ -29,7 +29,7 @@ public: > - }; > - */ > - > --CDecoder::CDecoder(): m_IsSolid(false) { } > -+CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { } > - > - void CDecoder::InitStructures() > - { > -@@ -406,9 +406,14 @@ HRESULT CDecoder::CodeReal(ISequentialInStream > *inStream, ISequentialOutStream * > - InitData(); > - if (!m_IsSolid) > - { > -+ _errorMode = false; > - InitStructures(); > - InitHuff(); > - } > -+ > -+ if (_errorMode) > -+ return S_FALSE; > -+ > - if (m_UnpackSize > 0) > - { > - GetFlagsBuf(); > -@@ -477,9 +482,9 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream > *inStream, ISequentialOutStream > - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo > *progress) > - { > - try { return CodeReal(inStream, outStream, inSize, outSize, progress); } > -- catch(const CInBufferException &e) { return e.ErrorCode; } > -- catch(const CLzOutWindowException &e) { return e.ErrorCode; } > -- catch(...) { return S_FALSE; } > -+ catch(const CInBufferException &e) { _errorMode = true; return e.ErrorCode; } > -+ catch(const CLzOutWindowException &e) { _errorMode = true; return > e.ErrorCode; } > -+ catch(...) { _errorMode = true; return S_FALSE; } > - } > - > - STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 > size) > -diff --git a/CPP/7zip/Compress/Rar1Decoder.h > b/CPP/7zip/Compress/Rar1Decoder.h > -index 630f089..01b606b 100644 > ---- a/CPP/7zip/Compress/Rar1Decoder.h > -+++ b/CPP/7zip/Compress/Rar1Decoder.h > -@@ -39,6 +39,7 @@ public: > - > - Int64 m_UnpackSize; > - bool m_IsSolid; > -+ bool _errorMode; > - > - UInt32 ReadBits(int numBits); > - HRESULT CopyBlock(UInt32 distance, UInt32 len); > -diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp > b/CPP/7zip/Compress/Rar2Decoder.cpp > -index b3f2b4b..0580c8d 100644 > ---- a/CPP/7zip/Compress/Rar2Decoder.cpp > -+++ b/CPP/7zip/Compress/Rar2Decoder.cpp > -@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20; > - static const UInt32 kWindowReservSize = (1 << 22) + 256; > - > - CDecoder::CDecoder(): > -- m_IsSolid(false) > -+ m_IsSolid(false), > -+ m_TablesOK(false) > - { > - } > - > -@@ -100,6 +101,8 @@ UInt32 CDecoder::ReadBits(unsigned numBits) { return > m_InBitStream.ReadBits(numB > - > - bool CDecoder::ReadTables(void) > - { > -+ m_TablesOK = false; > -+ > - Byte levelLevels[kLevelTableSize]; > - Byte newLevels[kMaxTableSize]; > - m_AudioMode = (ReadBits(1) == 1); > -@@ -170,6 +173,8 @@ bool CDecoder::ReadTables(void) > - } > - > - memcpy(m_LastLevels, newLevels, kMaxTableSize); > -+ m_TablesOK = true; > -+ > - return true; > - } > - > -@@ -344,6 +349,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream > *inStream, ISequentialOutStream * > - return S_FALSE; > - } > - > -+ if (!m_TablesOK) > -+ return S_FALSE; > -+ > - UInt64 startPos = m_OutWindowStream.GetProcessedSize(); > - while (pos < unPackSize) > - { > -diff --git a/CPP/7zip/Compress/Rar2Decoder.h > b/CPP/7zip/Compress/Rar2Decoder.h > -index 3a0535c..0e9005f 100644 > ---- a/CPP/7zip/Compress/Rar2Decoder.h > -+++ b/CPP/7zip/Compress/Rar2Decoder.h > -@@ -139,6 +139,7 @@ class CDecoder : > - > - UInt64 m_PackSize; > - bool m_IsSolid; > -+ bool m_TablesOK; > - > - void InitStructures(); > - UInt32 ReadBits(unsigned numBits); > -diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp > b/CPP/7zip/Compress/Rar3Decoder.cpp > -index 3bf2513..6cb8a6a 100644 > ---- a/CPP/7zip/Compress/Rar3Decoder.cpp > -+++ b/CPP/7zip/Compress/Rar3Decoder.cpp > -@@ -92,7 +92,8 @@ CDecoder::CDecoder(): > - _writtenFileSize(0), > - _vmData(0), > - _vmCode(0), > -- m_IsSolid(false) > -+ m_IsSolid(false), > -+ _errorMode(false) > - { > - Ppmd7_Construct(&_ppmd); > - } > -@@ -545,6 +546,9 @@ HRESULT CDecoder::ReadTables(bool > &keepDecompressing) > - return InitPPM(); > - } > - > -+ TablesRead = false; > -+ TablesOK = false; > -+ > - _lzMode = true; > - PrevAlignBits = 0; > - PrevAlignCount = 0; > -@@ -606,6 +610,9 @@ HRESULT CDecoder::ReadTables(bool > &keepDecompressing) > - } > - } > - } > -+ if (InputEofError()) > -+ return S_FALSE; > -+ > - TablesRead = true; > - > - // original code has check here: > -@@ -623,6 +630,9 @@ HRESULT CDecoder::ReadTables(bool > &keepDecompressing) > - RIF(m_LenDecoder.Build(&newLevels[kMainTableSize + kDistTableSize + > kAlignTableSize])); > - > - memcpy(m_LastLevels, newLevels, kTablesSizesSum); > -+ > -+ TablesOK = true; > -+ > - return S_OK; > - } > - > -@@ -824,7 +834,12 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo > *progress) > - PpmEscChar = 2; > - PpmError = true; > - InitFilters(); > -+ _errorMode = false; > - } > -+ > -+ if (_errorMode) > -+ return S_FALSE; > -+ > - if (!m_IsSolid || !TablesRead) > - { > - bool keepDecompressing; > -@@ -838,6 +853,8 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo > *progress) > - bool keepDecompressing; > - if (_lzMode) > - { > -+ if (!TablesOK) > -+ return S_FALSE; > - RINOK(DecodeLZ(keepDecompressing)) > - } > - else > -@@ -901,8 +918,8 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream > *inStream, ISequentialOutStream > - _unpackSize = outSize ? *outSize : (UInt64)(Int64)-1; > - return CodeReal(progress); > - } > -- catch(const CInBufferException &e) { return e.ErrorCode; } > -- catch(...) { return S_FALSE; } > -+ catch(const CInBufferException &e) { _errorMode = true; return e.ErrorCode; } > -+ catch(...) { _errorMode = true; return S_FALSE; } > - // CNewException is possible here. But probably CNewException is caused > - // by error in data stream. > - } > -diff --git a/CPP/7zip/Compress/Rar3Decoder.h > b/CPP/7zip/Compress/Rar3Decoder.h > -index c130cec..2f72d7d 100644 > ---- a/CPP/7zip/Compress/Rar3Decoder.h > -+++ b/CPP/7zip/Compress/Rar3Decoder.h > -@@ -192,6 +192,7 @@ class CDecoder: > - UInt32 _lastFilter; > - > - bool m_IsSolid; > -+ bool _errorMode; > - > - bool _lzMode; > - bool _unsupportedFilter; > -@@ -200,6 +201,7 @@ class CDecoder: > - UInt32 PrevAlignCount; > - > - bool TablesRead; > -+ bool TablesOK; > - > - CPpmd7 _ppmd; > - int PpmEscChar; > - > diff --git a/meta-oe/recipes- > extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch > b/meta-oe/recipes- > extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch > deleted file mode 100644 > index 93eb0588c..000000000 > --- a/meta-oe/recipes- > extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch > +++ /dev/null > @@ -1,34 +0,0 @@ > -From 0820ef4b9238c1e39ae5bda32cc08cce3fd3ce89 Mon Sep 17 00:00:00 > 2001 > -From: Nisha Parrakat <Nisha.Parrakat@kpit.com> > -Date: Wed, 26 May 2021 19:59:28 +0000 > -Subject: [PATCH] fixes the below error > - > -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp: In member function 'virtual > LONG NArchive::NWim::CHandler::GetArchiveProperty(PROPID, > PROPVARIANT*)': > -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:308:11: error: use of an > operand of type 'bool' in 'operator++' is forbidden in C++17 > -| 308 | numMethods++; > -| | ^~~~~~~~~~ > -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:318:9: error: use of an > operand of type 'bool' in 'operator++' is forbidden in C++17 > -| 318 | numMethods++; > - > -use unsigned instead of bool > -Signed-off-by: Nisha Parrakat <Nisha.Parrakat@kpit.com> > - > -Upstream-Status: Pending > - > ---- > - CPP/7zip/Archive/Wim/WimHandler.cpp | 2 +- > - 1 file changed, 1 insertion(+), 1 deletion(-) > - > -diff --git a/CPP/7zip/Archive/Wim/WimHandler.cpp > b/CPP/7zip/Archive/Wim/WimHandler.cpp > -index 27d3298..4ff5cfe 100644 > ---- a/CPP/7zip/Archive/Wim/WimHandler.cpp > -+++ b/CPP/7zip/Archive/Wim/WimHandler.cpp > -@@ -298,7 +298,7 @@ STDMETHODIMP > CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value) > - > - AString res; > - > -- bool numMethods = 0; > -+ unsigned numMethods = 0; > - for (unsigned i = 0; i < ARRAY_SIZE(k_Methods); i++) > - { > - if (methodMask & ((UInt32)1 << i)) > diff --git a/meta-oe/recipes- > extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch > b/meta-oe/recipes- > extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch > deleted file mode 100644 > index 2636e7f6f..000000000 > --- a/meta-oe/recipes- > extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch > +++ /dev/null > @@ -1,38 +0,0 @@ > -From b2aa209dfc5e59d6329b55b9764782334b63dbe8 Mon Sep 17 00:00:00 > 2001 > -From: Raphael Freudiger <raphael.freudiger@siemens.com> > -Date: Wed, 11 Feb 2015 09:11:47 +0100 > -Subject: [PATCH] do not override compiler and do not strip > - > -The default makefile sets the compiler to g++ or gcc. This leads to a wrong > architecture when cross-compiling. > -Remove the hardcoded compiler and just append the flags to CXX and CC. > - > -Upstream-Status: Pending > -Signed-off-by: Raphael Freudiger <raphael.freudiger@siemens.com> > -Reviewed-By: Pascal Bach <pascal.bach@siemens.com> > - > ---- > - makefile.machine | 4 +--- > - 1 file changed, 1 insertion(+), 3 deletions(-) > - > -diff --git a/makefile.machine b/makefile.machine > -index 9e34c34..e9244d9 100644 > ---- a/makefile.machine > -+++ b/makefile.machine > -@@ -2,7 +2,7 @@ > - # makefile for Linux (x86, PPC, alpha ...) > - # > - > --OPTFLAGS=-O -s > -+OPTFLAGS=-O > - > - ALLFLAGS=${OPTFLAGS} -pipe \ > - -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ > -@@ -10,8 +10,6 @@ ALLFLAGS=${OPTFLAGS} -pipe \ > - -D_7ZIP_LARGE_PAGES \ > - $(LOCAL_FLAGS) > - > --CXX=g++ > --CC=gcc > - CC_SHARED=-fPIC > - LINK_SHARED=-fPIC -shared > - > -- > 2.34.1
Sure, I will update version to 24.09 The bash was imported by the shebang of create_cmdline_wrapper, I will try to drop create_cmdline_wrapper V4 incoming //Hongxu
diff --git a/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb b/meta-oe/recipes-extended/7zip/7zip_2409.bb similarity index 22% rename from meta-oe/recipes-extended/p7zip/p7zip_16.02.bb rename to meta-oe/recipes-extended/7zip/7zip_2409.bb index 789819a5e..0db9148ef 100644 --- a/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb +++ b/meta-oe/recipes-extended/7zip/7zip_2409.bb @@ -1,46 +1,58 @@ SUMMARY = "7-zip is a commandline utility handling 7z archives." HOMEPAGE = "http://www.7-zip.org/" -LICENSE = "LGPL-2.1-or-later & unRAR" -LIC_FILES_CHKSUM = "file://DOC/copying.txt;md5=4fbd65380cdd255951079008b364516c \ +LICENSE = "LGPL-2.1-or-later & unRAR & PD & BSD-2-Clause & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://DOC/copying.txt;md5=b0d181292c99cf9bb2ae9166dd3a0239 \ file://DOC/unRarLicense.txt;md5=9c87ddde469ef94aed153b0951d088de \ - file://DOC/License.txt;md5=879598edf1f54dddb6930d7581357f8b" - -SRC_URI = "http://downloads.sourceforge.net/p7zip/p7zip/${PV}/p7zip_${PV}_src_all.tar.bz2 \ - file://do_not_override_compiler_and_do_not_strip.patch \ - file://CVE-2017-17969.patch \ - file://0001-Fix-narrowing-errors-Wc-11-narrowing.patch \ - file://change_numMethods_from_bool_to_unsigned.patch \ - file://CVE-2018-5996.patch \ - file://CVE-2016-9296.patch \ + file://DOC/License.txt;md5=8bfe22e0285a3043b61ea408d234c55d" + +SRC_URI = "https://www.7-zip.org/a/7z${PV}-src.tar.xz \ + file://0001-support-yocto-cross-compiling.patch \ " -SRC_URI[sha256sum] = "5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f" +SRC_URI[sha256sum] = "49c05169f49572c1128453579af1632a952409ced028259381dac30726b6133a" + +UPSTREAM_CHECK_URI = "https://www.7-zip.org/download.html" -UPSTREAM_CHECK_URI = "https://tracker.debian.org/pkg/p7zip" -UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" -S = "${WORKDIR}/${BPN}_${PV}" +# Support Yocto cross compiling +EXTRA_OEMAKE += " \ + CXXFLAGS_EXTRA='${CXXFLAGS}' \ + CFLAGS_BASE2='${CFLAGS}' \ + LDFLAGS_STATIC_3='${LDFLAGS}' \ +" -do_compile:append() { - oe_runmake 7z +do_compile() { + oe_runmake -C CPP/7zip/Bundles/Alone2 -f ../../cmpl_gcc.mak + oe_runmake -C CPP/7zip/Bundles/Format7zF -f ../../cmpl_gcc.mak + oe_runmake -C CPP/7zip/UI/Console -f ../../cmpl_gcc.mak + oe_runmake -C CPP/7zip/Bundles/SFXCon -f ../../cmpl_gcc.mak + oe_runmake -C CPP/7zip/Bundles/Alone -f ../../cmpl_gcc.mak + oe_runmake -C CPP/7zip/Bundles/Alone7z -f ../../cmpl_gcc.mak } FILES:${PN} += "${libdir}/* ${bindir}/7z" FILES_SOLIBSDEV = "" INSANE_SKIP:${PN} += "dev-so" +RDEPENDS:${PN} = "bash" do_install() { install -d ${D}${bindir} - install -d ${D}${bindir}/Codecs + install -m 0755 ${S}/CPP/7zip/Bundles/Alone/b/g/7za ${D}${bindir} + install -m 0755 ${S}/CPP/7zip/Bundles/Alone7z/b/g/7zr ${D}${bindir} + install -m 0755 ${S}/CPP/7zip/UI/Console/b/g/7z ${D}${bindir} + for bin in 7za 7zr 7z; do + create_cmdline_wrapper ${D}${bindir}/$bin + done + install -d ${D}${libdir} - install -d ${D}${libdir}/Codecs - install -m 0755 ${S}/bin/7za ${D}${bindir} - ln -s 7za ${D}${bindir}/7z - install -m 0755 ${S}/bin/Codecs/* ${D}${libdir}/Codecs/ - install -m 0755 ${S}/bin/7z.so ${D}${libdir}/lib7z.so + install -m 0755 ${S}/CPP/7zip/Bundles/Format7zF/b/g/7z.so ${D}${libdir}/lib7z.so + ln -rsn ${D}${libdir}/lib7z.so ${D}${bindir}/7z.so } -RPROVIDES:${PN} += "lib7z.so()(64bit) 7z lib7z.so" +PROVIDES += "p7zip" +RPROVIDES:${PN} += "lib7z.so()(64bit) 7z lib7z.so p7zip" RPROVIDES:${PN}-dev += "lib7z.so()(64bit) 7z lib7z.so" BBCLASSEXTEND = "native nativesdk" diff --git a/meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross-compiling.patch b/meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross-compiling.patch new file mode 100644 index 000000000..32b698ecd --- /dev/null +++ b/meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross-compiling.patch @@ -0,0 +1,51 @@ +From 80321060ff24edee11d9ead8e21e9168f52d1d44 Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Wed, 18 Dec 2024 16:38:11 +0800 +Subject: [PATCH] support yocto cross compiling + +Remove -s from $LFLAGS_STRIP, do not strip binary to workaournd +Yocto build warning +... +WARNING: 7zip-native-24.09-r0 do_populate_sysroot: File 'tmp/work/x86_64-linux/ +7zip-native/24.09/recipe-sysroot-native/usr/lib/7z.so' from 7zip-native was already stripped, +this will prevent future debugging! +... + +Apply CC, CXX from environments + +Upstream-Status: Inappropriate [Yocto specific] + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + CPP/7zip/7zip_gcc.mak | 2 +- + CPP/7zip/var_gcc.mak | 2 -- + 2 files changed, 1 insertion(+), 3 deletions(-) + +diff --git a/CPP/7zip/7zip_gcc.mak b/CPP/7zip/7zip_gcc.mak +index fcb580a..74a15d9 100755 +--- a/CPP/7zip/7zip_gcc.mak ++++ b/CPP/7zip/7zip_gcc.mak +@@ -45,7 +45,7 @@ CFLAGS_DEBUG = -g + else + CFLAGS_DEBUG = -DNDEBUG + ifneq ($(CC), $(CROSS_COMPILE)clang) +-LFLAGS_STRIP = -s ++LFLAGS_STRIP = + endif + endif + +diff --git a/CPP/7zip/var_gcc.mak b/CPP/7zip/var_gcc.mak +index 803c8de..48a7c09 100755 +--- a/CPP/7zip/var_gcc.mak ++++ b/CPP/7zip/var_gcc.mak +@@ -6,7 +6,5 @@ IS_ARM64= + CROSS_COMPILE= + MY_ARCH= + USE_ASM= +-CC=$(CROSS_COMPILE)gcc +-CXX=$(CROSS_COMPILE)g++ + + # -march=armv8-a+crc+crypto +-- +2.25.1 + diff --git a/meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc-11-narrowing.patch b/meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc-11-narrowing.patch deleted file mode 100644 index 1f08d1603..000000000 --- a/meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc-11-narrowing.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 653674e11872465dd5edf1c1e8413ea813d7e086 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Mon, 23 Apr 2018 23:07:21 -0700 -Subject: [PATCH] Fix narrowing errors -Wc++11-narrowing - -Clang 6.x finds these errors - - ../../../../CPP/Windows/ErrorMsg.cpp:24:10: error: case value evaluates to -2147024809, which cannot be narrowed to type 'DWORD' (aka 'unsigned int') [-Wc++11-narrowing] - case E_INVALIDARG : txt = "E_INVALIDARG"; break ; - ^ - -HRESULT causes the macro to be parsed as a signed long, so we need to force it -to be checked as an unsigned long instead. - -also reported here https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=224930 - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> - ---- - CPP/Windows/ErrorMsg.cpp | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/CPP/Windows/ErrorMsg.cpp b/CPP/Windows/ErrorMsg.cpp -index 99684ae..78a64ba 100644 ---- a/CPP/Windows/ErrorMsg.cpp -+++ b/CPP/Windows/ErrorMsg.cpp -@@ -15,13 +15,13 @@ UString MyFormatMessage(DWORD errorCode) - - switch(errorCode) { - case ERROR_NO_MORE_FILES : txt = "No more files"; break ; -- case E_NOTIMPL : txt = "E_NOTIMPL"; break ; -- case E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; -- case E_ABORT : txt = "E_ABORT"; break ; -- case E_FAIL : txt = "E_FAIL"; break ; -- case STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ; -- case E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ; -- case E_INVALIDARG : txt = "E_INVALIDARG"; break ; -+ case (DWORD) E_NOTIMPL : txt = "E_NOTIMPL"; break ; -+ case (DWORD) E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; -+ case (DWORD) E_ABORT : txt = "E_ABORT"; break ; -+ case (DWORD) E_FAIL : txt = "E_FAIL"; break ; -+ case (DWORD) STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ; -+ case (DWORD) E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ; -+ case (DWORD) E_INVALIDARG : txt = "E_INVALIDARG"; break ; - case ERROR_DIRECTORY : txt = "Error Directory"; break ; - default: - txt = strerror(errorCode); diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch b/meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch deleted file mode 100644 index 98e186cbf..000000000 --- a/meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch +++ /dev/null @@ -1,27 +0,0 @@ -p7zip: Update CVE-2016-9296 patch URL. -From: Robert Luberda <robert@debian.org> -Date: Sat, 19 Nov 2016 08:48:08 +0100 -Subject: Fix nullptr dereference (CVE-2016-9296) - -Patch taken from https://sourceforge.net/p/p7zip/bugs/185/ -This patch file taken from Debian's patch set for p7zip - -Upstream-Status: Backport [https://sourceforge.net/p/p7zip/bugs/185/] -CVE: CVE-2016-9296 - -Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com> - -Index: p7zip_16.02/CPP/7zip/Archive/7z/7zIn.cpp -=================================================================== ---- p7zip_16.02.orig/CPP/7zip/Archive/7z/7zIn.cpp -+++ p7zip_16.02/CPP/7zip/Archive/7z/7zIn.cpp -@@ -1097,7 +1097,8 @@ HRESULT CInArchive::ReadAndDecodePackedS - if (CrcCalc(data, unpackSize) != folders.FolderCRCs.Vals[i]) - ThrowIncorrect(); - } -- HeadersSize += folders.PackPositions[folders.NumPackStreams]; -+ if (folders.PackPositions) -+ HeadersSize += folders.PackPositions[folders.NumPackStreams]; - return S_OK; - } - diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch b/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch deleted file mode 100644 index 9ba107807..000000000 --- a/meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 7f2da4f810b429ddb7afa0e252e3d02ced0eba87 Mon Sep 17 00:00:00 2001 -From: Radovan Scasny <radovan.scasny@siemens.com> -Date: Tue, 20 Feb 2018 12:08:13 +0100 -Subject: [PATCH] p7zip: Fix CVE-2017-17969 - -[No upstream tracking] -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=888297 - -Heap-based buffer overflow in 7zip - -Compress/ShrinkDecoder.cpp: Heap-based buffer overflow -in the NCompress::NShrink::CDecoder::CodeReal method -in 7-Zip before 18.00 and p7zip allows remote attackers -to cause a denial of service (out-of-bounds write) -or potentially execute arbitrary code via a crafted ZIP archive. - -Upstream-Status: Backport [https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/8316/attachment/CVE-2017-17969.patch] -CVE: CVE-2017-17969 -Signed-off-by: Radovan Scasny <radovan.scasny@siemens.com> - ---- - CPP/7zip/Compress/ShrinkDecoder.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/CPP/7zip/Compress/ShrinkDecoder.cpp b/CPP/7zip/Compress/ShrinkDecoder.cpp -index 80b7e67..5bb0559 100644 ---- a/CPP/7zip/Compress/ShrinkDecoder.cpp -+++ b/CPP/7zip/Compress/ShrinkDecoder.cpp -@@ -121,7 +121,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * - { - _stack[i++] = _suffixes[cur]; - cur = _parents[cur]; -+ if (cur >= kNumItems || i >= kNumItems) -+ break; - } -+ -+ if (cur >= kNumItems || i >= kNumItems) -+ break; - - _stack[i++] = (Byte)cur; - lastChar2 = (Byte)cur; diff --git a/meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch b/meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch deleted file mode 100644 index 47868c982..000000000 --- a/meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch +++ /dev/null @@ -1,227 +0,0 @@ -From: Robert Luberda <robert@debian.org> -Date: Sun, 28 Jan 2018 23:47:40 +0100 -Subject: CVE-2018-5996 - -Hopefully fix Memory Corruptions via RAR PPMd (CVE-2018-5996) by -applying a few changes from 7Zip 18.00-beta. - -Bug-Debian: https://bugs.debian.org/#888314 - -Upstream-Status: Backport [https://sources.debian.org/data/non-free/p/p7zip-rar/16.02-3/debian/patches/06-CVE-2018-5996.patch] -CVE: CVE-2018-5996 - -Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com> ---- - CPP/7zip/Compress/Rar1Decoder.cpp | 13 +++++++++---- - CPP/7zip/Compress/Rar1Decoder.h | 1 + - CPP/7zip/Compress/Rar2Decoder.cpp | 10 +++++++++- - CPP/7zip/Compress/Rar2Decoder.h | 1 + - CPP/7zip/Compress/Rar3Decoder.cpp | 23 ++++++++++++++++++++--- - CPP/7zip/Compress/Rar3Decoder.h | 2 ++ - 6 files changed, 42 insertions(+), 8 deletions(-) - -diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp -index 1aaedcc..68030c7 100644 ---- a/CPP/7zip/Compress/Rar1Decoder.cpp -+++ b/CPP/7zip/Compress/Rar1Decoder.cpp -@@ -29,7 +29,7 @@ public: - }; - */ - --CDecoder::CDecoder(): m_IsSolid(false) { } -+CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { } - - void CDecoder::InitStructures() - { -@@ -406,9 +406,14 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * - InitData(); - if (!m_IsSolid) - { -+ _errorMode = false; - InitStructures(); - InitHuff(); - } -+ -+ if (_errorMode) -+ return S_FALSE; -+ - if (m_UnpackSize > 0) - { - GetFlagsBuf(); -@@ -477,9 +482,9 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress) - { - try { return CodeReal(inStream, outStream, inSize, outSize, progress); } -- catch(const CInBufferException &e) { return e.ErrorCode; } -- catch(const CLzOutWindowException &e) { return e.ErrorCode; } -- catch(...) { return S_FALSE; } -+ catch(const CInBufferException &e) { _errorMode = true; return e.ErrorCode; } -+ catch(const CLzOutWindowException &e) { _errorMode = true; return e.ErrorCode; } -+ catch(...) { _errorMode = true; return S_FALSE; } - } - - STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size) -diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h -index 630f089..01b606b 100644 ---- a/CPP/7zip/Compress/Rar1Decoder.h -+++ b/CPP/7zip/Compress/Rar1Decoder.h -@@ -39,6 +39,7 @@ public: - - Int64 m_UnpackSize; - bool m_IsSolid; -+ bool _errorMode; - - UInt32 ReadBits(int numBits); - HRESULT CopyBlock(UInt32 distance, UInt32 len); -diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp -index b3f2b4b..0580c8d 100644 ---- a/CPP/7zip/Compress/Rar2Decoder.cpp -+++ b/CPP/7zip/Compress/Rar2Decoder.cpp -@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20; - static const UInt32 kWindowReservSize = (1 << 22) + 256; - - CDecoder::CDecoder(): -- m_IsSolid(false) -+ m_IsSolid(false), -+ m_TablesOK(false) - { - } - -@@ -100,6 +101,8 @@ UInt32 CDecoder::ReadBits(unsigned numBits) { return m_InBitStream.ReadBits(numB - - bool CDecoder::ReadTables(void) - { -+ m_TablesOK = false; -+ - Byte levelLevels[kLevelTableSize]; - Byte newLevels[kMaxTableSize]; - m_AudioMode = (ReadBits(1) == 1); -@@ -170,6 +173,8 @@ bool CDecoder::ReadTables(void) - } - - memcpy(m_LastLevels, newLevels, kMaxTableSize); -+ m_TablesOK = true; -+ - return true; - } - -@@ -344,6 +349,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * - return S_FALSE; - } - -+ if (!m_TablesOK) -+ return S_FALSE; -+ - UInt64 startPos = m_OutWindowStream.GetProcessedSize(); - while (pos < unPackSize) - { -diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h -index 3a0535c..0e9005f 100644 ---- a/CPP/7zip/Compress/Rar2Decoder.h -+++ b/CPP/7zip/Compress/Rar2Decoder.h -@@ -139,6 +139,7 @@ class CDecoder : - - UInt64 m_PackSize; - bool m_IsSolid; -+ bool m_TablesOK; - - void InitStructures(); - UInt32 ReadBits(unsigned numBits); -diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp -index 3bf2513..6cb8a6a 100644 ---- a/CPP/7zip/Compress/Rar3Decoder.cpp -+++ b/CPP/7zip/Compress/Rar3Decoder.cpp -@@ -92,7 +92,8 @@ CDecoder::CDecoder(): - _writtenFileSize(0), - _vmData(0), - _vmCode(0), -- m_IsSolid(false) -+ m_IsSolid(false), -+ _errorMode(false) - { - Ppmd7_Construct(&_ppmd); - } -@@ -545,6 +546,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing) - return InitPPM(); - } - -+ TablesRead = false; -+ TablesOK = false; -+ - _lzMode = true; - PrevAlignBits = 0; - PrevAlignCount = 0; -@@ -606,6 +610,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing) - } - } - } -+ if (InputEofError()) -+ return S_FALSE; -+ - TablesRead = true; - - // original code has check here: -@@ -623,6 +630,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing) - RIF(m_LenDecoder.Build(&newLevels[kMainTableSize + kDistTableSize + kAlignTableSize])); - - memcpy(m_LastLevels, newLevels, kTablesSizesSum); -+ -+ TablesOK = true; -+ - return S_OK; - } - -@@ -824,7 +834,12 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress) - PpmEscChar = 2; - PpmError = true; - InitFilters(); -+ _errorMode = false; - } -+ -+ if (_errorMode) -+ return S_FALSE; -+ - if (!m_IsSolid || !TablesRead) - { - bool keepDecompressing; -@@ -838,6 +853,8 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress) - bool keepDecompressing; - if (_lzMode) - { -+ if (!TablesOK) -+ return S_FALSE; - RINOK(DecodeLZ(keepDecompressing)) - } - else -@@ -901,8 +918,8 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream - _unpackSize = outSize ? *outSize : (UInt64)(Int64)-1; - return CodeReal(progress); - } -- catch(const CInBufferException &e) { return e.ErrorCode; } -- catch(...) { return S_FALSE; } -+ catch(const CInBufferException &e) { _errorMode = true; return e.ErrorCode; } -+ catch(...) { _errorMode = true; return S_FALSE; } - // CNewException is possible here. But probably CNewException is caused - // by error in data stream. - } -diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h -index c130cec..2f72d7d 100644 ---- a/CPP/7zip/Compress/Rar3Decoder.h -+++ b/CPP/7zip/Compress/Rar3Decoder.h -@@ -192,6 +192,7 @@ class CDecoder: - UInt32 _lastFilter; - - bool m_IsSolid; -+ bool _errorMode; - - bool _lzMode; - bool _unsupportedFilter; -@@ -200,6 +201,7 @@ class CDecoder: - UInt32 PrevAlignCount; - - bool TablesRead; -+ bool TablesOK; - - CPpmd7 _ppmd; - int PpmEscChar; - diff --git a/meta-oe/recipes-extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch b/meta-oe/recipes-extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch deleted file mode 100644 index 93eb0588c..000000000 --- a/meta-oe/recipes-extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0820ef4b9238c1e39ae5bda32cc08cce3fd3ce89 Mon Sep 17 00:00:00 2001 -From: Nisha Parrakat <Nisha.Parrakat@kpit.com> -Date: Wed, 26 May 2021 19:59:28 +0000 -Subject: [PATCH] fixes the below error - -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp: In member function 'virtual LONG NArchive::NWim::CHandler::GetArchiveProperty(PROPID, PROPVARIANT*)': -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:308:11: error: use of an operand of type 'bool' in 'operator++' is forbidden in C++17 -| 308 | numMethods++; -| | ^~~~~~~~~~ -| ../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:318:9: error: use of an operand of type 'bool' in 'operator++' is forbidden in C++17 -| 318 | numMethods++; - -use unsigned instead of bool -Signed-off-by: Nisha Parrakat <Nisha.Parrakat@kpit.com> - -Upstream-Status: Pending - ---- - CPP/7zip/Archive/Wim/WimHandler.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CPP/7zip/Archive/Wim/WimHandler.cpp b/CPP/7zip/Archive/Wim/WimHandler.cpp -index 27d3298..4ff5cfe 100644 ---- a/CPP/7zip/Archive/Wim/WimHandler.cpp -+++ b/CPP/7zip/Archive/Wim/WimHandler.cpp -@@ -298,7 +298,7 @@ STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value) - - AString res; - -- bool numMethods = 0; -+ unsigned numMethods = 0; - for (unsigned i = 0; i < ARRAY_SIZE(k_Methods); i++) - { - if (methodMask & ((UInt32)1 << i)) diff --git a/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch b/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch deleted file mode 100644 index 2636e7f6f..000000000 --- a/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch +++ /dev/null @@ -1,38 +0,0 @@ -From b2aa209dfc5e59d6329b55b9764782334b63dbe8 Mon Sep 17 00:00:00 2001 -From: Raphael Freudiger <raphael.freudiger@siemens.com> -Date: Wed, 11 Feb 2015 09:11:47 +0100 -Subject: [PATCH] do not override compiler and do not strip - -The default makefile sets the compiler to g++ or gcc. This leads to a wrong architecture when cross-compiling. -Remove the hardcoded compiler and just append the flags to CXX and CC. - -Upstream-Status: Pending -Signed-off-by: Raphael Freudiger <raphael.freudiger@siemens.com> -Reviewed-By: Pascal Bach <pascal.bach@siemens.com> - ---- - makefile.machine | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/makefile.machine b/makefile.machine -index 9e34c34..e9244d9 100644 ---- a/makefile.machine -+++ b/makefile.machine -@@ -2,7 +2,7 @@ - # makefile for Linux (x86, PPC, alpha ...) - # - --OPTFLAGS=-O -s -+OPTFLAGS=-O - - ALLFLAGS=${OPTFLAGS} -pipe \ - -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ -@@ -10,8 +10,6 @@ ALLFLAGS=${OPTFLAGS} -pipe \ - -D_7ZIP_LARGE_PAGES \ - $(LOCAL_FLAGS) - --CXX=g++ --CC=gcc - CC_SHARED=-fPIC - LINK_SHARED=-fPIC -shared -
According to DOC/readme.txt [1]: 7-Zip and p7zip =============== Now there are two different ports of 7-Zip for Linux/macOS: 1) p7zip - another port of 7-Zip for Linux, made by an independent developer. The latest version of p7zip now is 16.02, and that p7zip 16.02 is outdated now. http://sourceforge.net/projects/p7zip/ 2) 7-Zip for Linux/macOS - this package - it's new code with all changes from latest 7-Zip for Windows Add recipe 7-zip [2] to instead of recipe p7zip[3] in which the upstream is dead since 2016 Drop obsolete patches - CVE-2016-9296.patch - CVE-2017-17969.patch - CVE-2018-5996.patch - change_numMethods_from_bool_to_unsigned.patch - 0001-Fix-two-buffer-overflow-vulnerabilities.patch - 0001-Fix-narrowing-errors-Wc-11-narrowing.patch License-Update: DOC/License.txt: Add BSD-2-Clause & BSD-3-Clause License-Update: DOC/copying.txt: newline differs The codec libraries was removed since 21.02 [4] Refer debian to compile 7-zip [5] Add link 7z.so to lib7z.so and create wrapper to command 7za 7zr 7z which required running with absolute path to link the library [1] https://salsa.debian.org/debian/7zip/-/blob/master/DOC/readme.txt?ref_type=heads [2] https://sourceforge.net/projects/p7zip/ [3] https://www.7-zip.org/ [4] https://github.com/p7zip-project/p7zip/commit/6c6ed1eba9ff0c0ded9323600f1f3c686d6b6692 [5] https://salsa.debian.org/debian/7zip/-/blob/master/debian/rules Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> --- .../p7zip_16.02.bb => 7zip/7zip_2409.bb} | 60 +++-- .../0001-support-yocto-cross-compiling.patch | 51 ++++ ...Fix-narrowing-errors-Wc-11-narrowing.patch | 49 ---- .../p7zip/files/CVE-2016-9296.patch | 27 --- .../p7zip/files/CVE-2017-17969.patch | 40 --- .../p7zip/files/CVE-2018-5996.patch | 227 ------------------ ...nge_numMethods_from_bool_to_unsigned.patch | 34 --- ...t_override_compiler_and_do_not_strip.patch | 38 --- 8 files changed, 87 insertions(+), 439 deletions(-) rename meta-oe/recipes-extended/{p7zip/p7zip_16.02.bb => 7zip/7zip_2409.bb} (22%) create mode 100644 meta-oe/recipes-extended/7zip/files/0001-support-yocto-cross-compiling.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/0001-Fix-narrowing-errors-Wc-11-narrowing.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2016-9296.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2017-17969.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/CVE-2018-5996.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/change_numMethods_from_bool_to_unsigned.patch delete mode 100644 meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch