diff --git a/components/drivers/wlan/wlan_dev.c b/components/drivers/wlan/wlan_dev.c index 3c26531508dddab13527fdb2d4fb66cc3983e0f3..a42072692c445ffbd0c9144c15a13cdcc36f1ff8 100644 --- a/components/drivers/wlan/wlan_dev.c +++ b/components/drivers/wlan/wlan_dev.c @@ -117,7 +117,18 @@ int rt_wlan_softap(struct rt_wlan_device *device, struct rt_wlan_info *info, cha rt_wlan_set_info(device, info); } - rt_strncpy((char *)device->key, (char *)password, sizeof(device->key) - 1); + if (password == NULL) + { + memset(device->key, 0, sizeof(device->key)); + } + else + { + if (rt_strlen(password) > sizeof(device->key) - 1) + { + rt_kprintf("WARN input password is longer than %d bytes.", sizeof(device->key) - 1); + } + rt_strncpy((char *)device->key, (char *)password, sizeof(device->key) - 1); + } result = rt_device_control(RT_DEVICE(device), WIFI_SOFTAP, (void *)password);