PHYSFS_mkdir() should allow symlinks in the mounted writeDir itself.

Fixes #47.
This commit is contained in:
Ryan C. Gordon 2022-09-29 10:27:23 -04:00
parent 0d4e9aac45
commit 496817a9e8
No known key found for this signature in database
GPG Key ID: FA148B892AB48044
1 changed files with 6 additions and 1 deletions

View File

@ -2234,7 +2234,12 @@ static int doMkdir(const char *_dname, char *dname)
const int rc = h->funcs->stat(h->opaque, dname, &statbuf);
if ((!rc) && (currentErrorCode() == PHYSFS_ERR_NOT_FOUND))
exists = 0;
retval = ((rc) && (statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY));
/* verifyPath made sure that (dname) doesn't have symlinks if they aren't
allowed, but it's possible the mounted writeDir itself has symlinks in it,
(for example "/var" on iOS is a symlink, and the prefpath will be somewhere
under that)...if we mounted that writeDir, we must allow those symlinks here
unconditionally. */
retval = ( (rc) && ((statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY) || (statbuf.filetype == PHYSFS_FILETYPE_SYMLINK)) );
} /* if */
if (!exists)