From c2dcb7cf63993a80208db653d1f9d39eab5a4567 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 26 Jul 2008 16:50:24 +0000 Subject: [PATCH] unzip: give better error message when presented with unsupported zip file. Add zip documentation and an example of file we cant (yet) unpack. --- archival/unzip.c | 6 ++++++ archival/unzip_cant_handle.odt | Bin 0 -> 6948 bytes archival/unzip_doc.txt.bz2 | Bin 0 -> 11359 bytes 3 files changed, 6 insertions(+) create mode 100644 archival/unzip_cant_handle.odt create mode 100644 archival/unzip_doc.txt.bz2 diff --git a/archival/unzip.c b/archival/unzip.c index 7c92f5d9a..36490cb41 100644 --- a/archival/unzip.c +++ b/archival/unzip.c @@ -99,6 +99,12 @@ static void unzip_create_leading_dirs(const char *fn) static void unzip_extract(zip_header_t *zip_header, int src_fd, int dst_fd) { + if (zip_header->formatted.flags & (0x0008|0x0001)) { + /* 0x0001 - encrypted */ + /* 0x0008 - streaming. [u]cmpsize can be reliably gotten + * only from Central Directory. See unzip_doc.txt */ + bb_error_msg_and_die("zip flags 8 and 1 are not supported"); + } if (zip_header->formatted.method == 0) { /* Method 0 - stored (not compressed) */ off_t size = zip_header->formatted.ucmpsize; diff --git a/archival/unzip_cant_handle.odt b/archival/unzip_cant_handle.odt new file mode 100644 index 0000000000000000000000000000000000000000..715e4a991fe9c40de3b07e97d95ea30121ef555e GIT binary patch literal 6948 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 literal 0 HcmV?d00001 diff --git a/archival/unzip_doc.txt.bz2 b/archival/unzip_doc.txt.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ab77d10dad1ba41e97b60d6b87e966bb2ee0ff9b GIT binary patch literal 11359 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 hJC4ucEL*ma;C^ztgdmnvSONe5 literal 0 HcmV?d00001 -- 2.25.1