r728 - in trunk: . archivers
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sat Jul 23 17:46:07 EDT 2005
Author: icculus
Date: 2005-07-23 17:46:07 -0400 (Sat, 23 Jul 2005)
New Revision: 728
Modified:
trunk/CHANGELOG
trunk/CREDITS
trunk/archivers/zip.c
Log:
From: Jorg Walter
To: icculus at clutteredmind.org
Subject: Bug in zip archiver
Date: Sat, 23 Jul 2005 22:19:09 +0200
Hi!
PhysFS has a bug in the ZIP archive module, function zip_find_start_of_dir.
Upon encountering a substring match, rc is set to a wrong value. The fix is
simple: swap both assignments like this:
[patch below --Ed.]
Some additional info for testing: Symptoms when you encounter this bug: A dir
is reported as empty although it has files in it; prerequisites or
encountering it: two dirs, one a substring of another, like "data/txt" and
"data/txt2", laid out in a way so that variable "middle" points to a file in
txt2 at some point during zip_find_start_of_dir
By the way, if you're interested in where PhysFS is used: I found this bug
while writing a patch for DOSBox (http://dosbox.sourceforge.net) to support
ZIP files. And I'd love to see that enhanced PHYSFS_mount syntax in an
official release soon *hint* ;);)
Modified: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG 2005-07-21 18:10:17 UTC (rev 727)
+++ trunk/CHANGELOG 2005-07-23 21:46:07 UTC (rev 728)
@@ -2,6 +2,7 @@
* CHANGELOG.
*/
+07232005 - Fixed bug in zip archiver (thanks, Jörg Walter!).
07212005 - Patched to compile on OS/2 again.
07132005 - Updated zlib to 1.2.2, and patched it for this security hole:
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-2096
Modified: trunk/CREDITS
===================================================================
--- trunk/CREDITS 2005-07-21 18:10:17 UTC (rev 727)
+++ trunk/CREDITS 2005-07-23 21:46:07 UTC (rev 728)
@@ -87,6 +87,9 @@
Mingw support:
Matze Braun
+Bug fixes:
+ Jörg Walter
+
Other stuff:
Your name here! Patches go to icculus at clutteredmind.org ...
Modified: trunk/archivers/zip.c
===================================================================
--- trunk/archivers/zip.c 2005-07-21 18:10:17 UTC (rev 727)
+++ trunk/archivers/zip.c 2005-07-23 21:46:07 UTC (rev 728)
@@ -1146,9 +1146,9 @@
if (rc == 0)
{
char ch = name[dlen];
- if (ch < '/') /* make sure this isn't just a substr match. */
+ if ('/' < ch) /* make sure this isn't just a substr match. */
rc = -1;
- else if (ch > '/')
+ else if ('/' > ch)
rc = 1;
else
{
More information about the physfs-commits
mailing list