[PATCH] p2p: Fix the setter function for DBus group properties

Angie Chinchilla angie.v.chinchilla
Fri Feb 3 16:46:02 PST 2012


From: Todd Previte <toddx.a.previte at intel.com>

The setter function uses the same hostapd_data structure as the getter which
causes it to crash if called on a P2P client. To overcome this issue, the
role is checked to ensure it is called on a group owner and the pointer
is examined for validity. The function will return an error if called on
a non-GO system.

Signed-hostap: Todd Previte <toddx.a.previte at intel.com>
Signed-hostap: Angie Chinchilla <angie.v.chinchilla at intel.com>
---
 wpa_supplicant/dbus/dbus_new_handlers_p2p.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
index d621fb2..295b68e 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
@@ -1764,13 +1764,13 @@ dbus_bool_t wpas_dbus_setter_p2p_group_properties(DBusMessageIter *iter,
 	DBusMessageIter variant_iter, iter_dict;
 	struct wpa_dbus_dict_entry entry = { .type = DBUS_TYPE_STRING };
 	unsigned int i;
-	struct hostapd_data *hapd = wpa_s->ap_iface->bss[0];
+	struct hostapd_data *hapd = NULL;
 
-	if (!hapd) {
-		dbus_set_error_const(error, DBUS_ERROR_FAILED,
-				     "internal error");
+	if (wpas_get_p2p_role(wpa_s) == WPAS_P2P_ROLE_GO &&
+	    wpa_s->ap_iface != NULL)
+		hapd = wpa_s->ap_iface->bss[0];
+	else
 		return FALSE;
-	}
 
 	dbus_message_iter_recurse(iter, &variant_iter);
 	if (!wpa_dbus_dict_open_read(&variant_iter, &iter_dict, error))
-- 
1.7.0.4




More information about the Hostap mailing list