]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: wilc1000: fix for absent RSN capabilities WFA testcase
authorAmisha Patel <amisha.patel@microchip.com>
Fri, 21 Apr 2023 18:10:20 +0000 (18:10 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jul 2023 17:39:26 +0000 (19:39 +0200)
[ Upstream commit 9ce4bb09123e9754996e358bd808d39f5d112899 ]

Mandatory WFA testcase
CT_Security_WPA2Personal_STA_RSNEBoundsVerification-AbsentRSNCap,
performs bounds verfication on Beacon and/or Probe response frames. It
failed and observed the reason to be absence of cipher suite and AKM
suite in RSN information. To fix this, enable the RSN flag before extracting RSN
capabilities.

Fixes: cd21d99e595e ("wifi: wilc1000: validate pairwise and authentication suite offsets")
Signed-off-by: Amisha Patel <amisha.patel@microchip.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230421181005.4865-1-amisha.patel@microchip.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/microchip/wilc1000/hif.c

index 5adc69d5bcae37838eb7acdd78798f6be3f31c65..a28da5938481340101d547e88f639e07d8683ad3 100644 (file)
@@ -485,6 +485,9 @@ void *wilc_parse_join_bss_param(struct cfg80211_bss *bss,
                int rsn_ie_len = sizeof(struct element) + rsn_ie[1];
                int offset = 8;
 
+               param->mode_802_11i = 2;
+               param->rsn_found = true;
+
                /* extract RSN capabilities */
                if (offset < rsn_ie_len) {
                        /* skip over pairwise suites */
@@ -494,11 +497,8 @@ void *wilc_parse_join_bss_param(struct cfg80211_bss *bss,
                                /* skip over authentication suites */
                                offset += (rsn_ie[offset] * 4) + 2;
 
-                               if (offset + 1 < rsn_ie_len) {
-                                       param->mode_802_11i = 2;
-                                       param->rsn_found = true;
+                               if (offset + 1 < rsn_ie_len)
                                        memcpy(param->rsn_cap, &rsn_ie[offset], 2);
-                               }
                        }
                }
        }