From ba8d49dce7cccb90aa16ebb1abdc66c23f21ea8f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 27 Jul 2000 13:48:50 +0000 Subject: Fix realpath not to die on non-existing files (bug #5790) Thanks to china@thewrittenword.com --- main/php_realpath.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'main/php_realpath.c') 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; + } } } -- cgit v1.2.1