fixed infinite loop when removing magic.

This commit is contained in:
Taylor Otwell 2012-01-24 11:29:05 -06:00
parent bf509b679f
commit ec2fc6ddd0
2 changed files with 11 additions and 8 deletions

View File

@ -97,7 +97,7 @@ function array_set(&$array, $key, $value)
// If the key doesn't exist at this depth, we will just create an // If the key doesn't exist at this depth, we will just create an
// empty array to hold the next value, allowing us to create the // empty array to hold the next value, allowing us to create the
// arrays necessary to hold the final value at the proper depth. // arrays to hold the final value at the proper depth.
if ( ! isset($array[$key]) or ! is_array($array[$key])) if ( ! isset($array[$key]) or ! is_array($array[$key]))
{ {
$array[$key] = array(); $array[$key] = array();
@ -197,10 +197,10 @@ function array_spin($array, $callback)
*/ */
function array_strip_slashes($array) function array_strip_slashes($array)
{ {
$result = array();
foreach($array as $key => $value) foreach($array as $key => $value)
{ {
unset($array[$key]);
$key = stripslashes($key); $key = stripslashes($key);
// If the value is an array, we will just recurse back into the // If the value is an array, we will just recurse back into the
@ -208,15 +208,15 @@ function array_strip_slashes($array)
// otherwise we will set the stripped value. // otherwise we will set the stripped value.
if (is_array($value)) if (is_array($value))
{ {
$array[$key] = array_strip_slashes($value); $result[$key] = array_strip_slashes($value);
} }
else else
{ {
$array[$key] = stripslashes($value); $result[$key] = stripslashes($value);
} }
} }
return $array; return $result;
} }
/** /**

View File

@ -67,9 +67,12 @@
*/ */
if (magic_quotes()) if (magic_quotes())
{ {
$magic = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); $magics = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
array_walk($magic, 'array_strip_slashes'); foreach ($magics as &$magic)
{
$magic = array_strip_slashes($magic);
}
} }
/** /**