fix(debug): 修复调试命令参数检查问题

This commit is contained in:
2026-06-17 17:47:12 +08:00
parent 6962ad9907
commit a57b9ddf31
+31 -3
View File
@@ -914,7 +914,7 @@ void DebugCmdRestoreFactory(int argc, char *argv[])
static void DebugCmdUpload(int argc, char *argv[]) static void DebugCmdUpload(int argc, char *argv[])
{ {
DBG_LOG("\r\n"); 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("Debug Cmd: up\r\n");
DBG_LOG(" brief --> Upload current gateway status to server.\r\n\r\n"); DBG_LOG(" brief --> Upload current gateway status to server.\r\n\r\n");
return; return;
@@ -953,7 +953,7 @@ static void DebugCmdUpload(int argc, char *argv[])
static void DebugCmdRegister(int argc, char *argv[]) static void DebugCmdRegister(int argc, char *argv[])
{ {
DBG_LOG("\r\n"); 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("Debug Cmd: reg\r\n");
DBG_LOG(" brief --> Re-register to the server.\r\n\r\n"); DBG_LOG(" brief --> Re-register to the server.\r\n\r\n");
return; 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"); DBG_LOG("Please switch to ETH mode first using 'comm eth' command.\r\n");
return; return;
} }
GateWay->SvrRegFlag = false;
ETHReset(); ETHReset();
ETHResetEx();
DBG_LOG("EthNet parameters saved and ETH module restarting...\r\n"); DBG_LOG("EthNet parameters saved and ETH module restarting...\r\n");
return; return;
} }
@@ -1363,6 +1363,10 @@ static void DebugCmdEthNet(int argc, char *argv[])
} }
if(strcmp(argv[1], "ip") == 0) { 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]); int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]);
if(ret != 4) { if(ret != 4) {
DBG_LOG("EthCmd: Invalid IP format, use x.x.x.x\r\n"); 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(strcmp(argv[1], "port") == 0) {
if(argc < 3) {
DBG_LOG("EthCmd: Missing port number\r\n");
return;
}
int port = atoi(argv[2]); int port = atoi(argv[2]);
if(port <= 0 || port > 65535) { if(port <= 0 || port > 65535) {
DBG_LOG("EthCmd: Port out of range (1-65535).\r\n"); 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(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) { if(strcmp(argv[2], "tcp") == 0) {
GateWay->ConfigPara.EthNet.WorkMode = ETH_MODE_TCP_CLIENT; GateWay->ConfigPara.EthNet.WorkMode = ETH_MODE_TCP_CLIENT;
DBG_LOG("WorkMode set to TCP_CLIENT.\r\n"); 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(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]); int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]);
if(ret != 4) { if(ret != 4) {
DBG_LOG("EthCmd: Invalid mask format, use x.x.x.x\r\n"); 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(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]); int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]);
if(ret != 4) { if(ret != 4) {
DBG_LOG("EthCmd: Invalid gateway format, use x.x.x.x\r\n"); 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(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]); int ret = sscanf(argv[2], "%d.%d.%d.%d", &IP[0], &IP[1], &IP[2], &IP[3]);
if(ret != 4) { if(ret != 4) {
DBG_LOG("EthCmd: Invalid destination IP format, use x.x.x.x\r\n"); 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(strcmp(argv[1], "dport") == 0) {
if(argc < 3) {
DBG_LOG("EthCmd: Missing destination port\r\n");
return;
}
int port = atoi(argv[2]); int port = atoi(argv[2]);
if(port <= 0 || port > 65535) { if(port <= 0 || port > 65535) {
DBG_LOG("EthCmd: DestPort out of range (1-65535).\r\n"); DBG_LOG("EthCmd: DestPort out of range (1-65535).\r\n");