From 4b54140a35f5c8479bfdb0cc1036ad40bc905a9d Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Tue, 10 Jul 2001 20:38:39 +0000 Subject: - Commit patch which checks for an include file in the calling scripts' current working directory if everything else fails (include_path). - Right now this also effects things like opening php.ini. It'll now always check in the current working directory for php.ini. I think this doesn't screw up todays behavior. --- main/fopen_wrappers.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index 6f30aa09cd..a810d75243 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -443,8 +443,39 @@ PHPAPI FILE *php_fopen_with_path(char *filename, char *mode, char *path, char ** } ptr = end; } + efree(pathbuf); - return NULL; + + { + char *exec_fname; + int exec_fname_len; + char *filename_dir; + ELS_FETCH(); + + exec_fname = zend_get_executed_filename(ELS_C); + exec_fname_len = strlen(exec_fname); + + pathbuf = (char *) emalloc(exec_fname_len+filename_length+1+1); /* Over allocate to save time */ + memcpy(pathbuf, exec_fname, exec_fname_len+1); + + while ((--exec_fname_len >= 0) && !IS_SLASH(pathbuf[exec_fname_len])) { + } + pathbuf[exec_fname_len] = DEFAULT_SLASH; + memcpy(&pathbuf[exec_fname_len+1], filename, filename_length+1); + + fprintf(stderr,"Trying to open %s\n", pathbuf); + + if (PG(safe_mode)) { + if (VCWD_STAT(pathbuf, &sb) == 0 && (!php_checkuid(pathbuf, mode, CHECKUID_CHECK_MODE_PARAM))) { + efree(pathbuf); + return NULL; + } + } + fp = php_fopen_and_set_opened_path(pathbuf, mode, opened_path); + efree(pathbuf); + return fp; + } + return NULL; /* Not really needed anymore */ } /* }}} */ -- cgit v1.2.1