cvs: php4 /main streams.c

From: Date: Sun, 25 Aug 2002 12:10:18 +0000
Subject: cvs: php4 /main streams.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-13662@lists.php.net to get a copy of this message
wez Sun Aug 25 08:10:18 2002 EDT Modified files: /php4/main streams.c Log: Fix open_basedir. Index: php4/main/streams.c diff -u php4/main/streams.c:1.72 php4/main/streams.c:1.73 --- php4/main/streams.c:1.72 Sun Aug 25 07:23:19 2002 +++ php4/main/streams.c Sun Aug 25 08:10:17 2002 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.72 2002/08/25 11:23:19 wez Exp $ */ +/* $Id: streams.c,v 1.73 2002/08/25 12:10:17 wez Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -1020,6 +1020,11 @@ /* Relative path open */ if (*filename == '.') { + + if (php_check_open_basedir(filename TSRMLS_CC)) { + return NULL; + } + if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_CHECK_MODE_PARAM))) { return NULL; } @@ -1033,6 +1038,11 @@ /* Absolute path open */ if (IS_ABSOLUTE_PATH(filename, filename_length)) { + + if (php_check_open_basedir(filename TSRMLS_CC)) { + return NULL; + } + if ((php_check_safe_mode_include_dir(filename TSRMLS_CC)) == 0) /* filename is in safe_mode_include_dir (or subdir) */ return php_stream_fopen_rel(filename, mode, opened_path); @@ -1044,6 +1054,11 @@ } if (!path || (path && !*path)) { + + if (php_check_open_basedir(path TSRMLS_CC)) { + return NULL; + } + if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_CHECK_MODE_PARAM))) { return NULL; } @@ -1087,7 +1102,10 @@ if (PG(safe_mode)) { if (VCWD_STAT(trypath, &sb) == 0) { /* file exists ... check permission */ - if ((php_check_safe_mode_include_dir(trypath TSRMLS_CC) == 0) || + + if (php_check_open_basedir(trypath TSRMLS_CC)) { + stream = NULL; + } else if ((php_check_safe_mode_include_dir(trypath TSRMLS_CC) == 0) || php_checkuid(trypath, mode, CHECKUID_CHECK_MODE_PARAM)) { /* UID ok, or trypath is in safe_mode_include_dir */ stream = php_stream_fopen_rel(trypath, mode, opened_path); @@ -1404,6 +1422,10 @@ { if ((options & USE_PATH) && PG(include_path) != NULL) { return php_stream_fopen_with_path_rel(path, mode, PG(include_path), opened_path); + } + + if (php_check_open_basedir(path TSRMLS_CC)) { + return NULL; } if ((options & ENFORCE_SAFE_MODE) && PG(safe_mode) && (!php_checkuid(path, mode, CHECKUID_CHECK_MODE_PARAM)))

« previous php.cvs (#13662) next »