From c0aa263f2b73e5a92772d36024d7b8ab60b53de2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 May 2022 11:19:12 +0200 Subject: [PATCH] parse_command checks prefix-numbers and prefix `id` --- src/command.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index e54cc1ced..ee79a2d76 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -193,17 +193,22 @@ const char * Command::parse_command_string(const char * command, int8_t & id) { return nullptr; } - if (!strncmp(command, "hc", 2) && strlen(command) >= 3) { + // check prefix and valid number range, also check 'id' + if (!strncmp(command, "hc", 2) && command[2] >= '1' && command[2] <= '8') { + id = command[2] - '0'; + command += 3; + } else if (!strncmp(command, "wwc", 3) && command[3] == '1' && command[4] == '0') { + id = 19; + command += 5; + } else if (!strncmp(command, "wwc", 3) && command[3] >= '1' && command[3] <= '9') { + id = command[3] - '0' + 8; + command += 4; + } else if (!strncmp(command, "id", 2) && command[2] == '1' && command[3] >= '0' && command[3] <= '9') { + id = command[3] - '0' + 10; + command += 4; + } else if (!strncmp(command, "id", 2) && command[2] >= '1' && command[2] <= '9') { id = command[2] - '0'; command += 3; - } else if (!strncmp(command, "wwc", 3) && strlen(command) >= 4) { - if (command[3] == '1' && command[4] == '0') { - id = 19; // wwc10 - command += 5; - } else { - id = command[3] - '0' + 8; // wwc1 has id 9 - command += 4; - } } // remove separator if (command[0] == '/' || command[0] == '.' || command[0] == '_') {