From: Stepanov, Max Date: Tue, 23 Jun 2015 13:52:22 +0000 (+0000) Subject: P2PS: Fix p2p_find last parameter handling X-Git-Tag: hostap_2_5~503 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9ea609ce84baa001b125adc9da55e5416a96d91;p=thirdparty%2Fhostap.git P2PS: Fix p2p_find last parameter handling In p2p_find command line processing a loop searching for multiple 'seek=' parameters modifies cmd buffer adding '\0' terminators. The 'freq=' parameter is handled after that and can be lost if a 'freq=' follows 'seek=' in a command line. Fix it by moving a handling of 'freq=' parameter to be processed before 'seek=' handling loop. Signed-off-by: Max Stepanov --- diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 0c5ea8f59..d0d70e916 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -4595,6 +4595,14 @@ static int p2p_ctrl_find(struct wpa_supplicant *wpa_s, char *cmd) } else search_delay = wpas_p2p_search_delay(wpa_s); + pos = os_strstr(cmd, "freq="); + if (pos) { + pos += 5; + freq = atoi(pos); + if (freq <= 0) + return -1; + } + /* Must be searched for last, because it adds nul termination */ pos = os_strstr(cmd, " seek="); if (pos) @@ -4617,14 +4625,6 @@ static int p2p_ctrl_find(struct wpa_supplicant *wpa_s, char *cmd) seek_count = 1; } - pos = os_strstr(cmd, "freq="); - if (pos) { - pos += 5; - freq = atoi(pos); - if (freq <= 0) - return -1; - } - return wpas_p2p_find(wpa_s, timeout, type, _dev_type != NULL, _dev_type, _dev_id, search_delay, seek_count, seek, freq); }