diff --git a/DebugCmd.c b/DebugCmd.c index 96bc20a..2495bee 100644 --- a/DebugCmd.c +++ b/DebugCmd.c @@ -914,7 +914,7 @@ void DebugCmdRestoreFactory(int argc, char *argv[]) static void DebugCmdUpload(int argc, char *argv[]) { DBG_LOG("\r\n"); - if(strcmp(argv[1], "?") == 0) { + if(argc > 1 && strcmp(argv[1], "?") == 0) { DBG_LOG("Debug Cmd: up\r\n"); DBG_LOG(" brief --> Upload current gateway status to server.\r\n\r\n"); return; @@ -953,7 +953,7 @@ static void DebugCmdUpload(int argc, char *argv[]) static void DebugCmdRegister(int argc, char *argv[]) { DBG_LOG("\r\n"); - if(strcmp(argv[1], "?") == 0) { + if(argc > 1 && strcmp(argv[1], "?") == 0) { DBG_LOG("Debug Cmd: reg\r\n"); DBG_LOG(" brief --> Re-register to the server.\r\n\r\n"); return; @@ -1336,8 +1336,8 @@ static void DebugCmdEthNet(int argc, char *argv[]) DBG_LOG("Please switch to ETH mode first using 'comm eth' command.\r\n"); return; } + GateWay->SvrRegFlag = false; ETHReset(); - ETHResetEx(); DBG_LOG("EthNet parameters saved and ETH module restarting...\r\n"); return; } @@ -1363,6 +1363,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "ip") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing IP address\r\n"); + return; + } int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]); if(ret != 4) { DBG_LOG("EthCmd: Invalid IP format, use x.x.x.x\r\n"); @@ -1381,6 +1385,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "port") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing port number\r\n"); + return; + } int port = atoi(argv[2]); if(port <= 0 || port > 65535) { DBG_LOG("EthCmd: Port out of range (1-65535).\r\n"); @@ -1392,6 +1400,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "wmode") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing work mode (tcp/udp)\r\n"); + return; + } if(strcmp(argv[2], "tcp") == 0) { GateWay->ConfigPara.EthNet.WorkMode = ETH_MODE_TCP_CLIENT; DBG_LOG("WorkMode set to TCP_CLIENT.\r\n"); @@ -1407,6 +1419,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "mask") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing subnet mask\r\n"); + return; + } int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]); if(ret != 4) { DBG_LOG("EthCmd: Invalid mask format, use x.x.x.x\r\n"); @@ -1425,6 +1441,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "gw") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing gateway address\r\n"); + return; + } int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]); if(ret != 4) { DBG_LOG("EthCmd: Invalid gateway format, use x.x.x.x\r\n"); @@ -1443,6 +1463,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "dip") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing destination IP address\r\n"); + return; + } int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]); if(ret != 4) { DBG_LOG("EthCmd: Invalid destination IP format, use x.x.x.x\r\n"); @@ -1461,6 +1485,10 @@ static void DebugCmdEthNet(int argc, char *argv[]) } if(strcmp(argv[1], "dport") == 0) { + if(argc < 3) { + DBG_LOG("EthCmd: Missing destination port\r\n"); + return; + } int port = atoi(argv[2]); if(port <= 0 || port > 65535) { DBG_LOG("EthCmd: DestPort out of range (1-65535).\r\n");