diff --git a/drivers/wifi/esp32/src/esp_wifi_drv.c b/drivers/wifi/esp32/src/esp_wifi_drv.c index 305994d6a32..b1499168a45 100644 --- a/drivers/wifi/esp32/src/esp_wifi_drv.c +++ b/drivers/wifi/esp32/src/esp_wifi_drv.c @@ -770,8 +770,10 @@ static int esp32_wifi_status(const struct device *dev, struct wifi_iface_status } strncpy(status->ssid, data->status.ssid, WIFI_SSID_MAX_LEN); - status->ssid_len = strnlen(data->status.ssid, WIFI_SSID_MAX_LEN); - status->ssid[status->ssid_len] = '\0'; + /* Ensure the result is NUL terminated */ + status->ssid[WIFI_SSID_MAX_LEN-1] = '\0'; + /* We know it is NUL terminated, so we can use strlen */ + status->ssid_len = strlen(data->status.ssid); status->band = WIFI_FREQ_BAND_2_4_GHZ; status->link_mode = WIFI_LINK_MODE_UNKNOWN; status->mfp = WIFI_MFP_DISABLE;