From 1ef5e048b2f720fff1c62ebb0ba92f9a4c94acdd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Oct 2025 14:50:01 +0100 Subject: [PATCH] Don't scan the entire command string looking for literals we only care if it's in the exact position defined by $offset. --- src/command/overload/CommandOverload.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/command/overload/CommandOverload.php b/src/command/overload/CommandOverload.php index a279fd494..694b6a3b1 100644 --- a/src/command/overload/CommandOverload.php +++ b/src/command/overload/CommandOverload.php @@ -32,7 +32,6 @@ use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\Translatable; use pocketmine\permission\PermissionManager; -use pocketmine\utils\AssumptionFailedError; use function array_key_last; use function count; use function get_class; @@ -40,7 +39,7 @@ use function implode; use function is_string; use function preg_match; use function strlen; -use function strpos; +use function substr_compare; final class CommandOverload{ @@ -195,7 +194,7 @@ final class CommandOverload{ if($offset < strlen($commandLine)){ foreach($this->parameters as $parameter){ if(is_string($parameter)){ - if(strpos($commandLine, $parameter, $offset) === $offset){ + if(substr_compare($commandLine, $parameter, $offset, strlen($parameter)) === 0){ $offset += strlen($parameter); $literals++; }else{