[PATCH 1/2] P2P: Allow wildcard service discovery from DBus API

Adrien Bustany adrien at bustany.org
Fri Apr 13 02:52:12 EDT 2012


From: Adrien Bustany <adrien.bustany at nokia.com>

Using the socket command interface, it is possible to pass a NULL dst
to wpas_p2p_sd_request, however you could not do so using the DBus API,
since it required a valid Peer object path.
This patch changes the behaviour, so that if the "peer_object" is
missing from the parameters, a NULL dst is passed to
wpas_p2p_sd_request.
---
 wpa_supplicant/dbus/dbus_new_handlers_p2p.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
index 62930c7..12e095a 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
@@ -2258,7 +2258,7 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_req(
 	struct wpabuf *tlv = NULL;
 	u8 version = 0;
 	u64 ref = 0;
-	u8 addr[ETH_ALEN];
+	u8 addr_buf[ETH_ALEN], *addr;
 
 	dbus_message_iter_init(message, &iter);
 
@@ -2295,10 +2295,15 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_req(
 		wpa_dbus_dict_entry_clear(&entry);
 	}
 
-	if (!peer_object_path ||
-	    (parse_peer_object_path(peer_object_path, addr) < 0) ||
-	    !p2p_peer_known(wpa_s->global->p2p, addr))
-		goto error;
+	if (!peer_object_path) {
+		addr = 0;
+	} else {
+		if ((parse_peer_object_path(peer_object_path, addr_buf) < 0) ||
+		    !p2p_peer_known(wpa_s->global->p2p, addr_buf))
+			goto error;
+
+		addr = addr_buf;
+	}
 
 	if (upnp == 1) {
 		if (version <= 0 || service == NULL)
-- 
1.7.8.1



More information about the HostAP mailing list