From a09ddb5f4ef5c6bb5a4837c90c7cb30e886c1015 Mon Sep 17 00:00:00 2001 From: mikeller Date: Mon, 1 Jun 2020 13:01:45 +1200 Subject: [PATCH] Fixed pin id parsing in CLI. --- src/main/cli/cli.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/cli/cli.c b/src/main/cli/cli.c index a7d24b7c3..0c0f71330 100644 --- a/src/main/cli/cli.c +++ b/src/main/cli/cli.c @@ -5201,24 +5201,27 @@ static void resourceCheck(uint8_t resourceIndex, uint8_t index, ioTag_t newTag) } } -static bool strToPin(char *pch, ioTag_t *tag) +static bool strToPin(char *ptr, ioTag_t *tag) { - if (strcasecmp(pch, "NONE") == 0) { + if (strcasecmp(ptr, "NONE") == 0) { *tag = IO_TAG_NONE; + return true; } else { - unsigned pin = 0; - unsigned port = (*pch >= 'a') ? *pch - 'a' : *pch - 'A'; - + const unsigned port = (*ptr >= 'a') ? *ptr - 'a' : *ptr - 'A'; if (port < 8) { - pch++; - pin = atoi(pch); - if (pin < 16) { + ptr++; + + char *end; + const long pin = strtol(ptr, &end, 10); + if (end != ptr && pin >= 0 && pin < 16) { *tag = DEFIO_TAG_MAKE(port, pin); + return true; } } } + return false; }