From patchwork Tue Jan 3 16:24:14 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Fix an endian bug in dbus properties. From: Sylvestre Gallon X-Patchwork-Id: 134037 Message-Id: To: hostap Date: Tue, 3 Jan 2012 17:24:14 +0100 Hi, Here is a patch to allow the use of Frequency and Signal DBus properties for Big Endian targets. I have tried NetworkManager on a powerpc target (BigEndian) and I find that these properties does not work (always 100% for Signal and 0 for Frequency). After some investigation I find that the bug come from an endian problem in wpa_supplicant (u32 to u16 data loss). Cheers, Signed-off-by: Sylvestre Gallon --- wpa_supplicant/dbus/dbus_new_handlers.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) @@ -2833,13 +2835,15 @@ dbus_bool_t wpas_dbus_getter_bss_frequency(DBusMessageIter *iter, { struct bss_handler_args *args = user_data; struct wpa_bss *res; + u16 freq; res = get_bss_helper(args, error, __func__); if (!res) return FALSE; + freq = (u16)res->freq; return wpas_dbus_simple_property_getter(iter, DBUS_TYPE_UINT16, - &res->freq, error); + &freq, error); } diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c index e3526d4..b03f1d7 100644 --- a/wpa_supplicant/dbus/dbus_new_handlers.c +++ b/wpa_supplicant/dbus/dbus_new_handlers.c @@ -2809,13 +2809,15 @@ dbus_bool_t wpas_dbus_getter_bss_signal(DBusMessageIter *iter, { struct bss_handler_args *args = user_data; struct wpa_bss *res; + s16 level; res = get_bss_helper(args, error, __func__); if (!res) return FALSE; + level = (s16)res->level; return wpas_dbus_simple_property_getter(iter, DBUS_TYPE_INT16, - &res->level, error); + &level, error); }