From 8253e019bed0731b5f77b3cb19cb073a651f30b5 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 Apr 2022 09:43:08 +0800 Subject: [PATCH] fix: invalid port described in TD-15165 --- tools/shell/inc/shellInt.h | 2 +- tools/shell/src/shellArguments.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/shell/inc/shellInt.h b/tools/shell/inc/shellInt.h index 382009905c..825866e163 100644 --- a/tools/shell/inc/shellInt.h +++ b/tools/shell/inc/shellInt.h @@ -62,7 +62,7 @@ typedef struct { bool is_check; bool is_startup; bool is_help; - uint16_t port; + int32_t port; int32_t pktLen; int32_t pktNum; int32_t displayWidth; diff --git a/tools/shell/src/shellArguments.c b/tools/shell/src/shellArguments.c index 8ccfde4b16..13f8cde3e3 100644 --- a/tools/shell/src/shellArguments.c +++ b/tools/shell/src/shellArguments.c @@ -99,6 +99,7 @@ static int32_t shellParseSingleOpt(int32_t key, char *arg) { break; case 'P': pArgs->port = atoi(arg); + if (pArgs->port == 0) pArgs->port = -1; break; case 'u': pArgs->user = arg; @@ -304,6 +305,11 @@ static int32_t shellCheckArgs() { return -1; } + if (pArgs->port < 0 || pArgs->port > 65535) { + printf("Invalid port\n"); + return -1; + } + if (pArgs->pktLen < SHELL_MIN_PKG_LEN || pArgs->pktLen > SHELL_MAX_PKG_LEN) { printf("Invalid pktLen:%d, range:[%d, %d]\n", pArgs->pktLen, SHELL_MIN_PKG_LEN, SHELL_MAX_PKG_LEN); return -1; -- GitLab