summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Miller <alex.miller@gmx.de>2024-03-05 21:24:41 +0100
committerYixun Lan <dlan@gentoo.org>2024-03-16 00:30:54 +0000
commitc1ec2a01707d90ca867310347ec12a14679043e5 (patch)
tree0c4ec92bcb9de307295fb13bad0590d164859ba0 /app-arch
parentsys-devel/gcc: add 12.3.1_p20240315 (diff)
downloadgentoo-c1ec2a01707d90ca867310347ec12a14679043e5.tar.gz
gentoo-c1ec2a01707d90ca867310347ec12a14679043e5.tar.bz2
gentoo-c1ec2a01707d90ca867310347ec12a14679043e5.zip
app-arch/torrentzip: Fix 1.2 regression
TorrentZip 1.2 skips files although their checksum comment doesn't match or is entirely missing, which is a serious problem. Pick the patch from upstream git main that fixes the issue. See: https://github.com/0-wiz-0/trrntzip/pull/3#issuecomment-1975326415 Closes: https://github.com/gentoo/gentoo/pull/35634 Signed-off-by: Alexander Miller <alex.miller@gmx.de> Signed-off-by: Yixun Lan <dlan@gentoo.org>
Diffstat (limited to 'app-arch')
-rw-r--r--app-arch/torrentzip/files/torrentzip-1.2-checksum-detection.patch51
-rw-r--r--app-arch/torrentzip/torrentzip-1.2-r1.ebuild (renamed from app-arch/torrentzip/torrentzip-1.2.ebuild)3
2 files changed, 54 insertions, 0 deletions
diff --git a/app-arch/torrentzip/files/torrentzip-1.2-checksum-detection.patch b/app-arch/torrentzip/files/torrentzip-1.2-checksum-detection.patch
new file mode 100644
index 000000000000..ac1ae14cbe03
--- /dev/null
+++ b/app-arch/torrentzip/files/torrentzip-1.2-checksum-detection.patch
@@ -0,0 +1,51 @@
+From 016915e16f32105590a6dc11a4adc988b2f8d9a9 Mon Sep 17 00:00:00 2001
+From: Alexander Miller <alex.miller@gmx.de>
+Date: Mon, 4 Mar 2024 19:26:21 +0100
+Subject: [PATCH] Fix broken detection of missing or wrong TORRENTZIPPED-...
+ comment
+
+The commit listed below introduces a regression where in MigrateZip(),
+variable rc would be clobbered when its value is still needed. That
+completely breaks handling of zips that should be re-zipped because
+of missing or out of date TORRENTZIPPED-... comment.
+
+Rewrite the offending code such that it no longer touches the variable.
+
+Fixes: cf11c900079e ("Check for more errors while reading zip entries")
+---
+ src/trrntzip.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/src/trrntzip.c b/src/trrntzip.c
+index e55d217..49f796e 100644
+--- a/src/trrntzip.c
++++ b/src/trrntzip.c
+@@ -379,16 +379,20 @@ int MigrateZip(const char *zip_path, const char *pDir, WORKSPACE *ws,
+
+ CHECK_DYNAMIC_STRING_ARRAY(ws->FileNameArray, ws->iElements);
+ // Get the filelist from the zip file in original order in ws->FileNameArray
+- rc = GetFileList(UnZipHandle, ws);
+- if (rc != TZ_OK) {
++ switch (GetFileList(UnZipHandle, ws)) {
++ case TZ_OK:
++ break;
++ case TZ_CRITICAL:
+ logprint3(stderr, mig->fProcessLog, ErrorLog(ws),
+- rc == TZ_CRITICAL
+- ? "Error allocating memory!\n"
+- : "Could not list contents of \"%s\". File is corrupted or "
+- "contains entries with bad names.\n",
+- szZipFileName);
++ "Error allocating memory!\n");
++ unzClose(UnZipHandle);
++ return TZ_CRITICAL;
++ default:
++ logprint3(stderr, mig->fProcessLog, ErrorLog(ws),
++ "Could not list contents of \"%s\". File is corrupted or "
++ "contains entries with bad names.\n", szZipFileName);
+ unzClose(UnZipHandle);
+- return rc;
++ return TZ_ERR;
+ }
+ CHECK_DYNAMIC_STRING_ARRAY(ws->FileNameArray, ws->iElements);
+
diff --git a/app-arch/torrentzip/torrentzip-1.2.ebuild b/app-arch/torrentzip/torrentzip-1.2-r1.ebuild
index beb03c69a832..7dfb7fbdde2b 100644
--- a/app-arch/torrentzip/torrentzip-1.2.ebuild
+++ b/app-arch/torrentzip/torrentzip-1.2-r1.ebuild
@@ -23,3 +23,6 @@ DEPEND="
"
DOCS=(AUTHORS NEWS.md README.md)
+PATCHES=(
+ "${FILESDIR}-${P}-checksum-detection.patch"
+)