aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2015-02-24 14:42:21 -0600
committerDan Williams <dcbw@redhat.com>2015-02-24 14:45:15 -0600
commit33df1d40d02ea453e8b0b31343fc64f185eef479 (patch)
tree842b6f41a93de634537224599cb90e2ac4ae6f62 /src
parent656b5d17d9b8bf16f1acaa7043f3c23ecd711617 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/libqmi-glib/qmi-message.c8
1 files changed, 4 insertions, 4 deletions
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);
}