If rejecting an archive for not matching a mount point, set an error state,
authorRyan C. Gordon <icculus@icculus.org>
Sun, 13 Mar 2005 21:03:31 +0000
changeset 684 435510363ae4
parent 683 e724adb731df
child 685 f2aee9b67a4f
If rejecting an archive for not matching a mount point, set an error state, otherwise, PHYSFS_openRead could fail with a null error message.
physfs.c
--- a/physfs.c	Sun Mar 13 12:03:05 2005 +0000
+++ b/physfs.c	Sun Mar 13 21:03:31 2005 +0000
@@ -1241,12 +1241,12 @@
         size_t mntpntlen = strlen(h->mountPoint);
         assert(mntpntlen > 1); /* root mount points should be NULL. */
         size_t len = strlen(fname);
-        if (len < mntpntlen)
-            return(0); /* not under the mountpoint, so skip this archive. */
-        if (strncmp(h->mountPoint, fname, mntpntlen) != 0)
-            return(0);  /* not under the mountpoint, so skip this archive. */
-
+        /* not under the mountpoint, so skip this archive. */
+        BAIL_IF_MACRO(len < mntpntlen, ERR_NO_SUCH_PATH, 0);
+        retval = strncmp(h->mountPoint, fname, mntpntlen);
+        BAIL_IF_MACRO(retval != 0, ERR_NO_SUCH_PATH, 0);
         fname += mntpntlen;  /* move to start of actual archive path. */
+        retval = 1;
     } /* if */
 
     /* !!! FIXME: Can we ditch this malloc()? */