From 38a1c7f5593431ed03bc3b2fc1c85f188150607c Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 13 Mar 2005 21:03:31 +0000 Subject: [PATCH] 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 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/physfs.c b/physfs.c index ebf0fddd..3bb62032 100644 --- a/physfs.c +++ b/physfs.c @@ -1241,12 +1241,12 @@ int __PHYSFS_verifySecurity(DirHandle *h, char *fname, int allowMissing) 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()? */