cvs: php4 /ext/standard file.c
| From: | Derick Rethans | Date: | Fri, 21 Dec 2001 08:04:23 +0000 |
| Subject: | cvs: php4 /ext/standard file.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-8743@lists.php.net to get a copy of this message | ||
derick Fri Dec 21 03:04:23 2001 EDT
Modified files:
/php4/ext/standard file.c
Log:
- Added open basedir checks to file functions. (Patch by
Christoph Kassen <chkassen@chkassen.de>)
Index: php4/ext/standard/file.c
diff -u php4/ext/standard/file.c:1.202 php4/ext/standard/file.c:1.203
--- php4/ext/standard/file.c:1.202 Thu Dec 20 22:50:07 2001
+++ php4/ext/standard/file.c Fri Dec 21 03:04:21 2001
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.202 2001/12/21 03:50:07 elixer Exp $ */
+/* $Id: file.c,v 1.203 2001/12/21 08:04:21 derick Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -1463,10 +1463,15 @@
convert_to_long_ex(arg2);
mode = (mode_t) Z_LVAL_PP(arg2);
+
if (PG(safe_mode) &&(!php_checkuid(Z_STRVAL_PP(arg1), NULL, CHECKUID_ALLOW_ONLY_DIR))) {
RETURN_FALSE;
}
+ if (php_check_open_basedir(Z_STRVAL_PP(arg1) TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
ret = VCWD_MKDIR(Z_STRVAL_PP(arg1), mode);
if (ret < 0) {
php_error(E_WARNING, "mkdir() failed (%s)", strerror(errno));
@@ -1488,10 +1493,15 @@
}
convert_to_string_ex(arg1);
+
if (PG(safe_mode) &&(!php_checkuid(Z_STRVAL_PP(arg1), NULL,
CHECKUID_ALLOW_FILE_NOT_EXISTS))) {
RETURN_FALSE;
}
+ if (php_check_open_basedir(Z_STRVAL_PP(arg1) TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
ret = VCWD_RMDIR(Z_STRVAL_PP(arg1));
if (ret < 0) {
php_error(E_WARNING, "rmdir() failed (%s)", strerror(errno));
@@ -1695,6 +1705,11 @@
if (PG(safe_mode) &&(!php_checkuid(old_name, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
RETURN_FALSE;
}
+
+ if (php_check_open_basedir(old_name TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
ret = VCWD_RENAME(old_name, new_name);
if (ret == -1) {
@@ -1719,6 +1734,10 @@
convert_to_string_ex(filename);
if (PG(safe_mode) && !php_checkuid(Z_STRVAL_PP(filename), NULL,
CHECKUID_CHECK_FILE_AND_DIR)) {
+ RETURN_FALSE;
+ }
+
+ if (php_check_open_basedir(Z_STRVAL_PP(filename) TSRMLS_CC)) {
RETURN_FALSE;
}