void hostapd_config_free(struct hostapd_config *conf) { if (conf == NULL) return; free(conf->dump_log_name); free(conf->eap_req_id_text); free(conf->accept_mac); free(conf->deny_mac); hostapd_config_free_radius(conf->auth_servers, conf->num_auth_servers); hostapd_config_free_radius(conf->acct_servers, conf->num_acct_servers); free(conf); }
void hostapd_config_free(struct hostapd_config *conf) { struct hostapd_wpa_psk *psk, *prev; struct hostapd_eap_user *user, *prev_user; if (conf == NULL) return; psk = conf->wpa_psk; while (psk) { prev = psk; psk = psk->next; free(prev); } free(conf->wpa_passphrase); free(conf->wpa_psk_file); user = conf->eap_user; while (user) { prev_user = user; user = user->next; hostapd_config_free_eap_user(prev_user); } free(conf->dump_log_name); free(conf->eap_req_id_text); free(conf->accept_mac); free(conf->deny_mac); free(conf->nas_identifier); hostapd_config_free_radius(conf->radius->auth_servers, conf->radius->num_auth_servers); hostapd_config_free_radius(conf->radius->acct_servers, conf->radius->num_acct_servers); free(conf->rsn_preauth_interfaces); free(conf->ctrl_interface); free(conf->ca_cert); free(conf->server_cert); free(conf->private_key); free(conf->private_key_passwd); free(conf->eap_sim_db); free(conf->radius_server_clients); free(conf->test_socket); free(conf); }
static void hostapd_config_free_bss(struct hostapd_bss_config *conf) { struct hostapd_wpa_psk *psk, *prev; struct hostapd_eap_user *user, *prev_user; if (conf == NULL) return; psk = conf->ssid.wpa_psk; while (psk) { prev = psk; psk = psk->next; os_free(prev); } os_free(conf->ssid.wpa_passphrase); os_free(conf->ssid.wpa_psk_file); hostapd_config_free_wep(&conf->ssid.wep); #ifdef CONFIG_FULL_DYNAMIC_VLAN os_free(conf->ssid.vlan_tagged_interface); #endif /* CONFIG_FULL_DYNAMIC_VLAN */ user = conf->eap_user; while (user) { prev_user = user; user = user->next; hostapd_config_free_eap_user(prev_user); } os_free(conf->dump_log_name); os_free(conf->eap_req_id_text); os_free(conf->accept_mac); os_free(conf->deny_mac); os_free(conf->nas_identifier); hostapd_config_free_radius(conf->radius->auth_servers, conf->radius->num_auth_servers); hostapd_config_free_radius(conf->radius->acct_servers, conf->radius->num_acct_servers); os_free(conf->rsn_preauth_interfaces); os_free(conf->ctrl_interface); os_free(conf->ca_cert); os_free(conf->server_cert); os_free(conf->private_key); os_free(conf->private_key_passwd); os_free(conf->dh_file); os_free(conf->pac_opaque_encr_key); os_free(conf->eap_fast_a_id); os_free(conf->eap_fast_a_id_info); os_free(conf->eap_sim_db); os_free(conf->radius_server_clients); os_free(conf->test_socket); os_free(conf->radius); hostapd_config_free_vlan(conf); if (conf->ssid.dyn_vlan_keys) { struct hostapd_ssid *ssid = &conf->ssid; size_t i; for (i = 0; i <= ssid->max_dyn_vlan_keys; i++) { if (ssid->dyn_vlan_keys[i] == NULL) continue; hostapd_config_free_wep(ssid->dyn_vlan_keys[i]); os_free(ssid->dyn_vlan_keys[i]); } os_free(ssid->dyn_vlan_keys); ssid->dyn_vlan_keys = NULL; } #ifdef CONFIG_IEEE80211R { struct ft_remote_r0kh *r0kh, *r0kh_prev; struct ft_remote_r1kh *r1kh, *r1kh_prev; r0kh = conf->r0kh_list; conf->r0kh_list = NULL; while (r0kh) { r0kh_prev = r0kh; r0kh = r0kh->next; os_free(r0kh_prev); } r1kh = conf->r1kh_list; conf->r1kh_list = NULL; while (r1kh) { r1kh_prev = r1kh; r1kh = r1kh->next; os_free(r1kh_prev); } } #endif /* CONFIG_IEEE80211R */ #ifdef CONFIG_WPS os_free(conf->wps_pin_requests); os_free(conf->device_name); os_free(conf->manufacturer); os_free(conf->model_name); os_free(conf->model_number); os_free(conf->serial_number); os_free(conf->config_methods); os_free(conf->ap_pin); os_free(conf->extra_cred); os_free(conf->ap_settings); os_free(conf->upnp_iface); os_free(conf->friendly_name); os_free(conf->manufacturer_url); os_free(conf->model_description); os_free(conf->model_url); os_free(conf->upc); #endif /* CONFIG_WPS */ }
static void hostapd_config_free_bss(struct hostapd_bss_config *conf) { struct hostapd_wpa_psk *psk, *prev; struct hostapd_eap_user *user, *prev_user; if (conf == NULL) return; psk = conf->ssid.wpa_psk; while (psk) { prev = psk; psk = psk->next; os_free(prev); } os_free(conf->ssid.wpa_passphrase); os_free(conf->ssid.wpa_psk_file); hostapd_config_free_wep(&conf->ssid.wep); #ifdef CONFIG_FULL_DYNAMIC_VLAN os_free(conf->ssid.vlan_tagged_interface); #endif /* CONFIG_FULL_DYNAMIC_VLAN */ user = conf->eap_user; while (user) { prev_user = user; user = user->next; hostapd_config_free_eap_user(prev_user); } os_free(conf->dump_log_name); os_free(conf->eap_req_id_text); os_free(conf->accept_mac); os_free(conf->deny_mac); os_free(conf->nas_identifier); hostapd_config_free_radius(conf->radius->auth_servers, conf->radius->num_auth_servers); hostapd_config_free_radius(conf->radius->acct_servers, conf->radius->num_acct_servers); hostapd_config_free_radius_attr(conf->radius_auth_req_attr); hostapd_config_free_radius_attr(conf->radius_acct_req_attr); os_free(conf->rsn_preauth_interfaces); os_free(conf->ctrl_interface); os_free(conf->ca_cert); os_free(conf->server_cert); os_free(conf->private_key); os_free(conf->private_key_passwd); os_free(conf->dh_file); os_free(conf->pac_opaque_encr_key); os_free(conf->eap_fast_a_id); os_free(conf->eap_fast_a_id_info); os_free(conf->eap_sim_db); os_free(conf->radius_server_clients); os_free(conf->test_socket); os_free(conf->radius); os_free(conf->radius_das_shared_secret); hostapd_config_free_vlan(conf); if (conf->ssid.dyn_vlan_keys) { struct hostapd_ssid *ssid = &conf->ssid; size_t i; for (i = 0; i <= ssid->max_dyn_vlan_keys; i++) { if (ssid->dyn_vlan_keys[i] == NULL) continue; hostapd_config_free_wep(ssid->dyn_vlan_keys[i]); os_free(ssid->dyn_vlan_keys[i]); } os_free(ssid->dyn_vlan_keys); ssid->dyn_vlan_keys = NULL; } os_free(conf->time_zone); #ifdef CONFIG_IEEE80211R { struct ft_remote_r0kh *r0kh, *r0kh_prev; struct ft_remote_r1kh *r1kh, *r1kh_prev; r0kh = conf->r0kh_list; conf->r0kh_list = NULL; while (r0kh) { r0kh_prev = r0kh; r0kh = r0kh->next; os_free(r0kh_prev); } r1kh = conf->r1kh_list; conf->r1kh_list = NULL; while (r1kh) { r1kh_prev = r1kh; r1kh = r1kh->next; os_free(r1kh_prev); } } #endif /* CONFIG_IEEE80211R */ #ifdef CONFIG_WPS os_free(conf->wps_pin_requests); os_free(conf->device_name); os_free(conf->manufacturer); os_free(conf->model_name); os_free(conf->model_number); os_free(conf->serial_number); os_free(conf->config_methods); os_free(conf->ap_pin); os_free(conf->extra_cred); os_free(conf->ap_settings); os_free(conf->upnp_iface); os_free(conf->friendly_name); os_free(conf->manufacturer_url); os_free(conf->model_description); os_free(conf->model_url); os_free(conf->upc); wpabuf_free(conf->wps_nfc_dh_pubkey); wpabuf_free(conf->wps_nfc_dh_privkey); wpabuf_free(conf->wps_nfc_dev_pw); #endif /* CONFIG_WPS */ os_free(conf->roaming_consortium); os_free(conf->venue_name); os_free(conf->nai_realm_data); os_free(conf->network_auth_type); os_free(conf->anqp_3gpp_cell_net); os_free(conf->domain_name); #ifdef CONFIG_RADIUS_TEST os_free(conf->dump_msk_file); #endif /* CONFIG_RADIUS_TEST */ #ifdef CONFIG_HS20 os_free(conf->hs20_oper_friendly_name); os_free(conf->hs20_wan_metrics); os_free(conf->hs20_connection_capability); os_free(conf->hs20_operating_class); #endif /* CONFIG_HS20 */ wpabuf_free(conf->vendor_elements); }
void hostapd_config_free_bss(struct hostapd_bss_config *conf) { struct hostapd_eap_user *user, *prev_user; if (conf == NULL) return; hostapd_config_clear_wpa_psk(&conf->ssid.wpa_psk); str_clear_free(conf->ssid.wpa_passphrase); os_free(conf->ssid.wpa_psk_file); hostapd_config_free_wep(&conf->ssid.wep); #ifdef CONFIG_FULL_DYNAMIC_VLAN os_free(conf->ssid.vlan_tagged_interface); #endif /* CONFIG_FULL_DYNAMIC_VLAN */ user = conf->eap_user; while (user) { prev_user = user; user = user->next; hostapd_config_free_eap_user(prev_user); } os_free(conf->eap_user_sqlite); os_free(conf->eap_req_id_text); os_free(conf->erp_domain); os_free(conf->accept_mac); os_free(conf->deny_mac); os_free(conf->nas_identifier); if (conf->radius) { hostapd_config_free_radius(conf->radius->auth_servers, conf->radius->num_auth_servers); hostapd_config_free_radius(conf->radius->acct_servers, conf->radius->num_acct_servers); } hostapd_config_free_radius_attr(conf->radius_auth_req_attr); hostapd_config_free_radius_attr(conf->radius_acct_req_attr); os_free(conf->rsn_preauth_interfaces); os_free(conf->ctrl_interface); os_free(conf->ca_cert); os_free(conf->server_cert); os_free(conf->private_key); os_free(conf->private_key_passwd); os_free(conf->ocsp_stapling_response); os_free(conf->ocsp_stapling_response_multi); os_free(conf->dh_file); os_free(conf->openssl_ciphers); os_free(conf->pac_opaque_encr_key); os_free(conf->eap_fast_a_id); os_free(conf->eap_fast_a_id_info); os_free(conf->eap_sim_db); os_free(conf->radius_server_clients); os_free(conf->radius); os_free(conf->radius_das_shared_secret); hostapd_config_free_vlan(conf); os_free(conf->time_zone); #ifdef CONFIG_IEEE80211R { struct ft_remote_r0kh *r0kh, *r0kh_prev; struct ft_remote_r1kh *r1kh, *r1kh_prev; r0kh = conf->r0kh_list; conf->r0kh_list = NULL; while (r0kh) { r0kh_prev = r0kh; r0kh = r0kh->next; os_free(r0kh_prev); } r1kh = conf->r1kh_list; conf->r1kh_list = NULL; while (r1kh) { r1kh_prev = r1kh; r1kh = r1kh->next; os_free(r1kh_prev); } } #endif /* CONFIG_IEEE80211R */ #ifdef CONFIG_WPS os_free(conf->wps_pin_requests); os_free(conf->device_name); os_free(conf->manufacturer); os_free(conf->model_name); os_free(conf->model_number); os_free(conf->serial_number); os_free(conf->config_methods); os_free(conf->ap_pin); os_free(conf->extra_cred); os_free(conf->ap_settings); os_free(conf->upnp_iface); os_free(conf->friendly_name); os_free(conf->manufacturer_url); os_free(conf->model_description); os_free(conf->model_url); os_free(conf->upc); { unsigned int i; for (i = 0; i < MAX_WPS_VENDOR_EXTENSIONS; i++) wpabuf_free(conf->wps_vendor_ext[i]); } wpabuf_free(conf->wps_nfc_dh_pubkey); wpabuf_free(conf->wps_nfc_dh_privkey); wpabuf_free(conf->wps_nfc_dev_pw); #endif /* CONFIG_WPS */ os_free(conf->roaming_consortium); os_free(conf->venue_name); os_free(conf->nai_realm_data); os_free(conf->network_auth_type); os_free(conf->anqp_3gpp_cell_net); os_free(conf->domain_name); hostapd_config_free_anqp_elem(conf); #ifdef CONFIG_RADIUS_TEST os_free(conf->dump_msk_file); #endif /* CONFIG_RADIUS_TEST */ #ifdef CONFIG_HS20 os_free(conf->hs20_oper_friendly_name); os_free(conf->hs20_wan_metrics); os_free(conf->hs20_connection_capability); os_free(conf->hs20_operating_class); os_free(conf->hs20_icons); if (conf->hs20_osu_providers) { size_t i; for (i = 0; i < conf->hs20_osu_providers_count; i++) { struct hs20_osu_provider *p; size_t j; p = &conf->hs20_osu_providers[i]; os_free(p->friendly_name); os_free(p->server_uri); os_free(p->method_list); for (j = 0; j < p->icons_count; j++) os_free(p->icons[j]); os_free(p->icons); os_free(p->osu_nai); os_free(p->service_desc); } os_free(conf->hs20_osu_providers); } os_free(conf->subscr_remediation_url); #endif /* CONFIG_HS20 */ wpabuf_free(conf->vendor_elements); wpabuf_free(conf->assocresp_elements); os_free(conf->sae_groups); os_free(conf->wowlan_triggers); os_free(conf->server_id); #ifdef CONFIG_TESTING_OPTIONS wpabuf_free(conf->own_ie_override); #endif /* CONFIG_TESTING_OPTIONS */ os_free(conf->no_probe_resp_if_seen_on); os_free(conf->no_auth_if_seen_on); os_free(conf); }