summaryrefslogtreecommitdiff
path: root/includes/common.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/common.inc')
-rw-r--r--includes/common.inc20
1 files changed, 19 insertions, 1 deletions
diff --git a/includes/common.inc b/includes/common.inc
index f3e5264fd..7a0eaf95e 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -556,6 +556,24 @@ function _fix_gpc_magic(&$item) {
}
/**
+ * Helper function to strip slashes from $_FILES skipping over the tmp_name keys
+ * since PHP generates single backslashes for file paths on Windows systems.
+ *
+ * tmp_name does not have backslashes added see
+ * http://php.net/manual/en/features.file-upload.php#42280
+ */
+function _fix_gpc_magic_files(&$item, $key) {
+ if ($key != 'tmp_name') {
+ if (is_array($item)) {
+ array_walk($item, '_fix_gpc_magic_files');
+ }
+ else {
+ $item = stripslashes($item);
+ }
+ }
+}
+
+/**
* Correct double-escaping problems caused by "magic quotes" in some PHP
* installations.
*/
@@ -566,7 +584,7 @@ function fix_gpc_magic() {
array_walk($_POST, '_fix_gpc_magic');
array_walk($_COOKIE, '_fix_gpc_magic');
array_walk($_REQUEST, '_fix_gpc_magic');
- array_walk($_FILES, '_fix_gpc_magic');
+ array_walk($_FILES, '_fix_gpc_magic_files');
$fixed = TRUE;
}
}