fix problem with /e security check on arrays using regex_replace

This commit is contained in:
monte.ohrt
2008-08-06 17:07:15 +00:00
parent f9891ce80c
commit 380e0d0d6b

View File

@@ -21,6 +21,18 @@
* @return string
*/
function smarty_modifier_regex_replace($string, $search, $replace)
{
if(is_array($search)) {
foreach($search as $idx => $s)
$search[$idx] = _smarty_regex_replace_check($s);
} else {
$search = _smarty_regex_replace_check($search);
}
return preg_replace($search, $replace, $string);
}
function _smarty_regex_replace_check($search)
{
if (($pos = strpos($search,"\0")) !== false)
$search = substr($search,0,$pos);
@@ -28,8 +40,7 @@ function smarty_modifier_regex_replace($string, $search, $replace)
/* remove eval-modifier from $search */
$search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
}
return preg_replace($search, $replace, $string);
return $search;
}
/* vim: set expandtab: */