diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 254142d..e883aca 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,6 +2,8 @@ * CHANGELOG. */ +05052007 - Fixed zip archiver: could do bogus seek if a small, non-zip file + got put through isArchive(). 04292007 - Minor const correctness tweak in zip archiver. 04032007 - Added a "make dist" target for packing up source code releases. Reverted Unix recursive mutex code. There were some portability diff --git a/archivers/zip.c b/archivers/zip.c index 4f1a38d..da4f3a5 100644 --- a/archivers/zip.c +++ b/archivers/zip.c @@ -447,6 +447,8 @@ static PHYSFS_sint64 zip_find_end_of_central_dir(void *in, PHYSFS_sint64 *len) break; filepos -= (maxread - 4); + if (filepos < 0) + filepos = 0; } /* while */ BAIL_IF_MACRO(!found, ERR_NOT_AN_ARCHIVE, -1);