Backport from devbranch:
Fixed zip archiver: could do bogus seek if a small, non-zip file got put
through isArchive().
--- a/CHANGELOG Tue Apr 03 00:58:32 2007 +0000
+++ b/CHANGELOG Sat May 05 05:53:03 2007 +0000
@@ -4,6 +4,8 @@
-- stuff in the stable-1.0 branch, backported from 2.0.0 dev branch, etc ---
+05052007 - Fixed zip archiver: could do bogus seek if a small, non-zip file
+ got put through isArchive().
04022007 - Fixed Doxygen comment.
03312007 - Moved DIR archiver to start of the list, so we don't have to have
every other archiver fail to open a directory as a file before
--- a/archivers/zip.c Tue Apr 03 00:58:32 2007 +0000
+++ b/archivers/zip.c Sat May 05 05:53:03 2007 +0000
@@ -489,6 +489,8 @@
break;
filepos -= (maxread - 4);
+ if (filepos < 0)
+ filepos = 0;
} /* while */
BAIL_IF_MACRO(!found, ERR_NOT_AN_ARCHIVE, -1);