summaryrefslogtreecommitdiff
blob: ac1ae14cbe03cdb04076e58c49bbc34e10d708ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);