Fix segmentation fault for NULL confname in SAVE_CONFIG

When wpa_supplicant interface is added without a configuration file, the
SAVE_CONFIG command causes a segmentation fault due to referencing a
NULL pointer if the update_config parameter is first explicitly enabled.

Fix the issue by checking the confname for NULL before saving
configuration.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
Zhaoyang Liu 2020-03-05 11:25:00 +08:00 committed by Jouni Malinen
parent 81621eab7c
commit 87775e32f6

View file

@ -1612,9 +1612,16 @@ int wpa_config_write(const char *name, struct wpa_config *config)
#endif /* CONFIG_NO_CONFIG_BLOBS */ #endif /* CONFIG_NO_CONFIG_BLOBS */
int ret = 0; int ret = 0;
const char *orig_name = name; const char *orig_name = name;
int tmp_len = os_strlen(name) + 5; /* allow space for .tmp suffix */ int tmp_len;
char *tmp_name = os_malloc(tmp_len); char *tmp_name;
if (!name) {
wpa_printf(MSG_ERROR, "No configuration file for writing");
return -1;
}
tmp_len = os_strlen(name) + 5; /* allow space for .tmp suffix */
tmp_name = os_malloc(tmp_len);
if (tmp_name) { if (tmp_name) {
os_snprintf(tmp_name, tmp_len, "%s.tmp", name); os_snprintf(tmp_name, tmp_len, "%s.tmp", name);
name = tmp_name; name = tmp_name;