--- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -706,11 +706,8 @@ int hostapd_setup_interface_complete(str size_t j; u8 *prev_addr; - if (err) { - wpa_printf(MSG_ERROR, "Interface initialization failed"); - eloop_terminate(); - return -1; - } + if (err) + goto error; wpa_printf(MSG_DEBUG, "Completing interface initialization"); if (hapd->iconf->channel) { @@ -726,7 +723,7 @@ int hostapd_setup_interface_complete(str hapd->iconf->secondary_channel)) { wpa_printf(MSG_ERROR, "Could not set channel for " "kernel driver"); - return -1; + goto error; } } @@ -736,7 +733,7 @@ int hostapd_setup_interface_complete(str hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_WARNING, "Failed to prepare rates table."); - return -1; + goto error; } } @@ -744,14 +741,14 @@ int hostapd_setup_interface_complete(str hostapd_set_rts(hapd, hapd->iconf->rts_threshold)) { wpa_printf(MSG_ERROR, "Could not set RTS threshold for " "kernel driver"); - return -1; + goto error; } if (hapd->iconf->fragm_threshold > -1 && hostapd_set_frag(hapd, hapd->iconf->fragm_threshold)) { wpa_printf(MSG_ERROR, "Could not set fragmentation threshold " "for kernel driver"); - return -1; + goto error; } prev_addr = hapd->own_addr; @@ -761,7 +758,7 @@ int hostapd_setup_interface_complete(str if (j) os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN); if (hostapd_setup_bss(hapd, j == 0)) - return -1; + goto error; if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0) prev_addr = hapd->own_addr; } @@ -773,7 +770,7 @@ int hostapd_setup_interface_complete(str if (hostapd_driver_commit(hapd) < 0) { wpa_printf(MSG_ERROR, "%s: Failed to commit driver " "configuration", __func__); - return -1; + goto error; } wpa_printf(MSG_DEBUG, "%s: Setup of interface done.", @@ -783,6 +780,11 @@ int hostapd_setup_interface_complete(str iface->init_complete(iface); return 0; + +error: + wpa_printf(MSG_ERROR, "Interface initialization failed"); + eloop_terminate(); + return -1; }