Escape user input values when used in eval()

pull/88/head
Thomas Bruederli 11 years ago
parent 283ac97852
commit 2d6dca4714

@ -1403,13 +1403,15 @@ class rcube_ldap extends rcube_addressbook
foreach ((array)$this->prop['autovalues'] as $lf => $templ) {
if (empty($attrs[$lf])) {
// 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;
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
$attrs[$lf] = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals));
}
}
}
}

Loading…
Cancel
Save