--- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -723,11 +723,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) { @@ -743,7 +740,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; } } @@ -754,7 +751,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; } } @@ -762,14 +759,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; @@ -779,7 +776,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; } @@ -791,7 +788,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; } /* @@ -815,6 +812,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; }