Package: release.debian.org Control: affects -1 + src:7zip X-Debbugs-Cc: [email protected], [email protected], [email protected] User: [email protected] Usertags: pu Tags: bookworm X-Debbugs-Cc: [email protected] Severity: normal
Hello Release team, [ Reason ] 7zip in bookworm is affected by multiple security issues. https://security-tracker.debian.org/tracker/source-package/7zip no-dsa: CVE-2023-31102 CVE-2023-40481 CVE-2025-11001 CVE-2025-11002 CVE-2025-55188 unimportant: CVE-2024-11612 CVE-2025-53817 The 7-zip project imports new releases in Git but does not provide any history nor CVE information, making it difficult to isolate patches and apply them to older p7zip code base: https://github.com/ip7z/7zip/commits/main/ Hence we're proposing to bump the 7zip codebase to v25.01 (trixie). (v26.00 was recently released but does not ship security fixes.) [ Impact ] Users are vulnerable to several directory traversals when handling archives, both in .7z and other formats that 7zip supports, and memory corruption in a couple format handlers. 7zip is used as a backend by the 'arqiver' graphical interface, so this isn't limited to CLI. There are more such rdeps in trixie (ark, engrampa...), but in bookworm the GUI impact is limited. [ Tests ] Superficial DEP-8 tests are shipped with 7zip (including running its built-in benchmark). Manual tests were performed with various archive formats, directly and through 'arqiver'. Salsa-CI is setup: https://salsa.debian.org/debian/7zip/-/pipelines/1038002 as well as a debusine experiment: https://debusine.debian.net/debian/developers-beuc-secure7zip/work-request/489960/ [ Risks ] Discussing with jmm, "moving with full releases for 7zip seems fine given it's just an edge package and CLI". Moreover, in bookworm, the p7zip->7zip transition didn't happen yet, so 7zip has few reverse dependencies and only provides the bin/7zz executable. 7zip-rar is not introduced yet either. The 7zip codebase is quite stable, and so are the CLI options. [ Checklist ] [X] *all* changes are documented in the d/changelog [X] I reviewed all changes and I approve them [X] attach debdiff against the package in (old)stable [X] the issue is verified as fixed in unstable [ Changes ] We're importing the v25.01 codebase on top of the bookworm packaging. This is not a backport from trixie, as the packaging changed a lot to handle the p7zip->7zip transition, as well as assembly compilation. As the full debdiff is very noisy due to all the new upstream code, care was taken to create a step-by-step minimal import on top of v22, for review: https://salsa.debian.org/debian/7zip/-/tree/debian/bookworm - The packaging was left untouched, except for enabling salsa-ci.yml, and fixing gbp.conf to properly target oldstable. - The patches were refreshed from the trixie version, some renamed to align with trixie: - Patches for ASM support were left out; so it the one introducing codepage changes (functional change) - Obsolete bookworm patches were removed. Attached are debdiffs of debian/, with and without patches/. Full debdiff with new codebase is large (6.4MB) and was not included, however this reuses the trixie tarball identically. [ Other info ] There's a on-going effort to address p7zip security issues by upgrading p7zip to a patched 7zip, but this is a separate issue, and separate SPUs will be filled: https://lists.debian.org/debian-lts/2026/03/msg00009.html This incidentally shows the stability of the 7zip CLI, as the 7zip codebase was ported back to stretch to replace p7zip, with few issues. -- Sylvain Beucler Debian LTS Team
diff -Nru 7zip-22.01+dfsg/debian/changelog 7zip-25.01+dfsg/debian/changelog --- 7zip-22.01+dfsg/debian/changelog 2024-10-17 18:45:17.000000000 +0200 +++ 7zip-25.01+dfsg/debian/changelog 2026-03-06 07:46:31.000000000 +0100 @@ -1,3 +1,29 @@ +7zip (25.01+dfsg-0+deb12u1) bookworm; urgency=high + + * Non-maintainer upload by the LTS Security Team. + * Bump to upstream 25.01, fixes: + - CVE-2023-31102 + - CVE-2023-40481 + - CVE-2024-11612 + - CVE-2025-11001 + - CVE-2025-11002 + - CVE-2025-53817 + - CVE-2025-55188 + * Sync patches from 25.01+dfsg-1~deb13u1: + - keep old patches: + - 000*-Remove-unwanted-hack-for-object-files.patch (no 7z.so) + - drop new patches: + - 000*-Use-c-flags-for-asmc.patch (no ASM) + - 000*-Add-fpic-for-Asmc-options.patch (no ASM) + - 000*-Use-system-locale-to-select-codepage-for-legacy-zip-.patch + (behavior change) + * No changes to packaging to avoid disruption in stable release (no + split package, no ASM support, no files in /usr/lib/7z/, etc.) + * Enable Salsa CI. + * Configure git-buildpackage for oldstable. + + -- Sylvain Beucler <[email protected]> Fri, 06 Mar 2026 07:46:31 +0100 + 7zip (22.01+dfsg-8+deb12u1) bookworm; urgency=medium * Fix CVE-2023-52168 (buffer overflow) and CVE-2023-52169 (buffer over-read) diff -Nru 7zip-22.01+dfsg/debian/gbp.conf 7zip-25.01+dfsg/debian/gbp.conf --- 7zip-22.01+dfsg/debian/gbp.conf 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/gbp.conf 2026-03-04 12:25:37.000000000 +0100 @@ -1,2 +1,5 @@ +[DEFAULT] +debian-branch = debian/bookworm + [import-orig] pristine-tar = True diff -Nru 7zip-22.01+dfsg/debian/salsa-ci.yml 7zip-25.01+dfsg/debian/salsa-ci.yml --- 7zip-22.01+dfsg/debian/salsa-ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ 7zip-25.01+dfsg/debian/salsa-ci.yml 2026-02-11 07:26:32.000000000 +0100 @@ -0,0 +1,3 @@ +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
diff -Nru 7zip-22.01+dfsg/debian/changelog 7zip-25.01+dfsg/debian/changelog --- 7zip-22.01+dfsg/debian/changelog 2024-10-17 18:45:17.000000000 +0200 +++ 7zip-25.01+dfsg/debian/changelog 2026-03-06 07:46:31.000000000 +0100 @@ -1,3 +1,29 @@ +7zip (25.01+dfsg-0+deb12u1) bookworm; urgency=high + + * Non-maintainer upload by the LTS Security Team. + * Bump to upstream 25.01, fixes: + - CVE-2023-31102 + - CVE-2023-40481 + - CVE-2024-11612 + - CVE-2025-11001 + - CVE-2025-11002 + - CVE-2025-53817 + - CVE-2025-55188 + * Sync patches from 25.01+dfsg-1~deb13u1: + - keep old patches: + - 000*-Remove-unwanted-hack-for-object-files.patch (no 7z.so) + - drop new patches: + - 000*-Use-c-flags-for-asmc.patch (no ASM) + - 000*-Add-fpic-for-Asmc-options.patch (no ASM) + - 000*-Use-system-locale-to-select-codepage-for-legacy-zip-.patch + (behavior change) + * No changes to packaging to avoid disruption in stable release (no + split package, no ASM support, no files in /usr/lib/7z/, etc.) + * Enable Salsa CI. + * Configure git-buildpackage for oldstable. + + -- Sylvain Beucler <[email protected]> Fri, 06 Mar 2026 07:46:31 +0100 + 7zip (22.01+dfsg-8+deb12u1) bookworm; urgency=medium * Fix CVE-2023-52168 (buffer overflow) and CVE-2023-52169 (buffer over-read) diff -Nru 7zip-22.01+dfsg/debian/gbp.conf 7zip-25.01+dfsg/debian/gbp.conf --- 7zip-22.01+dfsg/debian/gbp.conf 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/gbp.conf 2026-03-04 12:25:37.000000000 +0100 @@ -1,2 +1,5 @@ +[DEFAULT] +debian-branch = debian/bookworm + [import-orig] pristine-tar = True diff -Nru 7zip-22.01+dfsg/debian/patches/0001-Accept-Debian-build-flags.patch 7zip-25.01+dfsg/debian/patches/0001-Accept-Debian-build-flags.patch --- 7zip-22.01+dfsg/debian/patches/0001-Accept-Debian-build-flags.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0001-Accept-Debian-build-flags.patch 2026-02-11 08:34:56.000000000 +0100 @@ -4,46 +4,54 @@ Forwarded: not-needed --- - CPP/7zip/7zip_gcc.mak | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + CPP/7zip/7zip_gcc.mak | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CPP/7zip/7zip_gcc.mak b/CPP/7zip/7zip_gcc.mak -index 2a24e06..090e498 100755 +index 8fbef14..2756ba4 100644 --- a/CPP/7zip/7zip_gcc.mak +++ b/CPP/7zip/7zip_gcc.mak -@@ -82,7 +82,7 @@ endif +@@ -45,7 +45,7 @@ CFLAGS_DEBUG = -g + else + CFLAGS_DEBUG = -DNDEBUG + ifneq ($(CC), $(CROSS_COMPILE)clang) +-LFLAGS_STRIP = -s ++LFLAGS_STRIP = + endif + endif + +@@ -104,14 +104,14 @@ SHARED_EXT=.dll + LDFLAGS = -shared -DEF $(DEF_FILE) $(LDFLAGS_STATIC) + else + SHARED_EXT=.so +-LDFLAGS = -shared -fPIC $(LDFLAGS_STATIC) ++LDFLAGS = -shared -fPIC $(DEB_LDFLAGS) $(LDFLAGS_STATIC) + CC_SHARED=-fPIC + endif + else -LDFLAGS = $(LDFLAGS_STATIC) +LDFLAGS = $(DEB_LDFLAGS) $(LDFLAGS_STATIC) - # -s is not required for clang, do we need it for GGC ??? - # -s + # -z force-bti + # -s is not required for clang, do we need it for GCC ??? -@@ -138,7 +138,7 @@ endif +@@ -169,7 +169,7 @@ endif --CFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(CC_SHARED) -o $@ -+CFLAGS = $(DEB_CFLAGS) $(DEB_CPPFLAGS) $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(CC_SHARED) -o $@ +-CFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CC_SHARED) -o $@ ++CFLAGS = $(DEB_CFLAGS) $(DEB_CPPFLAGS) $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CC_SHARED) -o $@ ifdef IS_MINGW -@@ -179,7 +179,7 @@ CXX_WARN_FLAGS = +@@ -210,7 +210,7 @@ CXX_WARN_FLAGS = #-Wno-invalid-offsetof #-Wno-reorder --CXXFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(CXXFLAGS_EXTRA) $(CC_SHARED) -o $@ $(CXX_WARN_FLAGS) -+CXXFLAGS = $(DEB_CXXFLAGS) $(DEB_CPPFLAGS) $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(CXXFLAGS_EXTRA) $(CC_SHARED) -o $@ $(CXX_WARN_FLAGS) +-CXXFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CXXFLAGS_EXTRA) $(CC_SHARED) $(CXX_WARN_FLAGS) $(CXX_STD_FLAGS) $(CXX_INCLUDE_FLAGS) -o $@ ++CXXFLAGS = $(DEB_CXXFLAGS) $(DEB_CPPFLAGS) $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CXXFLAGS_EXTRA) $(CC_SHARED) $(CXX_WARN_FLAGS) $(CXX_STD_FLAGS) $(CXX_INCLUDE_FLAGS) -o $@ STATIC_TARGET= ifdef COMPL_STATIC -@@ -192,7 +192,7 @@ all: $(O) $(PROGPATH) $(STATIC_TARGET) - $(O): - $(MY_MKDIR) $(O) - --LFLAGS_ALL = -s $(MY_ARCH_2) $(LDFLAGS) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) -+LFLAGS_ALL = $(MY_ARCH_2) $(LDFLAGS) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) - $(PROGPATH): $(OBJS) - $(CXX) -o $(PROGPATH) $(LFLAGS_ALL) - diff -Nru 7zip-22.01+dfsg/debian/patches/0002-Use-GCC-10-warning-options.patch 7zip-25.01+dfsg/debian/patches/0002-Use-GCC-10-warning-options.patch --- 7zip-22.01+dfsg/debian/patches/0002-Use-GCC-10-warning-options.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0002-Use-GCC-10-warning-options.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Tue, 31 Aug 2021 19:20:33 +0900 -Subject: Use GCC 10 warning options - -Forwarded: not-needed ---- - CPP/7zip/warn_gcc.mak | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CPP/7zip/warn_gcc.mak b/CPP/7zip/warn_gcc.mak -index afc0c9d..230d2f0 100755 ---- a/CPP/7zip/warn_gcc.mak -+++ b/CPP/7zip/warn_gcc.mak -@@ -50,7 +50,7 @@ CFLAGS_WARN_GCC_PPMD_UNALIGNED = \ - -Wno-strict-aliasing \ - - --CFLAGS_WARN = $(CFLAGS_WARN_GCC_9) \ -+CFLAGS_WARN = $(CFLAGS_WARN_GCC_10) \ - - # $(CFLAGS_WARN_GCC_PPMD_UNALIGNED) - diff -Nru 7zip-22.01+dfsg/debian/patches/0002-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 7zip-25.01+dfsg/debian/patches/0002-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch --- 7zip-22.01+dfsg/debian/patches/0002-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 1970-01-01 01:00:00.000000000 +0100 +++ 7zip-25.01+dfsg/debian/patches/0002-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 2026-02-11 08:34:56.000000000 +0100 @@ -0,0 +1,39 @@ +From: YOKOTA Hiroshi <[email protected]> +Date: Wed, 15 Sep 2021 00:02:36 +0900 +Subject: Use getcwd(3) POSIX extension to avoid PATH_MAX macro + +Forwarded: https://sourceforge.net/p/sevenzip/patches/369/ + +This fix helps GNU Hurd. +--- + CPP/Windows/FileDir.cpp | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/CPP/Windows/FileDir.cpp b/CPP/Windows/FileDir.cpp +index 4a4bf52..e1747fc 100644 +--- a/CPP/Windows/FileDir.cpp ++++ b/CPP/Windows/FileDir.cpp +@@ -1141,22 +1141,11 @@ bool GetCurrentDir(FString &path) + { + path.Empty(); + +- #define MY_PATH_MAX PATH_MAX +- // #define MY_PATH_MAX 1024 +- +- char s[MY_PATH_MAX + 1]; +- char *res = getcwd(s, MY_PATH_MAX); +- if (res) +- { +- path = fas2fs(s); +- return true; +- } + { +- // if (errno != ERANGE) return false; + #if defined(__GLIBC__) || defined(__APPLE__) + /* As an extension to the POSIX.1-2001 standard, glibc's getcwd() + allocates the buffer dynamically using malloc(3) if buf is NULL. */ +- res = getcwd(NULL, 0); ++ char *res = getcwd(NULL, 0); + if (res) + { + path = fas2fs(res); diff -Nru 7zip-22.01+dfsg/debian/patches/0003-Disable-hardware-acceleration-support-on-armel.patch 7zip-25.01+dfsg/debian/patches/0003-Disable-hardware-acceleration-support-on-armel.patch --- 7zip-22.01+dfsg/debian/patches/0003-Disable-hardware-acceleration-support-on-armel.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0003-Disable-hardware-acceleration-support-on-armel.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,159 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Tue, 14 Sep 2021 23:51:04 +0900 -Subject: Disable hardware acceleration support on armel - -Use "__ARM_ARCH" to split "armel" and "armhf" - -__ARM_ARCH: - armel = 5 - armhf = 7 ---- - C/Aes.c | 2 ++ - C/AesOpt.c | 2 ++ - C/Sha1.c | 2 ++ - C/Sha1Opt.c | 2 ++ - C/Sha256.c | 2 ++ - C/Sha256Opt.c | 2 ++ - CPP/7zip/Crypto/MyAes.cpp | 2 ++ - 7 files changed, 14 insertions(+) - -diff --git a/C/Aes.c b/C/Aes.c -index 9ad66c5..2af4298 100755 ---- a/C/Aes.c -+++ b/C/Aes.c -@@ -56,6 +56,7 @@ static Byte InvS[256]; - #ifdef MY_CPU_X86_OR_AMD64 - #define USE_HW_AES - #elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) -+ #if (__ARM_ARCH >= 7) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_AES -@@ -69,6 +70,7 @@ static Byte InvS[256]; - #define USE_HW_AES - #endif - #endif -+ #endif - #endif - - #ifdef USE_HW_AES -diff --git a/C/AesOpt.c b/C/AesOpt.c -index 1bdc9a8..60058bc 100755 ---- a/C/AesOpt.c -+++ b/C/AesOpt.c -@@ -508,6 +508,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW) - - #elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) - -+ #if (__ARM_ARCH >= 7) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_AES -@@ -521,6 +522,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW) - #define USE_HW_AES - #endif - #endif -+ #endif - - #ifdef USE_HW_AES - -diff --git a/C/Sha1.c b/C/Sha1.c -index 7adeb44..b6ee739 100755 ---- a/C/Sha1.c -+++ b/C/Sha1.c -@@ -33,6 +33,7 @@ This code is based on public domain code of Steve Reid from Wei Dai's Crypto++ l - #endif - #endif - #elif defined(MY_CPU_ARM_OR_ARM64) -+ #if (__ARM_ARCH >= 7) - #ifdef _MSC_VER - #if _MSC_VER >= 1910 && _MSC_VER >= 1929 && _MSC_FULL_VER >= 192930037 - #define _SHA_SUPPORTED -@@ -46,6 +47,7 @@ This code is based on public domain code of Steve Reid from Wei Dai's Crypto++ l - #define _SHA_SUPPORTED - #endif - #endif -+ #endif - #endif - - void MY_FAST_CALL Sha1_UpdateBlocks(UInt32 state[5], const Byte *data, size_t numBlocks); -diff --git a/C/Sha1Opt.c b/C/Sha1Opt.c -index dcedfbc..574d469 100755 ---- a/C/Sha1Opt.c -+++ b/C/Sha1Opt.c -@@ -214,6 +214,7 @@ void MY_FAST_CALL Sha1_UpdateBlocks_HW(UInt32 state[5], const Byte *data, size_t - - #elif defined(MY_CPU_ARM_OR_ARM64) - -+ #if (__ARM_ARCH >= 7) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_SHA -@@ -227,6 +228,7 @@ void MY_FAST_CALL Sha1_UpdateBlocks_HW(UInt32 state[5], const Byte *data, size_t - #define USE_HW_SHA - #endif - #endif -+ #endif - - #ifdef USE_HW_SHA - -diff --git a/C/Sha256.c b/C/Sha256.c -index c03b75a..e997ad4 100755 ---- a/C/Sha256.c -+++ b/C/Sha256.c -@@ -33,6 +33,7 @@ This code is based on public domain code from Wei Dai's Crypto++ library. */ - #endif - #endif - #elif defined(MY_CPU_ARM_OR_ARM64) -+ #if (__ARM_ARCH >= 7) - #ifdef _MSC_VER - #if _MSC_VER >= 1910 - #define _SHA_SUPPORTED -@@ -46,6 +47,7 @@ This code is based on public domain code from Wei Dai's Crypto++ library. */ - #define _SHA_SUPPORTED - #endif - #endif -+ #endif - #endif - - void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); -diff --git a/C/Sha256Opt.c b/C/Sha256Opt.c -index cc8c53e..b13cf7b 100755 ---- a/C/Sha256Opt.c -+++ b/C/Sha256Opt.c -@@ -214,6 +214,7 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size - - #elif defined(MY_CPU_ARM_OR_ARM64) - -+ #if (__ARM_ARCH >= 7) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_SHA -@@ -227,6 +228,7 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size - #define USE_HW_SHA - #endif - #endif -+ #endif - - #ifdef USE_HW_SHA - -diff --git a/CPP/7zip/Crypto/MyAes.cpp b/CPP/7zip/Crypto/MyAes.cpp -index 7e7cced..0df7b2f 100755 ---- a/CPP/7zip/Crypto/MyAes.cpp -+++ b/CPP/7zip/Crypto/MyAes.cpp -@@ -86,6 +86,7 @@ STDMETHODIMP CAesCoder::SetInitVector(const Byte *data, UInt32 size) - #ifdef MY_CPU_X86_OR_AMD64 - #define USE_HW_AES - #elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) -+ #if (__ARM_ARCH >= 7) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_AES -@@ -99,6 +100,7 @@ STDMETHODIMP CAesCoder::SetInitVector(const Byte *data, UInt32 size) - #define USE_HW_AES - #endif - #endif -+ #endif - #endif - - #endif diff -Nru 7zip-22.01+dfsg/debian/patches/0003-Disable-local-echo-display-when-in-input-passwords-C.patch 7zip-25.01+dfsg/debian/patches/0003-Disable-local-echo-display-when-in-input-passwords-C.patch --- 7zip-22.01+dfsg/debian/patches/0003-Disable-local-echo-display-when-in-input-passwords-C.patch 1970-01-01 01:00:00.000000000 +0100 +++ 7zip-25.01+dfsg/debian/patches/0003-Disable-local-echo-display-when-in-input-passwords-C.patch 2026-02-11 08:34:56.000000000 +0100 @@ -0,0 +1,88 @@ +From: YOKOTA Hiroshi <[email protected]> +Date: Tue, 22 Feb 2022 21:02:14 +0900 +Subject: Disable local echo display when in input passwords (Closes: + #1006238) + +Forwarded: https://sourceforge.net/p/sevenzip/patches/381/ +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1006238 +--- + CPP/7zip/UI/Console/UserInputUtils.cpp | 33 ++++++++++++++++++++++++++++++++- + CPP/Common/StdInStream.h | 3 +++ + 2 files changed, 35 insertions(+), 1 deletion(-) + +diff --git a/CPP/7zip/UI/Console/UserInputUtils.cpp b/CPP/7zip/UI/Console/UserInputUtils.cpp +index 6c3c85a..2832b00 100644 +--- a/CPP/7zip/UI/Console/UserInputUtils.cpp ++++ b/CPP/7zip/UI/Console/UserInputUtils.cpp +@@ -57,9 +57,18 @@ NUserAnswerMode::EEnum ScanUserYesNoAllQuit(CStdOutStream *outStream) + #ifdef _WIN32 + #ifndef UNDER_CE + #define MY_DISABLE_ECHO ++#define MY_DISABLE_ECHO_WIN32 + #endif + #endif + ++#ifdef unix ++#include <stdio.h> ++#include <termios.h> ++#include <unistd.h> ++#define MY_DISABLE_ECHO ++#define MY_DISABLE_ECHO_UNIX ++#endif ++ + static bool GetPassword(CStdOutStream *outStream, UString &psw) + { + if (outStream) +@@ -72,7 +81,7 @@ static bool GetPassword(CStdOutStream *outStream, UString &psw) + outStream->Flush(); + } + +- #ifdef MY_DISABLE_ECHO ++ #ifdef MY_DISABLE_ECHO_WIN32 + + const HANDLE console = GetStdHandle(STD_INPUT_HANDLE); + +@@ -91,6 +100,28 @@ static bool GetPassword(CStdOutStream *outStream, UString &psw) + if (wasChanged) + SetConsoleMode(console, mode); + ++ #elif defined(MY_DISABLE_ECHO_UNIX) ++ ++ const int ifd = fileno(&(*g_StdIn)); ++ bool wasChanged = false; ++ struct termios old_mode = {}; ++ struct termios new_mode = {}; ++ ++ if (tcgetattr(ifd, &old_mode) == 0) { ++ new_mode = old_mode; ++ new_mode.c_lflag &= ~ECHO; ++ ++ tcsetattr(ifd, TCSAFLUSH, &new_mode); ++ ++ wasChanged = true; ++ } ++ ++ const bool res = g_StdIn.ScanUStringUntilNewLine(psw); ++ ++ if (wasChanged) { ++ tcsetattr(ifd, TCSAFLUSH, &old_mode); ++ } ++ + #else + + const bool res = g_StdIn.ScanUStringUntilNewLine(psw); +diff --git a/CPP/Common/StdInStream.h b/CPP/Common/StdInStream.h +index 2253c43..69d84fe 100644 +--- a/CPP/Common/StdInStream.h ++++ b/CPP/Common/StdInStream.h +@@ -23,7 +23,10 @@ public: + + /* + ~CStdInStream() { Close(); } ++ */ + ++ operator FILE *() { return _stream; } ++ /* + bool Open(LPCTSTR fileName) throw(); + bool Close() throw(); + */ diff -Nru 7zip-22.01+dfsg/debian/patches/0004-Guard-ARM-v8-feature-from-old-architecture.patch 7zip-25.01+dfsg/debian/patches/0004-Guard-ARM-v8-feature-from-old-architecture.patch --- 7zip-22.01+dfsg/debian/patches/0004-Guard-ARM-v8-feature-from-old-architecture.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0004-Guard-ARM-v8-feature-from-old-architecture.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Wed, 13 Oct 2021 07:59:13 +0900 -Subject: Guard ARM v8 feature from old architecture - -Forwarded: not-needed ---- - C/7zCrc.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/C/7zCrc.c b/C/7zCrc.c -index c7ec353..230d8a5 100755 ---- a/C/7zCrc.c -+++ b/C/7zCrc.c -@@ -81,8 +81,9 @@ UInt32 MY_FAST_CALL CrcUpdateT1(UInt32 v, const void *data, size_t size, const U - #define USE_ARM64_CRC - #endif - #endif -- #elif (defined(__clang__) && (__clang_major__ >= 3)) \ -- || (defined(__GNUC__) && (__GNUC__ > 4)) -+ #elif ( (defined(__clang__) && (__clang_major__ >= 3)) || \ -+ (defined(__GNUC__) && (__GNUC__ > 4) ) ) && \ -+ (__ARM_ARCH >= 8) - #if !defined(__ARM_FEATURE_CRC32) - #define __ARM_FEATURE_CRC32 1 - #if (!defined(__clang__) || (__clang_major__ > 3)) // fix these numbers diff -Nru 7zip-22.01+dfsg/debian/patches/0005-Add-note-for-unexpected-recursive-operations-behavio.patch 7zip-25.01+dfsg/debian/patches/0005-Add-note-for-unexpected-recursive-operations-behavio.patch --- 7zip-22.01+dfsg/debian/patches/0005-Add-note-for-unexpected-recursive-operations-behavio.patch 1970-01-01 01:00:00.000000000 +0100 +++ 7zip-25.01+dfsg/debian/patches/0005-Add-note-for-unexpected-recursive-operations-behavio.patch 2026-02-11 08:34:56.000000000 +0100 @@ -0,0 +1,25 @@ +From: YOKOTA Hiroshi <[email protected]> +Date: Fri, 3 Jan 2025 10:11:58 +0900 +Subject: Add note for unexpected recursive operations behavior to usage text + +Forwarded: https://sourceforge.net/p/sevenzip/bugs/2540/ +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1091693 +--- + CPP/7zip/UI/Console/Main.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/CPP/7zip/UI/Console/Main.cpp b/CPP/7zip/UI/Console/Main.cpp +index 5094452..7511322 100644 +--- a/CPP/7zip/UI/Console/Main.cpp ++++ b/CPP/7zip/UI/Console/Main.cpp +@@ -133,6 +133,10 @@ static const char * const kHelpString = + PROG_POSTFIX + " <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]\n" + "\n" ++ "Note:\n" ++ " If <file_names> is not specified, 7z" PROG_POSTFIX " implicitly uses \".\" as <file_names>.\n" ++ " This means recursively add/delete/extract files to/from <arcive_name>.\n" ++ "\n" + "<Commands>\n" + " a : Add files to archive\n" + " b : Benchmark\n" diff -Nru 7zip-22.01+dfsg/debian/patches/0005-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 7zip-25.01+dfsg/debian/patches/0005-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch --- 7zip-22.01+dfsg/debian/patches/0005-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0005-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,39 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Wed, 15 Sep 2021 00:02:36 +0900 -Subject: Use getcwd(3) POSIX extension to avoid PATH_MAX macro - -Forwarded: not-needed - -This fix helps GNU Hurd. ---- - CPP/Windows/FileDir.cpp | 13 +------------ - 1 file changed, 1 insertion(+), 12 deletions(-) - -diff --git a/CPP/Windows/FileDir.cpp b/CPP/Windows/FileDir.cpp -index 5e95204..9b5394e 100755 ---- a/CPP/Windows/FileDir.cpp -+++ b/CPP/Windows/FileDir.cpp -@@ -906,22 +906,11 @@ bool GetCurrentDir(FString &path) - { - path.Empty(); - -- #define MY__PATH_MAX PATH_MAX -- // #define MY__PATH_MAX 1024 -- -- char s[MY__PATH_MAX + 1]; -- char *res = getcwd(s, MY__PATH_MAX); -- if (res) -- { -- path = fas2fs(s); -- return true; -- } - { -- // if (errno != ERANGE) return false; - #if defined(__GLIBC__) || defined(__APPLE__) - /* As an extension to the POSIX.1-2001 standard, glibc's getcwd() - allocates the buffer dynamically using malloc(3) if buf is NULL. */ -- res = getcwd(NULL, 0); -+ char *res = getcwd(NULL, 0); - if (res) - { - path = fas2fs(res); diff -Nru 7zip-22.01+dfsg/debian/patches/0006-Disable-local-echo-display-when-in-input-passwords-C.patch 7zip-25.01+dfsg/debian/patches/0006-Disable-local-echo-display-when-in-input-passwords-C.patch --- 7zip-22.01+dfsg/debian/patches/0006-Disable-local-echo-display-when-in-input-passwords-C.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0006-Disable-local-echo-display-when-in-input-passwords-C.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,83 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Tue, 22 Feb 2022 21:02:14 +0900 -Subject: Disable local echo display when in input passwords (Closes: - #1006238) - ---- - CPP/7zip/UI/Console/UserInputUtils.cpp | 33 ++++++++++++++++++++++++++++++++- - CPP/Common/StdInStream.h | 1 + - 2 files changed, 33 insertions(+), 1 deletion(-) - -diff --git a/CPP/7zip/UI/Console/UserInputUtils.cpp b/CPP/7zip/UI/Console/UserInputUtils.cpp -index b3ca88e..6f60a78 100755 ---- a/CPP/7zip/UI/Console/UserInputUtils.cpp -+++ b/CPP/7zip/UI/Console/UserInputUtils.cpp -@@ -56,9 +56,18 @@ NUserAnswerMode::EEnum ScanUserYesNoAllQuit(CStdOutStream *outStream) - #ifdef _WIN32 - #ifndef UNDER_CE - #define MY_DISABLE_ECHO -+#define MY_DISABLE_ECHO_WIN32 - #endif - #endif - -+#ifdef unix -+#include <stdio.h> -+#include <termios.h> -+#include <unistd.h> -+#define MY_DISABLE_ECHO -+#define MY_DISABLE_ECHO_UNIX -+#endif -+ - static bool GetPassword(CStdOutStream *outStream, UString &psw) - { - if (outStream) -@@ -71,7 +80,7 @@ static bool GetPassword(CStdOutStream *outStream, UString &psw) - outStream->Flush(); - } - -- #ifdef MY_DISABLE_ECHO -+ #ifdef MY_DISABLE_ECHO_WIN32 - - HANDLE console = GetStdHandle(STD_INPUT_HANDLE); - bool wasChanged = false; -@@ -83,6 +92,28 @@ static bool GetPassword(CStdOutStream *outStream, UString &psw) - if (wasChanged) - SetConsoleMode(console, mode); - -+ #elif defined(MY_DISABLE_ECHO_UNIX) -+ -+ int ifd = fileno(&(*g_StdIn)); -+ bool wasChanged = false; -+ struct termios old_mode = {}; -+ struct termios new_mode = {}; -+ -+ if (tcgetattr(ifd, &old_mode) == 0) { -+ new_mode = old_mode; -+ new_mode.c_lflag &= ~ECHO; -+ -+ tcsetattr(ifd, TCSAFLUSH, &new_mode); -+ -+ wasChanged = true; -+ } -+ -+ bool res = g_StdIn.ScanUStringUntilNewLine(psw); -+ -+ if (wasChanged) { -+ tcsetattr(ifd, TCSAFLUSH, &old_mode); -+ } -+ - #else - - bool res = g_StdIn.ScanUStringUntilNewLine(psw); -diff --git a/CPP/Common/StdInStream.h b/CPP/Common/StdInStream.h -index 7f27e92..23c7bf8 100755 ---- a/CPP/Common/StdInStream.h -+++ b/CPP/Common/StdInStream.h -@@ -23,6 +23,7 @@ public: - - ~CStdInStream() { Close(); } - -+ operator FILE *() { return _stream; } - bool Open(LPCTSTR fileName) throw(); - bool Close() throw(); - diff -Nru 7zip-22.01+dfsg/debian/patches/0007-Manually-de-reference-pointers.patch 7zip-25.01+dfsg/debian/patches/0007-Manually-de-reference-pointers.patch --- 7zip-22.01+dfsg/debian/patches/0007-Manually-de-reference-pointers.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0007-Manually-de-reference-pointers.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,119 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Sun, 21 Aug 2022 16:50:54 +0900 -Subject: Manually de-reference pointers - -Implicit de-reference breaks link time optimization (LTO). - -Pointer type mismatch breaks LTO because it violates strict-aliasing rules. - -C/Aes.h: - typedef void (MY_FAST_CALL *AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks); -C/AesOpt.c: - void MY_FAST_CALL name(__m128i *p, __m128i *data, size_t numBlocks) - void MY_FAST_CALL name(v128 *p, v128 *data, size_t numBlocks) ---- - C/AesOpt.c | 28 ++++++++++++++++++++++++++-- - 1 file changed, 26 insertions(+), 2 deletions(-) - -diff --git a/C/AesOpt.c b/C/AesOpt.c -index 60058bc..1a81546 100755 ---- a/C/AesOpt.c -+++ b/C/AesOpt.c -@@ -61,7 +61,7 @@ - #endif - - #define AES_FUNC_START(name) \ -- void MY_FAST_CALL name(__m128i *p, __m128i *data, size_t numBlocks) -+ void MY_FAST_CALL name(UInt32 *d_p, Byte *d_data, size_t numBlocks) - - #define AES_FUNC_START2(name) \ - AES_FUNC_START (name); \ -@@ -77,6 +77,9 @@ AES_FUNC_START (name) - - AES_FUNC_START2 (AesCbc_Encode_HW) - { -+ __m128i *p = (__m128i *)(void *)d_p; -+ __m128i *data = (__m128i *)(void *)d_data; -+ - __m128i m = *p; - const __m128i k0 = p[2]; - const __m128i k1 = p[3]; -@@ -218,6 +221,9 @@ AES_FUNC_START2 (AesCbc_Encode_HW) - - AES_FUNC_START2 (AesCbc_Decode_HW) - { -+ __m128i *p = (__m128i *)(void *)d_p; -+ __m128i *data = (__m128i *)(void *)d_data; -+ - __m128i iv = *p; - const __m128i *wStart = p + *(const UInt32 *)(p + 1) * 2 + 2 - 1; - const __m128i *dataEnd; -@@ -271,6 +277,9 @@ AES_FUNC_START2 (AesCbc_Decode_HW) - - AES_FUNC_START2 (AesCtr_Code_HW) - { -+ __m128i *p = (__m128i *)(void *)d_p; -+ __m128i *data = (__m128i *)(void *)d_data; -+ - __m128i ctr = *p; - UInt32 numRoundsMinus2 = *(const UInt32 *)(p + 1) * 2 - 1; - const __m128i *dataEnd; -@@ -344,6 +353,9 @@ AES_FUNC_START (name) - - VAES_FUNC_START2 (AesCbc_Decode_HW_256) - { -+ __m128i *p = (__m128i *)(void *)d_p; -+ __m128i *data = (__m128i *)(void *)d_data; -+ - __m128i iv = *p; - const __m128i *dataEnd; - UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; -@@ -415,6 +427,9 @@ AVX2: _mm256_add_epi64 : vpaddq ymm, ymm, ymm - - VAES_FUNC_START2 (AesCtr_Code_HW_256) - { -+ __m128i *p = (__m128i *)(void *)d_p; -+ __m128i *data = (__m128i *)(void *)d_data; -+ - __m128i ctr = *p; - UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; - const __m128i *dataEnd; -@@ -553,7 +568,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW) - typedef uint8x16_t v128; - - #define AES_FUNC_START(name) \ -- void MY_FAST_CALL name(v128 *p, v128 *data, size_t numBlocks) -+ void MY_FAST_CALL name(UInt32 *d_p, Byte *d_data, size_t numBlocks) - - #define AES_FUNC_START2(name) \ - AES_FUNC_START (name); \ -@@ -573,6 +588,9 @@ AES_FUNC_START (name) - - AES_FUNC_START2 (AesCbc_Encode_HW) - { -+ v128 *p = (v128 *)(void *)d_p; -+ v128 *data = (v128 *)(void *)d_data; -+ - v128 m = *p; - const v128 k0 = p[2]; - const v128 k1 = p[3]; -@@ -674,6 +692,9 @@ AES_FUNC_START2 (AesCbc_Encode_HW) - - AES_FUNC_START2 (AesCbc_Decode_HW) - { -+ v128 *p = (v128 *)(void *)d_p; -+ v128 *data = (v128 *)(void *)d_data; -+ - v128 iv = *p; - const v128 *wStart = p + ((size_t)*(const UInt32 *)(p + 1)) * 2; - const v128 *dataEnd; -@@ -726,6 +747,9 @@ AES_FUNC_START2 (AesCbc_Decode_HW) - - AES_FUNC_START2 (AesCtr_Code_HW) - { -+ v128 *p = (v128 *)(void *)d_p; -+ v128 *data = (v128 *)(void *)d_data; -+ - uint64x2_t ctr = vreinterpretq_u64_u8(*p); - const v128 *wEnd = p + ((size_t)*(const UInt32 *)(p + 1)) * 2; - const v128 *dataEnd; diff -Nru 7zip-22.01+dfsg/debian/patches/0008-Remove-unwanted-hack-for-object-files.patch 7zip-25.01+dfsg/debian/patches/0008-Remove-unwanted-hack-for-object-files.patch --- 7zip-22.01+dfsg/debian/patches/0008-Remove-unwanted-hack-for-object-files.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0008-Remove-unwanted-hack-for-object-files.patch 2026-02-11 08:34:01.000000000 +0100 @@ -7,17 +7,17 @@ CPP/7zip/7zip_gcc.mak | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -diff --git a/CPP/7zip/7zip_gcc.mak b/CPP/7zip/7zip_gcc.mak -index 090e498..525c24e 100755 ---- a/CPP/7zip/7zip_gcc.mak -+++ b/CPP/7zip/7zip_gcc.mak -@@ -25,8 +25,7 @@ endif - CFLAGS_BASE_LIST = -c +Index: 7zip/CPP/7zip/7zip_gcc.mak +=================================================================== +--- 7zip.orig/CPP/7zip/7zip_gcc.mak ++++ 7zip/CPP/7zip/7zip_gcc.mak +@@ -51,8 +51,7 @@ endif + # CFLAGS_BASE_LIST = -S CFLAGS_BASE = -O2 $(CFLAGS_BASE_LIST) $(CFLAGS_WARN_WALL) $(CFLAGS_WARN) \ -- -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ +- $(CFLAGS_DEBUG) -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ - -fPIC -+ -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE - - # -D_7ZIP_AFFINITY_DISABLE ++ $(CFLAGS_DEBUG) -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + FLAGS_FLTO = -ffunction-sections + FLAGS_FLTO = -flto diff -Nru 7zip-22.01+dfsg/debian/patches/0009-Fix-CVE-2023-52168-and-CVE-2023-52169.patch 7zip-25.01+dfsg/debian/patches/0009-Fix-CVE-2023-52168-and-CVE-2023-52169.patch --- 7zip-22.01+dfsg/debian/patches/0009-Fix-CVE-2023-52168-and-CVE-2023-52169.patch 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/0009-Fix-CVE-2023-52168-and-CVE-2023-52169.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,146 +0,0 @@ -From: YOKOTA Hiroshi <[email protected]> -Date: Wed, 2 Oct 2024 12:09:49 +0900 -Subject: Fix CVE-2023-52168 and CVE-2023-52169 - -Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-52168 -Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-52169 -Forwarded: not-needed - -This patch was extracted from reporter's blog and -upstream/23.01..upstream/24.05 diff. -> https://dfir.ru/2024/06/19/vulnerabilities-in-7-zip-and-ntfs3/ ---- - CPP/7zip/Archive/NtfsHandler.cpp | 89 +++++++++++++++++++++++++--------------- - 1 file changed, 57 insertions(+), 32 deletions(-) - -diff --git a/CPP/7zip/Archive/NtfsHandler.cpp b/CPP/7zip/Archive/NtfsHandler.cpp -index 0b9ee29..39a1299 100755 ---- a/CPP/7zip/Archive/NtfsHandler.cpp -+++ b/CPP/7zip/Archive/NtfsHandler.cpp -@@ -71,6 +71,7 @@ struct CHeader - { - unsigned SectorSizeLog; - unsigned ClusterSizeLog; -+ unsigned MftRecordSizeLog; - // Byte MediaType; - UInt32 NumHiddenSectors; - UInt64 NumSectors; -@@ -156,14 +157,47 @@ bool CHeader::Parse(const Byte *p) - - NumClusters = NumSectors >> sectorsPerClusterLog; - -- G64(p + 0x30, MftCluster); -+ G64(p + 0x30, MftCluster); // $MFT. - // G64(p + 0x38, Mft2Cluster); -- G64(p + 0x48, SerialNumber); -- UInt32 numClustersInMftRec; -- UInt32 numClustersInIndexBlock; -- G32(p + 0x40, numClustersInMftRec); // -10 means 2 ^10 = 1024 bytes. -- G32(p + 0x44, numClustersInIndexBlock); -- return (numClustersInMftRec < 256 && numClustersInIndexBlock < 256); -+ G64(p + 0x48, SerialNumber); // $MFTMirr -+ -+ /* -+ numClusters_per_MftRecord: -+ numClusters_per_IndexBlock: -+ only low byte from 4 bytes is used. Another 3 high bytes are zeros. -+ If the number is positive (number < 0x80), -+ then it represents the number of clusters. -+ If the number is negative (number >= 0x80), -+ then the size of the file record is 2 raised to the absolute value of this number. -+ example: (0xF6 == -10) means 2^10 = 1024 bytes. -+ */ -+ { -+ UInt32 numClusters_per_MftRecord; -+ G32(p + 0x40, numClusters_per_MftRecord); -+ if (numClusters_per_MftRecord >= 0x100 || numClusters_per_MftRecord == 0) -+ return false; -+ if (numClusters_per_MftRecord < 0x80) -+ { -+ const int t = GetLog(numClusters_per_MftRecord); -+ if (t < 0) -+ return false; -+ MftRecordSizeLog = (unsigned)t + ClusterSizeLog; -+ } -+ else -+ MftRecordSizeLog = 0x100 - numClusters_per_MftRecord; -+ // what exact MFT record sizes are possible and supported by Windows? -+ // do we need to change this limit here? -+ const unsigned k_MftRecordSizeLog_MAX = 12; -+ if (MftRecordSizeLog > k_MftRecordSizeLog_MAX) -+ return false; -+ if (MftRecordSizeLog < SectorSizeLog) -+ return false; -+ } -+ { -+ UInt32 numClusters_per_IndexBlock; -+ G32(p + 0x44, numClusters_per_IndexBlock); -+ return (numClusters_per_IndexBlock < 0x100); -+ } - } - - struct CMftRef -@@ -266,8 +300,8 @@ bool CFileNameAttr::Parse(const Byte *p, unsigned size) - G32(p + 0x38, Attrib); - // G16(p + 0x3C, PackedEaSize); - NameType = p[0x41]; -- unsigned len = p[0x40]; -- if (0x42 + len > size) -+ const unsigned len = p[0x40]; -+ if (0x42 + len * 2 > size) - return false; - if (len != 0) - GetString(p + 0x42, len, Name); -@@ -1730,26 +1764,22 @@ HRESULT CDatabase::Open() - - SeekToCluster(Header.MftCluster); - -- CMftRec mftRec; -- UInt32 numSectorsInRec; -- -+ // we use ByteBuf for records reading. -+ // so the size of ByteBuf must be >= mftRecordSize -+ const size_t recSize = (size_t)1 << Header.MftRecordSizeLog; -+ const size_t kBufSize = MyMax((size_t)(1 << 15), recSize); -+ ByteBuf.Alloc(kBufSize); -+ RINOK(ReadStream_FALSE(InStream, ByteBuf, recSize)) -+ { -+ const UInt32 allocSize = Get32(ByteBuf + 0x1C); -+ if (allocSize != recSize) -+ return S_FALSE; -+ } -+ // MftRecordSizeLog >= SectorSizeLog -+ const UInt32 numSectorsInRec = 1u << (Header.MftRecordSizeLog - Header.SectorSizeLog); - CMyComPtr<IInStream> mftStream; -+ CMftRec mftRec; - { -- UInt32 blockSize = 1 << 12; -- ByteBuf.Alloc(blockSize); -- RINOK(ReadStream_FALSE(InStream, ByteBuf, blockSize)); -- -- { -- UInt32 allocSize = Get32(ByteBuf + 0x1C); -- int t = GetLog(allocSize); -- if (t < (int)Header.SectorSizeLog) -- return S_FALSE; -- RecSizeLog = t; -- if (RecSizeLog > 15) -- return S_FALSE; -- } -- -- numSectorsInRec = 1 << (RecSizeLog - Header.SectorSizeLog); - if (!mftRec.Parse(ByteBuf, Header.SectorSizeLog, numSectorsInRec, 0, NULL)) - return S_FALSE; - if (!mftRec.IsFILE()) -@@ -1768,11 +1798,6 @@ HRESULT CDatabase::Open() - if ((mftSize >> 4) > Header.GetPhySize_Clusters()) - return S_FALSE; - -- const size_t kBufSize = (1 << 15); -- const size_t recSize = ((size_t)1 << RecSizeLog); -- if (kBufSize < recSize) -- return S_FALSE; -- - { - const UInt64 numFiles = mftSize >> RecSizeLog; - if (numFiles > (1 << 30)) diff -Nru 7zip-22.01+dfsg/debian/patches/series 7zip-25.01+dfsg/debian/patches/series --- 7zip-22.01+dfsg/debian/patches/series 2024-10-17 18:28:14.000000000 +0200 +++ 7zip-25.01+dfsg/debian/patches/series 2026-02-11 08:34:56.000000000 +0100 @@ -1,9 +1,5 @@ 0001-Accept-Debian-build-flags.patch -0002-Use-GCC-10-warning-options.patch -0003-Disable-hardware-acceleration-support-on-armel.patch -0004-Guard-ARM-v8-feature-from-old-architecture.patch -0005-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch -0006-Disable-local-echo-display-when-in-input-passwords-C.patch -0007-Manually-de-reference-pointers.patch +0002-Use-getcwd-3-POSIX-extension-to-avoid-PATH_MAX-macro.patch +0003-Disable-local-echo-display-when-in-input-passwords-C.patch +0005-Add-note-for-unexpected-recursive-operations-behavio.patch 0008-Remove-unwanted-hack-for-object-files.patch -0009-Fix-CVE-2023-52168-and-CVE-2023-52169.patch diff -Nru 7zip-22.01+dfsg/debian/salsa-ci.yml 7zip-25.01+dfsg/debian/salsa-ci.yml --- 7zip-22.01+dfsg/debian/salsa-ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ 7zip-25.01+dfsg/debian/salsa-ci.yml 2026-02-11 07:26:32.000000000 +0100 @@ -0,0 +1,3 @@ +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml

