From 33df1d40d02ea453e8b0b31343fc64f185eef479 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 24 Feb 2015 14:42:21 -0600 Subject: libqmi-glib,message: fix big-endian handling of tlv->length (debian #778346) tlv->length is little-endian, so access to it must be protected with GUINT16_FROM_LE/GUINT16_TO_LE. Fixes testcase failures on PPC32. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=778346 --- src/libqmi-glib/qmi-message.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c index f034316..569fe6d 100644 --- a/src/libqmi-glib/qmi-message.c +++ b/src/libqmi-glib/qmi-message.c @@ -1741,7 +1741,7 @@ qmi_message_tlv_read_string (QmiMessage *self, /* If no length prefix given, read the remaining TLV buffer into a string */ tlv = (struct tlv *) &(self->data[tlv_offset]); - string_length = (tlv->length - *offset); + string_length = (GUINT16_FROM_LE (tlv->length) - *offset); break; } case 1: { @@ -1838,8 +1838,8 @@ __qmi_message_tlv_read_remaining_size (QmiMessage *self, tlv = (struct tlv *) &(self->data[tlv_offset]); - g_warn_if_fail (tlv->length >= offset); - return (tlv->length >= offset ? (tlv->length - offset) : 0); + g_warn_if_fail (GUINT16_FROM_LE (tlv->length) >= offset); + return (GUINT16_FROM_LE (tlv->length) >= offset ? (GUINT16_FROM_LE (tlv->length) - offset) : 0); } /*****************************************************************************/ @@ -2067,7 +2067,7 @@ get_generic_printable (QmiMessage *self, line_prefix, tlv->type, tlv->value, - tlv->length); + GUINT16_FROM_LE (tlv->length)); g_string_append (printable, printable_tlv); g_free (printable_tlv); } -- cgit v1.2.3