hostapd: Fix multi-BSS configuration file parsing regression

Commit ebd79f07c4 broke parsing of
configuration files that use the bss parameter to specify another BSS
entry. This resulted in crashing the process with NULL pointer
dereference since the new hostapd_config::bss design requires this
function to allocate a new hostapd_bss_config structure.

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2013-11-03 20:01:50 +02:00
parent e4ba031531
commit 2fe210cebb

View file

@ -762,16 +762,18 @@ static int hostapd_config_bss(struct hostapd_config *conf, const char *ifname)
} }
conf->bss = all; conf->bss = all;
bss = conf->bss[conf->num_bss]; bss = os_zalloc(sizeof(*bss));
os_memset(bss, 0, sizeof(*bss)); if (bss == NULL)
return -1;
bss->radius = os_zalloc(sizeof(*bss->radius)); bss->radius = os_zalloc(sizeof(*bss->radius));
if (bss->radius == NULL) { if (bss->radius == NULL) {
wpa_printf(MSG_ERROR, "Failed to allocate memory for " wpa_printf(MSG_ERROR, "Failed to allocate memory for "
"multi-BSS RADIUS data"); "multi-BSS RADIUS data");
os_free(bss);
return -1; return -1;
} }
conf->num_bss++; conf->bss[conf->num_bss++] = bss;
conf->last_bss = bss; conf->last_bss = bss;
hostapd_config_defaults_bss(bss); hostapd_config_defaults_bss(bss);