[PATCH] Fix an endian bug in dbus properties.
Sylvestre Gallon
ccna.syl
Tue Jan 3 08:24:14 PST 2012
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 <ccna.syl at gmail.com>
---
wpa_supplicant/dbus/dbus_new_handlers.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
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);
}
@@ -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);
}
--
1.7.3.4
More information about the Hostap
mailing list