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.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index 470d886dd4..e5a0220141 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -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;