From 0ec07e9c651f747d93865f75b8631899a7d7f04d Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 7 Jan 2011 14:48:40 -0800 Subject: [PATCH] Use ReflectionFunction to check for a present-but-disabled dl() function instead of manually parsing the disable_functions php.ini setting. We were checking the list as comma-delimited (per the description of it as comma-delimited), but in fact spaces are also accepted, and who knows what else. --- lib/common.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/common.php b/lib/common.php index cd4fbfb15a..3963402158 100644 --- a/lib/common.php +++ b/lib/common.php @@ -60,8 +60,13 @@ if (!function_exists('dl')) { // Fortunately trying to call the disabled one will only trigger // a warning, not a fatal, so it's safe to leave it for our case. // Callers will be suppressing warnings anyway. - $disabled = array_filter(array_map('trim', explode(',', ini_get('disable_functions')))); - if (!in_array('dl', $disabled)) { + try { + // Reading the ini setting is hard as we don't know PHP's parsing, + // but we can check if it is disabled through reflection. + $dl = new ReflectionFunction('dl'); + // $disabled = $dl->isDisabled(); // don't need to check this now + } catch (ReflectionException $e) { + // Ok, it *really* doesn't exist! function dl($library) { return false; }