Otherwise the flow would continue, eventually falling back to PASN method instead of SAE even if not allowed in PBMA. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@xxxxxxxxx> --- wpa_supplicant/ctrl_iface.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 3d15a74534..d30707fbbc 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -6356,6 +6356,30 @@ static int p2p_ctrl_asp_provision(struct wpa_supplicant *wpa_s, char *cmd) } +static bool bootstrap_pwd_required(u16 bootstrap) +{ + switch (bootstrap) { + case P2P_PBMA_OPPORTUNISTIC: + return false; + case P2P_PBMA_PIN_CODE_DISPLAY: + case P2P_PBMA_PASSPHRASE_DISPLAY: + case P2P_PBMA_QR_DISPLAY: + case P2P_PBMA_NFC_TAG: + case P2P_PBMA_PIN_CODE_KEYPAD: + case P2P_PBMA_PASSPHRASE_KEYPAD: + case P2P_PBMA_QR_SCAN: + case P2P_PBMA_NFC_READER: + return true; + case P2P_PBMA_SERVICE_MANAGED: + case P2P_PBMA_HANDSHAKE_SKIP: + default: + break; + } + + return false; +} + + static int p2p_ctrl_connect(struct wpa_supplicant *wpa_s, char *cmd, char *buf, size_t buflen) { @@ -6517,6 +6541,12 @@ static int p2p_ctrl_connect(struct wpa_supplicant *wpa_s, char *cmd, } } + if (bootstrap_pwd_required(bootstrap) && !password) { + wpa_printf(MSG_DEBUG, + "CTRL_IFACE: This P2P2 Bootstrap method requires password"); + return -1; + } + new_pin = wpas_p2p_connect(wpa_s, addr, pin, wps_method, persistent_group, automatic, join, auth, go_intent, freq, freq2, persistent_id, -- 2.43.0 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap