diff options
| author | CoprDistGit <infra@openeuler.org> | 2025-01-05 09:09:39 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2025-01-05 09:09:39 +0000 |
| commit | f0cc2d5d65b0d4595195a491111fa221d6d186ae (patch) | |
| tree | 56b2a1f4b6fe9ee584b0be6e7c9d530b7d90fd4c | |
| parent | 919a5c04b265d82abe8ebb56227f0f9e42dbf625 (diff) | |
automatic import of p7zipopeneuler22.03_LTS_SP4
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | 0001-add-PIE-compiler-options.patch | 417 | ||||
| -rw-r--r-- | CVE-2016-9296.patch | 25 | ||||
| -rw-r--r-- | CVE-2017-17969.patch | 37 | ||||
| -rw-r--r-- | CVE-2018-10115.patch | 311 | ||||
| -rw-r--r-- | CVE-2018-5996.patch | 223 | ||||
| -rw-r--r-- | fix-build-failed-with-gcc-10.patch | 34 | ||||
| -rw-r--r-- | p7zip.spec | 104 | ||||
| -rw-r--r-- | sources | 1 |
9 files changed, 1153 insertions, 0 deletions
@@ -0,0 +1 @@ +/p7zip_16.02_src_all.tar.bz2 diff --git a/0001-add-PIE-compiler-options.patch b/0001-add-PIE-compiler-options.patch new file mode 100644 index 0000000..16b7fbe --- /dev/null +++ b/0001-add-PIE-compiler-options.patch @@ -0,0 +1,417 @@ +From f8abe228960b60443ef6818efd87728da9d1ab7b Mon Sep 17 00:00:00 2001 +From: chen-jan <chen_aka_jan@163.com> +Date: Tue, 6 Jun 2023 10:33:24 +0800 +Subject: [PATCH] add PIE compiler options + +--- + makefile.afl | 2 +- + makefile.android_arm | 2 +- + makefile.linux_amd64 | 2 +- + makefile.linux_amd64_asm | 2 +- + makefile.linux_amd64_sanitizer | 2 +- + makefile.linux_any_cpu | 2 +- + makefile.linux_any_cpu_gcc_4.X | 2 +- + makefile.linux_clang_amd64_asm | 2 +- + makefile.linux_clang_amd64_asm_sanitize | 2 +- + makefile.linux_cross_aarch64 | 2 +- + makefile.linux_cross_arm | 2 +- + makefile.linux_cross_m68k | 2 +- + makefile.linux_cross_mipsel | 2 +- + makefile.linux_cross_ppc | 2 +- + makefile.linux_cross_ppc64 | 2 +- + makefile.linux_cross_ppc64le | 2 +- + makefile.linux_cross_s390x | 2 +- + makefile.linux_cross_sparc64 | 2 +- + makefile.linux_gcc6_sanitize | 2 +- + makefile.linux_gcc_2.95_no_need_for_libstdc | 2 +- + makefile.linux_other | 2 +- + makefile.linux_s390x | 2 +- + makefile.linux_scan-build | 2 +- + makefile.linux_valgrind | 2 +- + makefile.linux_x32 | 2 +- + makefile.linux_x86_asm_gcc_4.X | 2 +- + makefile.linux_x86_asm_gcc_4.X_fltk | 2 +- + makefile.linux_x86_asm_gcc_mudflap_4.X | 2 +- + makefile.machine | 2 +- + 29 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/makefile.afl b/makefile.afl +index c1c2826..acaecbd 100644 +--- a/makefile.afl ++++ b/makefile.afl +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.android_arm b/makefile.android_arm +index 8ab6073..b7b5542 100644 +--- a/makefile.android_arm ++++ b/makefile.android_arm +@@ -29,7 +29,7 @@ ANDROID_LINK= \ + + OPTFLAGS=-O3 -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + $(ANDROID_FLAGS) \ + $(LOCAL_FLAGS) +diff --git a/makefile.linux_amd64 b/makefile.linux_amd64 +index 898d9df..d2ec855 100644 +--- a/makefile.linux_amd64 ++++ b/makefile.linux_amd64 +@@ -2,7 +2,7 @@ + OPTFLAGS=-O -s + + # use "-m32" to have a 32bits executable +-ALLFLAGS=-m64 ${OPTFLAGS} -pipe \ ++ALLFLAGS=-m64 ${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_amd64_asm b/makefile.linux_amd64_asm +index 075c6a8..5513722 100644 +--- a/makefile.linux_amd64_asm ++++ b/makefile.linux_amd64_asm +@@ -4,7 +4,7 @@ + OPTFLAGS=-O -s + + # use "-m32" to have a 32bits executable +-ALLFLAGS=-m64 ${OPTFLAGS} -pipe \ ++ALLFLAGS=-m64 ${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_amd64_sanitizer b/makefile.linux_amd64_sanitizer +index 93bbe97..6178756 100644 +--- a/makefile.linux_amd64_sanitizer ++++ b/makefile.linux_amd64_sanitizer +@@ -6,7 +6,7 @@ OPTFLAGS=-g2 -fsanitize=address -fno-omit-frame-pointer + # OPTFLAGS=-g2 -fsanitize=thread -fno-omit-frame-pointer + #OPTFLAGS=-g2 -fsanitize=undefined -ftrapv -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fno-omit-frame-pointer + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -DDONT_REDEFINE_NEW \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ +diff --git a/makefile.linux_any_cpu b/makefile.linux_any_cpu +index 9e34c34..a1162b8 100644 +--- a/makefile.linux_any_cpu ++++ b/makefile.linux_any_cpu +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_any_cpu_gcc_4.X b/makefile.linux_any_cpu_gcc_4.X +index be093b5..ec8cf2c 100644 +--- a/makefile.linux_any_cpu_gcc_4.X ++++ b/makefile.linux_any_cpu_gcc_4.X +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_clang_amd64_asm b/makefile.linux_clang_amd64_asm +index ccbb8c3..2f51967 100644 +--- a/makefile.linux_clang_amd64_asm ++++ b/makefile.linux_clang_amd64_asm +@@ -1,7 +1,7 @@ + + OPTFLAGS=-O3 + +-ALLFLAGS=-m64 ${OPTFLAGS} -pipe \ ++ALLFLAGS=-m64 ${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_clang_amd64_asm_sanitize b/makefile.linux_clang_amd64_asm_sanitize +index 65c7f1f..c5c9512 100644 +--- a/makefile.linux_clang_amd64_asm_sanitize ++++ b/makefile.linux_clang_amd64_asm_sanitize +@@ -2,7 +2,7 @@ + OPTFLAGS=-g2 -fsanitize=undefined -ftrapv -fsanitize=address -fno-omit-frame-pointer -fno-sanitize=alignment + + +-ALLFLAGS=-m64 ${OPTFLAGS} -pipe \ ++ALLFLAGS=-m64 ${OPTFLAGS} -pipe -fPIE -pie \ + -DDONT_REDEFINE_NEW \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ +diff --git a/makefile.linux_cross_aarch64 b/makefile.linux_cross_aarch64 +index e27b413..e0abea4 100644 +--- a/makefile.linux_cross_aarch64 ++++ b/makefile.linux_cross_aarch64 +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_arm b/makefile.linux_cross_arm +index 6d240f0..ba3a3ce 100644 +--- a/makefile.linux_cross_arm ++++ b/makefile.linux_cross_arm +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_m68k b/makefile.linux_cross_m68k +index 1ccaf5e..125f173 100644 +--- a/makefile.linux_cross_m68k ++++ b/makefile.linux_cross_m68k +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_mipsel b/makefile.linux_cross_mipsel +index 160140c..479092a 100644 +--- a/makefile.linux_cross_mipsel ++++ b/makefile.linux_cross_mipsel +@@ -6,7 +6,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_ppc b/makefile.linux_cross_ppc +index fe49895..ca94609 100644 +--- a/makefile.linux_cross_ppc ++++ b/makefile.linux_cross_ppc +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_ppc64 b/makefile.linux_cross_ppc64 +index cc34337..f20a951 100644 +--- a/makefile.linux_cross_ppc64 ++++ b/makefile.linux_cross_ppc64 +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_ppc64le b/makefile.linux_cross_ppc64le +index bbe84dc..126886b 100644 +--- a/makefile.linux_cross_ppc64le ++++ b/makefile.linux_cross_ppc64le +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_s390x b/makefile.linux_cross_s390x +index fc067f8..3ccfb25 100644 +--- a/makefile.linux_cross_s390x ++++ b/makefile.linux_cross_s390x +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_cross_sparc64 b/makefile.linux_cross_sparc64 +index 981df5a..62f4f29 100644 +--- a/makefile.linux_cross_sparc64 ++++ b/makefile.linux_cross_sparc64 +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_gcc6_sanitize b/makefile.linux_gcc6_sanitize +index 35f3066..efb5e55 100644 +--- a/makefile.linux_gcc6_sanitize ++++ b/makefile.linux_gcc6_sanitize +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O3 -fsanitize=undefined -fsanitize=bounds-strict -Wshift-overflow=2 -fdelete-null-pointer-checks -Wnull-dereference -fsanitize=bounds-strict -fno-sanitize=alignment + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_gcc_2.95_no_need_for_libstdc b/makefile.linux_gcc_2.95_no_need_for_libstdc +index 8508f31..3a0e9a4 100644 +--- a/makefile.linux_gcc_2.95_no_need_for_libstdc ++++ b/makefile.linux_gcc_2.95_no_need_for_libstdc +@@ -1,7 +1,7 @@ + + OPTFLAGS=-O2 -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_other b/makefile.linux_other +index f28394a..e0f555b 100644 +--- a/makefile.linux_other ++++ b/makefile.linux_other +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_s390x b/makefile.linux_s390x +index 3c9c2ec..0eb2a94 100644 +--- a/makefile.linux_s390x ++++ b/makefile.linux_s390x +@@ -5,7 +5,7 @@ + + OPTFLAGS=-O -m31 -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_scan-build b/makefile.linux_scan-build +index dd33ed0..4182a31 100644 +--- a/makefile.linux_scan-build ++++ b/makefile.linux_scan-build +@@ -4,7 +4,7 @@ + + #OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_valgrind b/makefile.linux_valgrind +index 7d9d0de..f007990 100644 +--- a/makefile.linux_valgrind ++++ b/makefile.linux_valgrind +@@ -4,7 +4,7 @@ + + OPTFLAGS=-g1 + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_x32 b/makefile.linux_x32 +index e49b305..f6fdf2a 100644 +--- a/makefile.linux_x32 ++++ b/makefile.linux_x32 +@@ -2,7 +2,7 @@ + OPTFLAGS=-O -s + + # use "-m32" to have a 32bits executable +-ALLFLAGS=-mx32 ${OPTFLAGS} -pipe \ ++ALLFLAGS=-mx32 ${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_x86_asm_gcc_4.X b/makefile.linux_x86_asm_gcc_4.X +index 1ac339b..33353e4 100644 +--- a/makefile.linux_x86_asm_gcc_4.X ++++ b/makefile.linux_x86_asm_gcc_4.X +@@ -5,7 +5,7 @@ + # OPTFLAGS=-mfpmath=sse -Ofast -flto -march=native -funroll-loops -s + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe -m32 \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie -m32 \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_x86_asm_gcc_4.X_fltk b/makefile.linux_x86_asm_gcc_4.X_fltk +index d5ef798..7c18144 100644 +--- a/makefile.linux_x86_asm_gcc_4.X_fltk ++++ b/makefile.linux_x86_asm_gcc_4.X_fltk +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -m32 -pipe \ ++ALLFLAGS=${OPTFLAGS} -m32 -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX -DUSE_FLTK \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.linux_x86_asm_gcc_mudflap_4.X b/makefile.linux_x86_asm_gcc_mudflap_4.X +index d372a4b..d83d399 100644 +--- a/makefile.linux_x86_asm_gcc_mudflap_4.X ++++ b/makefile.linux_x86_asm_gcc_mudflap_4.X +@@ -4,7 +4,7 @@ + + OPTFLAGS=-g2 + +-ALLFLAGS=${OPTFLAGS} -m32 -pipe -pthread -fmudflapth \ ++ALLFLAGS=${OPTFLAGS} -m32 -pipe -fPIE -pie -pthread -fmudflapth \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +diff --git a/makefile.machine b/makefile.machine +index 9e34c34..a1162b8 100644 +--- a/makefile.machine ++++ b/makefile.machine +@@ -4,7 +4,7 @@ + + OPTFLAGS=-O -s + +-ALLFLAGS=${OPTFLAGS} -pipe \ ++ALLFLAGS=${OPTFLAGS} -pipe -fPIE -pie \ + -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -DNDEBUG -D_REENTRANT -DENV_UNIX \ + -D_7ZIP_LARGE_PAGES \ +-- +2.33.0 + diff --git a/CVE-2016-9296.patch b/CVE-2016-9296.patch new file mode 100644 index 0000000..6e6fc9f --- /dev/null +++ b/CVE-2016-9296.patch @@ -0,0 +1,25 @@ +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/ + +Signed-off-by: André Hentschel <nerv@dawncrow.de> +--- + CPP/7zip/Archive/7z/7zIn.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/CPP/7zip/Archive/7z/7zIn.cpp b/CPP/7zip/Archive/7z/7zIn.cpp +index b0c6b98..7c6dde2 100644 +--- a/CPP/7zip/Archive/7z/7zIn.cpp ++++ b/CPP/7zip/Archive/7z/7zIn.cpp +@@ -1097,7 +1097,8 @@ HRESULT CInArchive::ReadAndDecodePackedStreams( + 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/CVE-2017-17969.patch b/CVE-2017-17969.patch new file mode 100644 index 0000000..9198127 --- /dev/null +++ b/CVE-2017-17969.patch @@ -0,0 +1,37 @@ +From: =?utf-8?q?Antoine_Beaupr=C3=A9?= <anarcat@debian.org> +Date: Fri, 2 Feb 2018 11:11:41 +0100 +Subject: Heap-based buffer overflow in 7zip/Compress/ShrinkDecoder.cpp + +Origin: vendor, https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/27d7/attachment/CVE-2017-17969.patch +Forwarded: https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/#27d7 +Bug: https://sourceforge.net/p/p7zip/bugs/204/ +Bug-Debian: https://bugs.debian.org/888297 +Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2017-17969 +Reviewed-by: Salvatore Bonaccorso <carnil@debian.org> +Last-Update: 2018-02-01 +Applied-Upstream: 18.00-beta + +Signed-off-by: André Hentschel <nerv@dawncrow.de> +--- + CPP/7zip/Compress/ShrinkDecoder.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/CPP/7zip/Compress/ShrinkDecoder.cpp b/CPP/7zip/Compress/ShrinkDecoder.cpp +index 80b7e67..ca37764 100644 +--- a/CPP/7zip/Compress/ShrinkDecoder.cpp ++++ b/CPP/7zip/Compress/ShrinkDecoder.cpp +@@ -121,8 +121,13 @@ 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/CVE-2018-10115.patch b/CVE-2018-10115.patch new file mode 100644 index 0000000..7d9c4bf --- /dev/null +++ b/CVE-2018-10115.patch @@ -0,0 +1,311 @@ +From: Robert Luberda <robert@debian.org> +Date: Tue, 29 May 2018 23:59:09 +0200 +Subject: Fix CVE-2018-10115 + +Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt + + +Bugs-Debian: https://bugs.debian.org/897674 +--- + CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++----- + CPP/7zip/Compress/Rar1Decoder.h | 3 ++- + CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++---- + CPP/7zip/Compress/Rar2Decoder.h | 3 ++- + CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++---- + CPP/7zip/Compress/Rar3Decoder.h | 3 ++- + CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++ + CPP/7zip/Compress/Rar5Decoder.h | 1 + + 8 files changed, 54 insertions(+), 16 deletions(-) + +diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp +index 68030c7..8c890c8 100644 +--- a/CPP/7zip/Compress/Rar1Decoder.cpp ++++ b/CPP/7zip/Compress/Rar1Decoder.cpp +@@ -29,7 +29,7 @@ public: + }; + */ + +-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { } ++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { } + + void CDecoder::InitStructures() + { +@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf() + + void CDecoder::InitData() + { +- if (!m_IsSolid) ++ if (!_isSolid) + { + AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0; + AvrPlc = 0x3500; +@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + if (inSize == NULL || outSize == NULL) + return E_INVALIDARG; + ++ if (_isSolid && !_solidAllowed) ++ return S_FALSE; ++ ++ _solidAllowed = false; ++ + if (!m_OutWindowStream.Create(kHistorySize)) + return E_OUTOFMEMORY; + if (!m_InBitStream.Create(1 << 20)) +@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + + m_UnpackSize = (Int64)*outSize; + m_OutWindowStream.SetStream(outStream); +- m_OutWindowStream.Init(m_IsSolid); ++ m_OutWindowStream.Init(_isSolid); + m_InBitStream.SetStream(inStream); + m_InBitStream.Init(); + + // CCoderReleaser coderReleaser(this); + InitData(); +- if (!m_IsSolid) ++ if (!_isSolid) + { + _errorMode = false; + InitStructures(); +@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + } + if (m_UnpackSize < 0) + return S_FALSE; ++ _solidAllowed = true; + return m_OutWindowStream.Flush(); + } + +@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size) + { + if (size < 1) + return E_INVALIDARG; +- m_IsSolid = ((data[0] & 1) != 0); ++ _isSolid = ((data[0] & 1) != 0); + return S_OK; + } + +diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h +index 01b606b..8abb3a3 100644 +--- a/CPP/7zip/Compress/Rar1Decoder.h ++++ b/CPP/7zip/Compress/Rar1Decoder.h +@@ -38,7 +38,8 @@ public: + UInt32 LastLength; + + Int64 m_UnpackSize; +- bool m_IsSolid; ++ bool _isSolid; ++ bool _solidAllowed; + bool _errorMode; + + UInt32 ReadBits(int numBits); +diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp +index 0580c8d..be8d842 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), ++ _isSolid(false), ++ _solidAllowed(false), + m_TablesOK(false) + { + } +@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + if (inSize == NULL || outSize == NULL) + return E_INVALIDARG; + ++ if (_isSolid && !_solidAllowed) ++ return S_FALSE; ++ _solidAllowed = false; ++ + if (!m_OutWindowStream.Create(kHistorySize)) + return E_OUTOFMEMORY; + if (!m_InBitStream.Create(1 << 20)) +@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + UInt64 pos = 0, unPackSize = *outSize; + + m_OutWindowStream.SetStream(outStream); +- m_OutWindowStream.Init(m_IsSolid); ++ m_OutWindowStream.Init(_isSolid); + m_InBitStream.SetStream(inStream); + m_InBitStream.Init(); + + // CCoderReleaser coderReleaser(this); +- if (!m_IsSolid) ++ if (!_isSolid) + { + InitStructures(); + if (unPackSize == 0) +@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect; + if (!ReadTables()) + return S_FALSE; ++ _solidAllowed = true; + return S_OK; + } + if (!ReadTables()) +@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream * + + if (!ReadLastTables()) + return S_FALSE; ++ ++ _solidAllowed = true; ++ + return m_OutWindowStream.Flush(); + } + +@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size) + { + if (size < 1) + return E_INVALIDARG; +- m_IsSolid = ((data[0] & 1) != 0); ++ _isSolid = ((data[0] & 1) != 0); + return S_OK; + } + +diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h +index 0e9005f..370bce2 100644 +--- a/CPP/7zip/Compress/Rar2Decoder.h ++++ b/CPP/7zip/Compress/Rar2Decoder.h +@@ -138,7 +138,8 @@ class CDecoder : + Byte m_LastLevels[kMaxTableSize]; + + UInt64 m_PackSize; +- bool m_IsSolid; ++ bool _isSolid; ++ bool _solidAllowed; + bool m_TablesOK; + + void InitStructures(); +diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp +index 6cb8a6a..7b85833 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), ++ _isSolid(false), ++ _solidAllowed(false), + _errorMode(false) + { + Ppmd7_Construct(&_ppmd); +@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress) + { + _writtenFileSize = 0; + _unsupportedFilter = false; +- if (!m_IsSolid) ++ if (!_isSolid) + { + _lzSize = 0; + _winPos = 0; +@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress) + if (_errorMode) + return S_FALSE; + +- if (!m_IsSolid || !TablesRead) ++ if (!_isSolid || !TablesRead) + { + bool keepDecompressing; + RINOK(ReadTables(keepDecompressing)); + if (!keepDecompressing) ++ { ++ _solidAllowed = true; + return S_OK; ++ } + } + + for (;;) +@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress) + if (!keepDecompressing) + break; + } ++ ++ _solidAllowed = true; ++ + RINOK(WriteBuf()); + UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize(); + RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize)); +@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream + if (!inSize) + return E_INVALIDARG; + ++ if (_isSolid && !_solidAllowed) ++ return S_FALSE; ++ _solidAllowed = false; ++ + if (!_vmData) + { + _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax); +@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size) + { + if (size < 1) + return E_INVALIDARG; +- m_IsSolid = ((data[0] & 1) != 0); ++ _isSolid = ((data[0] & 1) != 0); + return S_OK; + } + +diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h +index 2f72d7d..32c8943 100644 +--- a/CPP/7zip/Compress/Rar3Decoder.h ++++ b/CPP/7zip/Compress/Rar3Decoder.h +@@ -191,7 +191,8 @@ class CDecoder: + CRecordVector<CTempFilter *> _tempFilters; + UInt32 _lastFilter; + +- bool m_IsSolid; ++ bool _isSolid; ++ bool _solidAllowed; + bool _errorMode; + + bool _lzMode; +diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp +index dc8830f..a826d5a 100644 +--- a/CPP/7zip/Compress/Rar5Decoder.cpp ++++ b/CPP/7zip/Compress/Rar5Decoder.cpp +@@ -72,6 +72,7 @@ CDecoder::CDecoder(): + _writtenFileSize(0), + _dictSizeLog(0), + _isSolid(false), ++ _solidAllowed(false), + _wasInit(false), + _inputBuf(NULL) + { +@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal() + */ + + if (res == S_OK) ++ { ++ _solidAllowed = true; + res = res2; ++ } + + if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize) + return S_FALSE; +@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream + { + try + { ++ if (_isSolid && !_solidAllowed) ++ return S_FALSE; ++ _solidAllowed = false; ++ + if (_dictSizeLog >= sizeof(size_t) * 8) + return E_NOTIMPL; + +diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h +index b0a4dd1..3db5018 100644 +--- a/CPP/7zip/Compress/Rar5Decoder.h ++++ b/CPP/7zip/Compress/Rar5Decoder.h +@@ -271,6 +271,7 @@ class CDecoder: + Byte _dictSizeLog; + bool _tableWasFilled; + bool _isSolid; ++ bool _solidAllowed; + bool _wasInit; + + UInt32 _reps[kNumReps]; diff --git a/CVE-2018-5996.patch b/CVE-2018-5996.patch new file mode 100644 index 0000000..dc3e90a --- /dev/null +++ b/CVE-2018-5996.patch @@ -0,0 +1,223 @@ +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 + +Signed-off-by: André Hentschel <nerv@dawncrow.de> +--- + 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/fix-build-failed-with-gcc-10.patch b/fix-build-failed-with-gcc-10.patch new file mode 100644 index 0000000..d80dcb9 --- /dev/null +++ b/fix-build-failed-with-gcc-10.patch @@ -0,0 +1,34 @@ +From 063cd89c047e924b24405737c892fbcbaf51ba6b Mon Sep 17 00:00:00 2001 +From: sunguoshuai <sunguoshuai@huawei.com> +Date: Fri, 30 Jul 2021 16:08:30 +0800 +Subject: [PATCH] fix build failed with gcc 10 + +--- + CPP/Windows/ErrorMsg.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CPP/Windows/ErrorMsg.cpp b/CPP/Windows/ErrorMsg.cpp +index 99684ae..7949880 100644 +--- a/CPP/Windows/ErrorMsg.cpp ++++ b/CPP/Windows/ErrorMsg.cpp +@@ -13,7 +13,7 @@ UString MyFormatMessage(DWORD errorCode) + const char * txt = 0; + AString msg; + +- switch(errorCode) { ++ switch(HRESULT(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 ; +@@ -43,7 +43,7 @@ bool MyFormatMessage(DWORD messageID, CSysString &message) + const char * txt = 0; + AString msg; + +- switch(messageID) { ++ switch(HRESULT(messageID)) { + case ERROR_NO_MORE_FILES : txt = "No more files"; break ; + case E_NOTIMPL : txt = "E_NOTIMPL"; break ; + case E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; +-- +2.30.0 + diff --git a/p7zip.spec b/p7zip.spec new file mode 100644 index 0000000..ed5c4b5 --- /dev/null +++ b/p7zip.spec @@ -0,0 +1,104 @@ +Name: p7zip +Version: 16.02 +Release: 7 +Summary: Very high compression ratio file archiver +License: LGPLv2 and (LGPLv2+ or CPL) +URL: https://sourceforge.net/projects/p7zip/ +Source0: https://sourceforge.net/projects/p7zip/files/p7zip/%{version}/%{name}_%{version}_src_all.tar.bz2 +Patch0: CVE-2017-17969.patch +Patch1: CVE-2016-9296.patch +Patch2: CVE-2018-5996.patch +Patch3: CVE-2018-10115.patch +Patch4: fix-build-failed-with-gcc-10.patch +Patch5: 0001-add-PIE-compiler-options.patch + +BuildRequires: gcc-c++ +%ifarch %{ix86} +BuildRequires: nasm +%endif +%ifarch x86_64 +BuildRequires: yasm +%endif + +%description +p7zip is a port of 7za.exe for Unix. 7-Zip is a file archiver with a very high +compression ratio. The original version can be found at http://www.7-zip.org/. + +%prep +%autosetup -n %{name}_%{version} -p1 + +# move license files +mv DOC/License.txt DOC/copying.txt . + +%build +%ifarch %{ix86} +cp -f makefile.linux_x86_asm_gcc_4.X makefile.machine +%endif +%ifarch x86_64 +cp -f makefile.linux_amd64_asm makefile.machine +%endif +%ifarch ppc ppc64 +cp -f makefile.linux_any_cpu_gcc_4.X makefile.machine +%endif + +%make_build all2 \ + OPTFLAGS="%{build_cxxflags}" \ + LDFLAGS="%{build_ldflags}" \ + DEST_HOME=%{_prefix} \ + DEST_BIN=%{_bindir} \ + DEST_SHARE=%{_libexecdir}/p7zip \ + DEST_MAN=%{_mandir} + +%check +%make_build test OPTFLAGS="%{build_cxxflags}" LDFLAGS="%{build_ldflags}" + +%install +make install \ + DEST_DIR=%{buildroot} \ + DEST_HOME=%{_prefix} \ + DEST_BIN=%{_bindir} \ + DEST_SHARE=%{_libexecdir}/p7zip \ + DEST_MAN=%{_mandir} + +# remove redundant DOC dir +mv %{buildroot}%{_docdir}/p7zip/DOC/* %{buildroot}%{_docdir}/p7zip +rmdir %{buildroot}%{_docdir}/p7zip/DOC/ + +%files +%{_docdir}/p7zip +%doc contrib/ +%license copying.txt License.txt +%{_bindir}/7za +%{_bindir}/7z +%dir %{_libexecdir}/p7zip/ +%{_libexecdir}/p7zip/7za +%{_libexecdir}/p7zip/7z +%{_libexecdir}/p7zip/7z.so +%{_libexecdir}/p7zip/7zCon.sfx +%{_libexecdir}/p7zip/Codecs +#{_libexecdir}/p7zip/Formats/ +%{_mandir}/man1/7za.1* +%{_mandir}/man1/7z.1* +%exclude %{_mandir}/man1/7zr.1* + +%changelog +* Sun Jan 05 2025 Liu Fushou <liufushou@live.cn> - 16.02-7 +- Add 7z binary for extracting rar files + +* Sat Aug 31 2024 Funda Wang <fundawang@yeah.net> - 16.02-6 +- use correct build flags + +* Tue Jun 06 2023 chenchen <chen_aka_jan@163.com> - 16.02-5 +- add PIE compiler options + +* Fri Jul 30 2021 sunguoshuai <sunguoshuai@huawei.com> - 16.02-4 +- fix build failed with gcc 10 + +* Sat Jul 10 2021 wangyue <wangyue92@huawei.com> - 16.02-3 +- Add gcc-c++ to build dependency + +* Tue Jun 08 2021 wangyue <wangyue92@huawei.com> - 16.02-2 +- Fix CVE-2016-9296 CVE-2017-17969 CVE-2018-10115 CVE-2018-5996 + +* Tue Jan 26 2021 Wei Xiong <myeuler@163.com> +- Package init @@ -0,0 +1 @@ +a0128d661cfe7cc8c121e73519c54fbf p7zip_16.02_src_all.tar.bz2 |
