dbus: Fix WPS property of fi.w1.wpa_supplicant1.BSS interface

The dbus interface documentation says the following about the
WPS property of the fi.w1.wpa_supplicant1.BSS interface:

==
WPS information of the BSS. Empty dictionary indicates no WPS support.
Dictionary entries are:

Type	s	"pbc", "pin", ""
==

However the implementation returns "type" => "" for BSSes
that do not support WPS.

Fix the implementation to match the documentation.
Return empty dictionary if there is no WPS support.
And "type" => "" if WPS is supported, but is not in progress
right now.

Signed-off-by: Floris Bos <bos@je-eigen-domein.nl>
This commit is contained in:
Floris Bos 2015-04-11 02:11:46 +02:00 committed by Jouni Malinen
parent d447cd596f
commit 8e2c5f1a20

View file

@ -3791,6 +3791,7 @@ dbus_bool_t wpas_dbus_getter_bss_wps(DBusMessageIter *iter, DBusError *error,
struct wpabuf *wps_ie; struct wpabuf *wps_ie;
#endif /* CONFIG_WPS */ #endif /* CONFIG_WPS */
DBusMessageIter iter_dict, variant_iter; DBusMessageIter iter_dict, variant_iter;
int wps_support = 0;
const char *type = ""; const char *type = "";
res = get_bss_helper(args, error, __func__); res = get_bss_helper(args, error, __func__);
@ -3805,6 +3806,7 @@ dbus_bool_t wpas_dbus_getter_bss_wps(DBusMessageIter *iter, DBusError *error,
#ifdef CONFIG_WPS #ifdef CONFIG_WPS
wps_ie = wpa_bss_get_vendor_ie_multi(res, WPS_IE_VENDOR_TYPE); wps_ie = wpa_bss_get_vendor_ie_multi(res, WPS_IE_VENDOR_TYPE);
if (wps_ie) { if (wps_ie) {
wps_support = 1;
if (wps_is_selected_pbc_registrar(wps_ie)) if (wps_is_selected_pbc_registrar(wps_ie))
type = "pbc"; type = "pbc";
else if (wps_is_selected_pin_registrar(wps_ie)) else if (wps_is_selected_pin_registrar(wps_ie))
@ -3814,7 +3816,7 @@ dbus_bool_t wpas_dbus_getter_bss_wps(DBusMessageIter *iter, DBusError *error,
} }
#endif /* CONFIG_WPS */ #endif /* CONFIG_WPS */
if (!wpa_dbus_dict_append_string(&iter_dict, "Type", type) || if ((wps_support && !wpa_dbus_dict_append_string(&iter_dict, "Type", type)) ||
!wpa_dbus_dict_close_write(&variant_iter, &iter_dict) || !wpa_dbus_dict_close_write(&variant_iter, &iter_dict) ||
!dbus_message_iter_close_container(iter, &variant_iter)) !dbus_message_iter_close_container(iter, &variant_iter))
goto nomem; goto nomem;