From d156f0fc0f5f4331392aa5bf69bcb0bb9674d964 Mon Sep 17 00:00:00 2001 From: suda-morris <362953310@qq.com> Date: Tue, 11 Jun 2019 15:46:02 +0800 Subject: [PATCH] replace strncpy with strlcpy in wifi examples for safety's sake --- examples/provisioning/custom_config/main/app_prov.c | 3 +-- examples/provisioning/softap_prov/main/app_prov.c | 3 +-- examples/system/console/main/cmd_wifi.c | 6 +++--- examples/wifi/iperf/main/cmd_wifi.c | 12 ++++++------ 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/examples/provisioning/custom_config/main/app_prov.c b/examples/provisioning/custom_config/main/app_prov.c index 5e0f68ea8..d9859cdb4 100644 --- a/examples/provisioning/custom_config/main/app_prov.c +++ b/examples/provisioning/custom_config/main/app_prov.c @@ -302,8 +302,7 @@ static esp_err_t start_wifi_ap(const char *ssid, const char *pass) }, }; - strncpy((char *) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); - wifi_config.ap.ssid_len = strnlen(ssid, sizeof(wifi_config.ap.ssid)); + strlcpy((char *) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); if (strlen(pass) == 0) { memset(wifi_config.ap.password, 0, sizeof(wifi_config.ap.password)); diff --git a/examples/provisioning/softap_prov/main/app_prov.c b/examples/provisioning/softap_prov/main/app_prov.c index f7bca2df1..73c8bdfc6 100644 --- a/examples/provisioning/softap_prov/main/app_prov.c +++ b/examples/provisioning/softap_prov/main/app_prov.c @@ -288,8 +288,7 @@ static esp_err_t start_wifi_ap(const char *ssid, const char *pass) }, }; - strncpy((char *) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); - wifi_config.ap.ssid_len = strnlen(ssid, sizeof(wifi_config.ap.ssid)); + strlcpy((char *) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); if (strlen(pass) == 0) { memset(wifi_config.ap.password, 0, sizeof(wifi_config.ap.password)); diff --git a/examples/system/console/main/cmd_wifi.c b/examples/system/console/main/cmd_wifi.c index 3cca7c3db..eb2024dab 100644 --- a/examples/system/console/main/cmd_wifi.c +++ b/examples/system/console/main/cmd_wifi.c @@ -26,7 +26,7 @@ static EventGroupHandle_t wifi_event_group; const int CONNECTED_BIT = BIT0; -static void event_handler(void* arg, esp_event_base_t event_base, +static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { @@ -61,9 +61,9 @@ static bool wifi_join(const char *ssid, const char *pass, int timeout_ms) { initialise_wifi(); wifi_config_t wifi_config = { 0 }; - strncpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); + strlcpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); if (pass) { - strncpy((char *) wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); + strlcpy((char *) wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); } ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); diff --git a/examples/wifi/iperf/main/cmd_wifi.c b/examples/wifi/iperf/main/cmd_wifi.c index 9ef61be48..a6fbdaa16 100644 --- a/examples/wifi/iperf/main/cmd_wifi.c +++ b/examples/wifi/iperf/main/cmd_wifi.c @@ -53,7 +53,7 @@ static EventGroupHandle_t wifi_event_group; const int CONNECTED_BIT = BIT0; const int DISCONNECTED_BIT = BIT1; -static void scan_done_handler(void* arg, esp_event_base_t event_base, +static void scan_done_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { uint16_t sta_number = 0; @@ -76,14 +76,14 @@ static void scan_done_handler(void* arg, esp_event_base_t event_base, ESP_LOGI(TAG, "sta scan done"); } -static void got_ip_handler(void* arg, esp_event_base_t event_base, +static void got_ip_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { xEventGroupClearBits(wifi_event_group, DISCONNECTED_BIT); xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); } -static void disconnect_handler(void* arg, esp_event_base_t event_base, +static void disconnect_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { if (reconnect) { @@ -128,7 +128,7 @@ static bool wifi_cmd_sta_join(const char* ssid, const char* pass) strlcpy((char*) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); if (pass) { - strncpy((char*) wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); + strlcpy((char*) wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); } if (bits & CONNECTED_BIT) { @@ -205,14 +205,14 @@ static bool wifi_cmd_ap_set(const char* ssid, const char* pass) }; reconnect = false; - strncpy((char*) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); + strlcpy((char*) wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid)); if (pass) { if (strlen(pass) != 0 && strlen(pass) < 8) { reconnect = true; ESP_LOGE(TAG, "password less than 8"); return false; } - strncpy((char*) wifi_config.ap.password, pass, sizeof(wifi_config.ap.password)); + strlcpy((char*) wifi_config.ap.password, pass, sizeof(wifi_config.ap.password)); } if (strlen(pass) == 0) {