From: Jouni Malinen Date: Mon, 5 Dec 2016 19:28:50 +0000 (+0200) Subject: Allow hostapd wep_key# parameters to be cleared X-Git-Tag: hostap_2_7~2059 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20b1a9e2389c429bfe36a725804c61b4977d7322;p=thirdparty%2Fhostap.git Allow hostapd wep_key# parameters to be cleared Setting wep_key# to an empty string will now clear a previously configured key. This is needed to be able to change WEP configured AP to using WPA/WPA2 through the hostapd control interface SET commands. Signed-off-by: Jouni Malinen --- diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 832ff5517..d9fdd20b4 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -768,7 +768,25 @@ static int hostapd_config_read_wep(struct hostapd_wep_keys *wep, int keyidx, { size_t len = os_strlen(val); - if (keyidx < 0 || keyidx > 3 || wep->key[keyidx] != NULL) + if (keyidx < 0 || keyidx > 3) + return -1; + + if (len == 0) { + int i, set = 0; + + bin_clear_free(wep->key[keyidx], wep->len[keyidx]); + wep->key[keyidx] = NULL; + wep->len[keyidx] = 0; + for (i = 0; i < NUM_WEP_KEYS; i++) { + if (wep->key[i]) + set++; + } + if (!set) + wep->keys_set = 0; + return 0; + } + + if (wep->key[keyidx] != NULL) return -1; if (val[0] == '"') {