[PATCH v2] P2P: p2p_group_remove should fail on non p2p interface
Michael Naumov
michael.naumov
Thu Jul 26 13:49:02 PDT 2012
p2p_group_remove should only attempt to remove p2p group
interfaces and fail on non p2p group interfaces
Signed-hostap: Michael Naumov <michael.naumov at intel.com>
Signed-hostap: Nirav Shah <nirav.j2.shah at intel.com>
---
wpa_supplicant/p2p_supplicant.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 218ed2f..70122f9 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -214,7 +214,7 @@ static struct wpa_supplicant * wpas_get_p2p_group(struct wpa_supplicant *wpa_s,
}
-static void wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, int silent)
+static int wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, int silent)
{
struct wpa_ssid *ssid;
char *gtype;
@@ -234,6 +234,16 @@ static void wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, int silent)
break;
ssid = ssid->next;
}
+ if (ssid == NULL) {
+ /*
+ * Reset wpa_s->removal_reason to 0 since wpa_s
+ * was allocated using os_zalloc
+ */
+ wpa_s->removal_reason = 0;
+ wpa_printf(MSG_ERROR, "P2P: P2P group interface "
+ "not found");
+ return -1;
+ }
}
if (wpa_s->p2p_group_interface == P2P_GROUP_INTERFACE_GO)
gtype = "GO";
@@ -295,7 +305,7 @@ static void wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, int silent)
if (wpa_s && ifname)
wpa_drv_if_remove(wpa_s, type, ifname);
os_free(ifname);
- return;
+ return 0;
}
wpa_printf(MSG_DEBUG, "P2P: Remove temporary group network");
@@ -328,6 +338,8 @@ static void wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, int silent)
wpa_supplicant_ap_deinit(wpa_s);
else
wpa_drv_deinit_p2p_cli(wpa_s);
+
+ return 0;
}
@@ -4795,9 +4807,7 @@ int wpas_p2p_disconnect(struct wpa_supplicant *wpa_s)
return -1;
wpa_s->removal_reason = P2P_GROUP_REMOVAL_REQUESTED;
- wpas_p2p_group_delete(wpa_s, 0);
-
- return 0;
+ return wpas_p2p_group_delete(wpa_s, 0);
}
--
1.7.9.5
More information about the Hostap
mailing list