From a9ea609ce84baa001b125adc9da55e5416a96d91 Mon Sep 17 00:00:00 2001 From: "Stepanov, Max" Date: Tue, 23 Jun 2015 13:52:22 +0000 Subject: [PATCH] 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 --- wpa_supplicant/ctrl_iface.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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); }