diff options
Diffstat (limited to 'main/php_realpath.c')
-rw-r--r-- | main/php_realpath.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/main/php_realpath.c b/main/php_realpath.c index 26a9359e08..339eb2eb8f 100644 --- a/main/php_realpath.c +++ b/main/php_realpath.c @@ -251,15 +251,18 @@ char *php_realpath(char *path, char resolved_path []) { } /* Check if the resolved path is a directory */ - if (V_STAT(path_construction, &filestat) != 0) return NULL; - if (S_ISDIR(filestat.st_mode)) { - /* It's a directory, append a / if needed */ - if (*(writepos-1) != '/') { - /* Check for overflow */ - if ((strlen(workpos) + 2) >= MAXPATHLEN) return NULL; - - *writepos++ = '/'; - *writepos = 0; + if (V_STAT(path_construction, &filestat) != 0) { + if (errno != ENOENT) return NULL; + } else { + if (S_ISDIR(filestat.st_mode)) { + /* It's a directory, append a / if needed */ + if (*(writepos-1) != '/') { + /* C heck for overflow */ + if ((strlen(workpos) + 2) >= MAXPATHLEN) return NULL; + + *writepos++ = '/'; + *writepos = 0; + } } } |