cvs: php4(PHP_4_3) /ext/ftp php_ftp.c

From: 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);

« previous php.cvs (#20982) next »