about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libwifi/parse/management/common.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libwifi/parse/management/common.c b/src/libwifi/parse/management/common.c index e847415..5e4fbf6 100644 --- a/src/libwifi/parse/management/common.c +++ b/src/libwifi/parse/management/common.c
@@ -68,7 +68,9 @@ void libwifi_handle_ssid_tag(void *target, int target_type, const char *tag_data
68int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) { 68int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) {
69 struct libwifi_rsn_info rsn_info = {0}; 69 struct libwifi_rsn_info rsn_info = {0};
70 70
71 bss->encryption_info &= ~(unsigned int) WEP; 71 if (bss->encryption_info & WEP) {
72 bss->encryption_info &= ~(unsigned int) WEP;
73 }
72 74
73 int min_len = sizeof(rsn_info.rsn_version) + sizeof(struct libwifi_cipher_suite); 75 int min_len = sizeof(rsn_info.rsn_version) + sizeof(struct libwifi_cipher_suite);
74 if (rsn_len < min_len) { 76 if (rsn_len < min_len) {
@@ -105,7 +107,9 @@ int libwifi_bss_handle_msft_tag(struct libwifi_bss *bss, const unsigned char *ms
105 107
106 switch (vendor_header->type) { 108 switch (vendor_header->type) {
107 case MICROSOFT_OUI_TYPE_WPA: 109 case MICROSOFT_OUI_TYPE_WPA:
108 bss->encryption_info &= ~(unsigned int) WEP; 110 if (bss->encryption_info & WEP) {
111 bss->encryption_info &= ~(unsigned int) WEP;
112 }
109 bss->encryption_info |= WPA; 113 bss->encryption_info |= WPA;
110 114
111 // Skip 4 bytes for the OUI (3) and Vendor Tag Type (1) 115 // Skip 4 bytes for the OUI (3) and Vendor Tag Type (1)