cvs: php4(PHP_4_3) /ext/ftp php_ftp.c
| From: | Sara Golemon | Date: | Sat, 17 May 2003 04:20:12 +0000 |
| Subject: | cvs: php4(PHP_4_3) /ext/ftp php_ftp.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-20982@lists.php.net to get a copy of this message | ||
pollita Sat May 17 00:20:12 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/ftp php_ftp.c
Log:
Bug #14369. ftp extension allows circumvention of safe_mode restrictions
Index: php4/ext/ftp/php_ftp.c
diff -u php4/ext/ftp/php_ftp.c:1.74.2.7 php4/ext/ftp/php_ftp.c:1.74.2.8
--- php4/ext/ftp/php_ftp.c:1.74.2.7 Wed Apr 2 19:55:45 2003
+++ php4/ext/ftp/php_ftp.c Sat May 17 00:20:12 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ftp.c,v 1.74.2.7 2003/04/03 00:55:45 iliaa Exp $ */
+/* $Id: php_ftp.c,v 1.74.2.8 2003/05/17 04:20:12 pollita Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -598,9 +598,19 @@
resumepos = 0;
}
+ if (php_check_open_basedir(local TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
if (ftp->autoseek && resumepos) {
+ if (PG(safe_mode) && (!php_checkuid(local, "rb+", CHECKUID_CHECK_MODE_PARAM)))
{
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "rb+", NULL);
if (outstream == NULL) {
+ if (PG(safe_mode) && (!php_checkuid(local, "wb", CHECKUID_CHECK_MODE_PARAM)))
{
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "wb", NULL);
}
if (outstream != NULL) {
@@ -613,6 +623,9 @@
}
}
} else {
+ if (PG(safe_mode) && (!php_checkuid(local, "wb", CHECKUID_CHECK_MODE_PARAM))) {
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "wb", NULL);
}
@@ -656,9 +669,19 @@
resumepos = 0;
}
+ if (php_check_open_basedir(local TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
if (ftp->autoseek && resumepos) {
+ if (PG(safe_mode) && (!php_checkuid(local, "rb+", CHECKUID_CHECK_MODE_PARAM)))
{
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "rb+", NULL);
if (outstream == NULL) {
+ if (PG(safe_mode) && (!php_checkuid(local, "wb", CHECKUID_CHECK_MODE_PARAM)))
{
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "wb", NULL);
}
if (outstream != NULL) {
@@ -671,6 +694,9 @@
}
}
} else {
+ if (PG(safe_mode) && (!php_checkuid(local, "wb", CHECKUID_CHECK_MODE_PARAM))) {
+ RETURN_FALSE;
+ }
outstream = php_stream_fopen(local, "wb", NULL);
}
@@ -852,6 +878,13 @@
ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf);
XTYPE(xtype, mode);
+ if (php_check_open_basedir(local TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+ if (PG(safe_mode) && (!php_checkuid(local, "rb", CHECKUID_CHECK_MODE_PARAM))) {
+ RETURN_FALSE;
+ }
+
instream = php_stream_fopen(local, "rb", NULL);
if (instream == NULL) {
@@ -906,6 +939,13 @@
ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf);
XTYPE(xtype, mode);
+
+ if (php_check_open_basedir(local TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+ if (PG(safe_mode) && (!php_checkuid(local, "rb", CHECKUID_CHECK_MODE_PARAM))) {
+ RETURN_FALSE;
+ }
instream = php_stream_fopen(local, "rb", NULL);