Escape user input values when used in eval()
| | |
| | | |
| | | foreach ((array)$this->prop['autovalues'] as $lf => $templ) { |
| | | if (empty($attrs[$lf])) { |
| | | if (strpos($templ, '(') !== false) { |
| | | // replace {attr} placeholders with (escaped!) attribute values to be safely eval'd |
| | | $code = preg_replace('/\{\w+\}/', '', strtr($templ, array_map('addslashes', $attrvals))); |
| | | $attrs[$lf] = eval("return ($code);"); |
| | | } |
| | | else { |
| | | // replace {attr} placeholders with concrete attribute values |
| | | $templ = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals)); |
| | | |
| | | if (strpos($templ, '(') !== false) |
| | | $attrs[$lf] = eval("return ($templ);"); |
| | | else |
| | | $attrs[$lf] = $templ; |
| | | $attrs[$lf] = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals)); |
| | | } |
| | | } |
| | | } |
| | | } |