wps: Relax the check on older config methods in case of WPS2.0 (backport v3.1)

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.
This commit is contained in:
Nachiket Kukade 2019-08-09 17:19:37 +05:30 committed by bot
parent 9d8fef2220
commit 6beea28f56

View 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) static int valid_config_methods(u16 val, int wps2)
{ {
if (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)) { if (!(val & 0x6000) && (val & WPS_CONFIG_DISPLAY)) {
wpa_printf(MSG_INFO, "WPS-STRICT: Display flag " wpa_printf(MSG_INFO, "WPS-STRICT: Display flag "
"without Physical/Virtual Display flag"); "without Physical/Virtual Display flag");
return 0; 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)) { if (!(val & 0x0600) && (val & WPS_CONFIG_PUSHBUTTON)) {
wpa_printf(MSG_INFO, "WPS-STRICT: PushButton flag " wpa_printf(MSG_INFO, "WPS-STRICT: PushButton flag "
"without Physical/Virtual PushButton flag"); "without Physical/Virtual PushButton flag");