summaryrefslogtreecommitdiffhomepage
path: root/archival
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-07-20 15:20:46 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2013-07-20 15:20:46 +0200
commit5e87e8aebb60bc87d3dd6e07814c7c3b0e8dbbb2 (patch)
tree689dfe8b9b6f648f6e33e87914e521dbe771a6f6 /archival
parenta7ecbed56bb620a0e8cd79372886d0fdfeb362c8 (diff)
unzip: increase PEEK_FROM_END from 16k to 64k
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival')
-rw-r--r--archival/unzip.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/archival/unzip.c b/archival/unzip.c
index e4c824850..c250d7555 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -163,7 +163,14 @@ enum { zip_fd = 3 };
#if ENABLE_DESKTOP
-#define PEEK_FROM_END 16384
+/* Seen in the wild:
+ * Self-extracting PRO2K3XP_32.exe contains 19078464 byte zip archive,
+ * where CDE was nearly 48 kbytes before EOF.
+ * (Surprisingly, it also apparently has *another* CDE structure
+ * closer to the end, with bogus cdf_offset).
+ * To make extraction work, bumped PEEK_FROM_END from 16k to 64k.
+ */
+#define PEEK_FROM_END (64*1024)
/* NB: does not preserve file position! */
static uint32_t find_cdf_offset(void)