[PATCH] dbus: fix BSS WPS/WPA/RSN IE property getters.

Marcel Holtmann marcel at holtmann.org
Mon Jan 4 04:57:52 EST 2010


From: Witold Sowa <witold.sowa at gmail.com>

If no IE is availeble the getter will return an empty array insead of
empty message.
---
 wpa_supplicant/dbus/dbus_new_handlers.c  |   21 ++++++++++++---------
 wpa_supplicant/examples/wpas-dbus-new.py |    4 ++--
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
index 5f521d4..2d2e7a3 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c
@@ -2527,6 +2527,7 @@ DBusMessage * wpas_dbus_getter_bss_wpaie(DBusMessage *message,
 {
 	struct wpa_bss *res = wpa_bss_get_id(bss->wpa_s, bss->id);
 	const u8 *ie;
+	size_t len;
 
 	if (!res) {
 		wpa_printf(MSG_ERROR, "wpas_dbus_getter_bss_wpaie[dbus]: no "
@@ -2535,10 +2536,10 @@ DBusMessage * wpas_dbus_getter_bss_wpaie(DBusMessage *message,
 	}
 
 	ie = wpa_bss_get_vendor_ie(res, WPA_IE_VENDOR_TYPE);
-	if (!ie)
-		return NULL;
+	len = ie ? ie[1] + 2 : 0;
+
 	return wpas_dbus_simple_array_property_getter(message, DBUS_TYPE_BYTE,
-						      ie, ie[1] + 2);
+						      ie, len);
 }
 
 
@@ -2556,6 +2557,7 @@ DBusMessage * wpas_dbus_getter_bss_rsnie(DBusMessage *message,
 {
 	struct wpa_bss *res = wpa_bss_get_id(bss->wpa_s, bss->id);
 	const u8 *ie;
+	size_t len;
 
 	if (!res) {
 		wpa_printf(MSG_ERROR, "wpas_dbus_getter_bss_rsnie[dbus]: no "
@@ -2564,10 +2566,10 @@ DBusMessage * wpas_dbus_getter_bss_rsnie(DBusMessage *message,
 	}
 
 	ie = wpa_bss_get_ie(res, WLAN_EID_RSN);
-	if (!ie)
-		return NULL;
+	len = ie ? ie[1] + 2 : 0;
+
 	return wpas_dbus_simple_array_property_getter(message, DBUS_TYPE_BYTE,
-						      ie, ie[1] + 2);
+						      ie, len);
 }
 
 
@@ -2585,6 +2587,7 @@ DBusMessage * wpas_dbus_getter_bss_wpsie(DBusMessage *message,
 {
 	struct wpa_bss *res = wpa_bss_get_id(bss->wpa_s, bss->id);
 	const u8 *ie;
+	size_t len;
 
 	if (!res) {
 		wpa_printf(MSG_ERROR, "wpas_dbus_getter_bss_wpsie[dbus]: no "
@@ -2593,10 +2596,10 @@ DBusMessage * wpas_dbus_getter_bss_wpsie(DBusMessage *message,
 	}
 
 	ie = wpa_bss_get_vendor_ie(res, WPS_IE_VENDOR_TYPE);
-	if (!ie)
-		return NULL;
+	len = ie ? ie[1] + 2 : 0;
+
 	return wpas_dbus_simple_array_property_getter(message, DBUS_TYPE_BYTE,
-						      ie, ie[1] + 2);
+						      ie, len);
 }
 
 
diff --git a/wpa_supplicant/examples/wpas-dbus-new.py b/wpa_supplicant/examples/wpas-dbus-new.py
index 156b4fb..a313197 100755
--- a/wpa_supplicant/examples/wpas-dbus-new.py
+++ b/wpa_supplicant/examples/wpas-dbus-new.py
@@ -54,12 +54,12 @@ def showBss(bss):
 	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'WPAIE',
 			  dbus_interface=dbus.PROPERTIES_IFACE)
 	wpa = "no"
-	if val != None:
+	if len(val) > 0:
 		wpa = "yes"
 	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'RSNIE',
 			  dbus_interface=dbus.PROPERTIES_IFACE)
 	wpa2 = "no"
-	if val != None:
+	if len(val) > 0:
 		wpa2 = "yes"
 	freq = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Frequency',
 			   dbus_interface=dbus.PROPERTIES_IFACE)
-- 
1.6.5.2



More information about the HostAP mailing list