diff options
| -rw-r--r-- | src/libwifi/parse/management/common.c | 8 |
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 | |||
| 68 | int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) { | 68 | int 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) |
