diff --git a/tools/shell/inc/shellInt.h b/tools/shell/inc/shellInt.h index 382009905c8774b0ff462bcf67f2baa9dd2bbfc2..825866e16361b35ca86abeac62ff5f765ce67a10 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 8ccfde4b16dd591a9535e618f0738e28c68d6332..13f8cde3e3bc43635f92d2c52978a35fef519bbb 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;