summaryrefslogtreecommitdiff
path: root/ext/standard/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/dir.c')
-rw-r--r--ext/standard/dir.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index ddf651a11..4acd8913f 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c 300764 2010-06-26 16:03:39Z felipe $ */
+/* $Id: dir.c 305507 2010-11-18 15:22:22Z pajoye $ */
/* {{{ includes/startup/misc */
@@ -325,6 +325,10 @@ PHP_FUNCTION(chdir)
RETURN_FALSE;
}
+ if (strlen(str) != str_len) {
+ RETURN_FALSE;
+ }
+
if ((PG(safe_mode) && !php_checkuid(str, NULL, CHECKUID_CHECK_FILE_AND_DIR)) || php_check_open_basedir(str TSRMLS_CC)) {
RETURN_FALSE;
}
@@ -436,6 +440,10 @@ PHP_FUNCTION(glob)
return;
}
+ if (strlen(pattern) != pattern_len) {
+ RETURN_FALSE;
+ }
+
if (pattern_len >= MAXPATHLEN) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pattern exceeds the maximum allowed length of %d characters", MAXPATHLEN);
RETURN_FALSE;
@@ -557,6 +565,10 @@ PHP_FUNCTION(scandir)
return;
}
+ if (strlen(dirn) != dirn_len) {
+ RETURN_FALSE;
+ }
+
if (dirn_len < 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Directory name cannot be empty");
RETURN_FALSE;