diff options
| author | zhangyuyang <[email protected]> | 2026-08-26 14:19:31 +0800 |
|---|---|---|
| committer | Rbb666 <[email protected]> | 2026-08-27 09:04:47 +0800 |
| commit | 14ef29af916199a2b3611ee2fd95baaca0d0e082 (patch) | |
| tree | 0e9d1ac87f73fce5a8dc694bbe48c9d4055fd0a9 /components/net/netdev/src | |
| parent | 69c26789fdec08180960e4091e5d9f9803b75948 (diff) | |
fix(netdev): 修复无网卡时 ping 命令空指针崩溃
netdev_cmd_ping 中 netdev 回退到 netdev_default 后未判空,
QEMU 无网卡环境下执行 ping 直接解引用 NULL 崩溃(data abort)。
回退后增加空指针检查,提示无可用网卡并返回错误。
Diffstat (limited to 'components/net/netdev/src')
| -rw-r--r-- | components/net/netdev/src/netdev.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index 3b59522c15..5a4056b97a 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -1340,6 +1340,11 @@ int netdev_cmd_ping(char* target_name, char *netdev_name, rt_uint32_t times, rt_ if (netdev == RT_NULL) { netdev = netdev_default; + if (netdev == RT_NULL) + { + rt_kprintf("ping: not found default netif, please specify netdev name.\n"); + return -RT_ERROR; + } rt_kprintf("ping: not found specified netif, using default netdev %s.\n", netdev->name); } @@ -1412,6 +1417,12 @@ int netdev_cmd_ping(char* target_name, char *netdev_name, rt_uint32_t times, rt_ rt_thread_delay(delay_tick); } + if (times == 0) + { + rt_kprintf("ping: send times is zero, no ping statistics.\n"); + return -RT_ERROR; + } + /* print ping statistics */ loss = (uint32_t)((1 - ((float)received) / index) * 100); avg_time = (uint32_t)(avg_time / received); |
