]> granicus.if.org Git - esp-idf/commitdiff
wps: Relax the check on older config methods in case of WPS2.0
authorNachiket Kukade <nachiket.kukade@espressif.com>
Fri, 9 Aug 2019 11:49:37 +0000 (17:19 +0530)
committerbot <bot@espressif.com>
Tue, 20 Aug 2019 09:58:41 +0000 (09:58 +0000)
Some APs incorrectly advertize newer WPS2.0 config method bits
without setting bits for the corresponding older methods. This
results in failures during 8-way handshake. Add a workaround to
relax this check so that WPS handshake can proceed.

components/wpa_supplicant/src/wps/wps_validate.c

index 34f0865b117517e25cb70f91a0a3d29af05a29a4..de0a46e7dd22cfdfd4752ae7ba638a5018c2a6be 100644 (file)
@@ -96,23 +96,11 @@ static int wps_validate_response_type(const u8 *response_type, int mandatory)
 static int valid_config_methods(u16 val, int wps2)
 {
        if (wps2) {
-               if ((val & 0x6000) && !(val & WPS_CONFIG_DISPLAY)) {
-                       wpa_printf(MSG_INFO, "WPS-STRICT: Physical/Virtual "
-                                  "Display flag without old Display flag "
-                                  "set");
-                       return 0;
-               }
                if (!(val & 0x6000) && (val & WPS_CONFIG_DISPLAY)) {
                        wpa_printf(MSG_INFO, "WPS-STRICT: Display flag "
                                   "without Physical/Virtual Display flag");
                        return 0;
                }
-               if ((val & 0x0600) && !(val & WPS_CONFIG_PUSHBUTTON)) {
-                       wpa_printf(MSG_INFO, "WPS-STRICT: Physical/Virtual "
-                                  "PushButton flag without old PushButton "
-                                  "flag set");
-                       return 0;
-               }
                if (!(val & 0x0600) && (val & WPS_CONFIG_PUSHBUTTON)) {
                        wpa_printf(MSG_INFO, "WPS-STRICT: PushButton flag "
                                   "without Physical/Virtual PushButton flag");