Browse Source

dbus: Fix endianness bug in Frequency and Signal properties

These properties did not work on big endian PowerPC (always 100% for
Signal and 0 for Frequency) due to endianness problem (u32 to u16 data
loss).

Signed-off-by: Sylvestre Gallon <ccna.syl@gmail.com>
Sylvestre Gallon 13 years ago
parent
commit
3d0a843823
1 changed files with 6 additions and 2 deletions
  1. 6 2
      wpa_supplicant/dbus/dbus_new_handlers.c

+ 6 - 2
wpa_supplicant/dbus/dbus_new_handlers.c

@@ -2867,13 +2867,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);
 }
 
 
@@ -2891,13 +2893,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);
 }