Fix memory leaks on wpa_config_parse_string() error paths

hostapd configuration parser did not free the temporary buffer on some
error paths.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2014-03-11 22:41:12 +02:00 committed by Jouni Malinen
parent a0b728b7e2
commit b2e32cde83

View file

@ -1679,6 +1679,7 @@ static int hs20_parse_osu_ssid(struct hostapd_bss_config *bss,
str = wpa_config_parse_string(pos, &slen); str = wpa_config_parse_string(pos, &slen);
if (str == NULL || slen < 1 || slen > HOSTAPD_MAX_SSID_LEN) { if (str == NULL || slen < 1 || slen > HOSTAPD_MAX_SSID_LEN) {
wpa_printf(MSG_ERROR, "Line %d: Invalid SSID '%s'", line, pos); wpa_printf(MSG_ERROR, "Line %d: Invalid SSID '%s'", line, pos);
os_free(str);
return -1; return -1;
} }
@ -1893,12 +1894,12 @@ static int hostapd_config_fill(struct hostapd_config *conf,
if (str == NULL || slen < 1 || slen > HOSTAPD_MAX_SSID_LEN) { if (str == NULL || slen < 1 || slen > HOSTAPD_MAX_SSID_LEN) {
wpa_printf(MSG_ERROR, "Line %d: invalid SSID '%s'", wpa_printf(MSG_ERROR, "Line %d: invalid SSID '%s'",
line, pos); line, pos);
os_free(str);
return 1; return 1;
} else {
os_memcpy(bss->ssid.ssid, str, slen);
bss->ssid.ssid_len = slen;
bss->ssid.ssid_set = 1;
} }
os_memcpy(bss->ssid.ssid, str, slen);
bss->ssid.ssid_len = slen;
bss->ssid.ssid_set = 1;
os_free(str); os_free(str);
} else if (os_strcmp(buf, "utf8_ssid") == 0) { } else if (os_strcmp(buf, "utf8_ssid") == 0) {
bss->ssid.utf8_ssid = atoi(pos) > 0; bss->ssid.utf8_ssid = atoi(pos) > 0;