From 01d2b9b91d0a7f246028f578f57455c213ef0d7f Mon Sep 17 00:00:00 2001 From: Marc Date: Wed, 10 Aug 2022 13:28:51 -0500 Subject: parse: Check for WEP presence before removing it from bitfield --- src/libwifi/parse/management/common.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') 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 int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) { struct libwifi_rsn_info rsn_info = {0}; - bss->encryption_info &= ~(unsigned int) WEP; + if (bss->encryption_info & WEP) { + bss->encryption_info &= ~(unsigned int) WEP; + } int min_len = sizeof(rsn_info.rsn_version) + sizeof(struct libwifi_cipher_suite); if (rsn_len < min_len) { @@ -105,7 +107,9 @@ int libwifi_bss_handle_msft_tag(struct libwifi_bss *bss, const unsigned char *ms switch (vendor_header->type) { case MICROSOFT_OUI_TYPE_WPA: - bss->encryption_info &= ~(unsigned int) WEP; + if (bss->encryption_info & WEP) { + bss->encryption_info &= ~(unsigned int) WEP; + } bss->encryption_info |= WPA; // Skip 4 bytes for the OUI (3) and Vendor Tag Type (1) -- cgit 1.4.1