From 859d69a3e0b4b0afedd0f45df0f4bc4ff2a72d0e Mon Sep 17 00:00:00 2001 From: bohwaz Date: Sat, 23 Mar 2024 21:41:27 +0100 Subject: Don't whitelist files if the function name is actually a method of a class --- scripts/generate_rules.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/generate_rules.php b/scripts/generate_rules.php index f923e5d..3152342 100644 --- a/scripts/generate_rules.php +++ b/scripts/generate_rules.php @@ -40,6 +40,8 @@ foreach($objects as $name => $object){ $hash = '.hash("' . hash('sha256', $file_content) . '")'; } + $prev_token = null; + foreach(token_get_all($file_content) as $token) { if (!is_array($token)) { continue; @@ -49,9 +51,13 @@ foreach($objects as $name => $object){ $token[1] = substr($token[1], 1); } - if (in_array($token[1], $functions_blacklist, true)) { + $prev_token_str = $prev_token[1] ?? null; + + if (in_array($token[1], $functions_blacklist, true) && $prev_token_str !== '->' && $prev_token_str !== '::') { $output[] = 'sp.disable_function.function("' . $token[1] . '").filename("' . $name . '")' . $hash . '.allow();' . "\n"; } + + $prev_token = $token; } } foreach($functions_blacklist as $fun) { -- cgit v1.3