cvs: php4 /main streams.c
| From: | Wez Furlong | 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)))