diff options
Diffstat (limited to 'hostapd/config_file.c')
-rw-r--r-- | hostapd/config_file.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 5540059d..14ddad7f 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -3295,6 +3295,36 @@ static int hostapd_config_fill(struct hostapd_config *conf, wpabuf_free(bss->vendor_elements); bss->vendor_elements = elems; + } else if (os_strcmp(buf, "assocresp_elements") == 0) { + struct wpabuf *elems; + size_t len = os_strlen(pos); + if (len & 0x01) { + wpa_printf(MSG_ERROR, + "Line %d: Invalid assocresp_elements '%s'", + line, pos); + return 1; + } + len /= 2; + if (len == 0) { + wpabuf_free(bss->assocresp_elements); + bss->assocresp_elements = NULL; + return 0; + } + + elems = wpabuf_alloc(len); + if (elems == NULL) + return 1; + + if (hexstr2bin(pos, wpabuf_put(elems, len), len)) { + wpabuf_free(elems); + wpa_printf(MSG_ERROR, + "Line %d: Invalid assocresp_elements '%s'", + line, pos); + return 1; + } + + wpabuf_free(bss->assocresp_elements); + bss->assocresp_elements = elems; } else if (os_strcmp(buf, "sae_anti_clogging_threshold") == 0) { bss->sae_anti_clogging_threshold = atoi(pos); } else if (os_strcmp(buf, "sae_groups") == 0) { |