diff --git a/src/etc/inc/auth_func.inc b/src/etc/inc/auth_func.inc index f1536d4416..5bdee86901 100644 --- a/src/etc/inc/auth_func.inc +++ b/src/etc/inc/auth_func.inc @@ -30,6 +30,7 @@ function cmp_page_matches($page, & $matches, $fullwc = true) { + global $g; // $dbg_matches = implode(",", $matches); // log_error("debug: checking page {$page} match with {$dbg_matches}"); @@ -37,11 +38,14 @@ function cmp_page_matches($page, & $matches, $fullwc = true) { return false; } - /* skip any leading fwdslash */ - $test = strpos($page, "/"); - if ($test !== false && $test == 0) { - $page = substr($page, 1); + list($file, $query) = explode('?', $page); + $file = realpath( $g['www_path'] . '/' . ltrim($file, '/')); + if (empty($file)) { + /* File does not exist, or other path shenanigans */ + return false; } + $page = str_replace($g['www_path'] . '/', '', $file); + $page .= (!empty($query)) ? "?{$query}" : ""; /* look for a match */ foreach ($matches as $match) {