diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-24 18:07:19 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-26 09:25:06 +0200 |
commit | 9bc830ed2b4ed732a20e9d173537634d798c76ba (patch) | |
tree | a9d877fafe0d4900e963da4be7bcc839cba60802 | |
parent | 48f5f06b2040a96b3fc66f1f6d84aa48af591f75 (diff) |
message: `QmiMessage' objects are always valid
We make sure that every `QmiMessage' object out there is valid according to our
now internal message_check(). Therefore, it's pointless to run the validity
checks in getters, so remove those.
-rw-r--r-- | libqmi-glib/qmi-message.c | 43 | ||||
-rw-r--r-- | libqmi-glib/qmi-message.h | 3 |
2 files changed, 9 insertions, 37 deletions
diff --git a/libqmi-glib/qmi-message.c b/libqmi-glib/qmi-message.c index 2be8897..1dd6386 100644 --- a/libqmi-glib/qmi-message.c +++ b/libqmi-glib/qmi-message.c @@ -320,11 +320,7 @@ qmi_tlv_next (QmiMessage *self, return (next < end ? next : NULL); } -/** - * qmi_message_check: - * @self: a #QmiMessage. - * @error: return location for error or %NULL. - * +/* * Checks the validity of a QMI message. * * In particular, checks: @@ -335,16 +331,14 @@ qmi_tlv_next (QmiMessage *self, * * Returns: #TRUE if the message is valid, #FALSE otherwise. */ -gboolean -qmi_message_check (QmiMessage *self, - GError **error) +static gboolean +message_check (QmiMessage *self, + GError **error) { gsize header_length; guint8 *end; struct tlv *tlv; - g_return_val_if_fail (self != NULL, FALSE); - if (((struct full_message *)(self->data))->marker != QMI_MESSAGE_QMUX_MARKER) { g_set_error (error, QMI_CORE_ERROR, @@ -407,12 +401,12 @@ qmi_message_check (QmiMessage *self, tlv->value, end); return FALSE; } - if (tlv->value + le16toh (tlv->length) > end) { + if (tlv->value + GUINT16_FROM_LE (tlv->length) > end) { g_set_error (error, QMI_CORE_ERROR, QMI_CORE_ERROR_INVALID_MESSAGE, "TLV value runs over buffer (%p + %u > %p)", - tlv->value, le16toh (tlv->length), end); + tlv->value, GUINT16_FROM_LE (tlv->length), end); return FALSE; } } @@ -484,7 +478,7 @@ qmi_message_new (QmiService service, set_all_tlvs_length (self, 0); /* We shouldn't create invalid empty messages */ - g_assert (qmi_message_check (self, NULL)); + g_assert (message_check (self, NULL)); return (QmiMessage *)self; } @@ -538,13 +532,6 @@ qmi_message_get_raw (QmiMessage *self, g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (length != NULL, NULL); - /* QmiMessages are built either from a valid raw data buffer or from scratch - * with qmi_message_new() and adding the TLVs afterwards with - * qmi_message_add_raw_tlv(). In both cases, we must always have valid - * messages. TODO: remove this */ - if (!qmi_message_check (self, error)) - return NULL; - *length = self->len; return self->data; } @@ -632,12 +619,6 @@ qmi_message_add_raw_tlv (QmiMessage *self, g_return_val_if_fail (raw != NULL, FALSE); g_return_val_if_fail (length > 0, FALSE); - /* Make sure nothing's broken to start. */ - if (!qmi_message_check (self, error)) { - g_prefix_error (error, "Invalid QMI message detected: "); - return FALSE; - } - /* Find length of new TLV */ tlv_len = sizeof (struct tlv) + length; @@ -664,10 +645,7 @@ qmi_message_add_raw_tlv (QmiMessage *self, set_all_tlvs_length (self, (guint16)(get_all_tlvs_length (self) + tlv_len)); /* Make sure we didn't break anything. */ - if (!qmi_message_check (self, error)) { - g_prefix_error (error, "Invalid QMI message built: "); - return FALSE; - } + g_assert (message_check (self, error)); return TRUE; } @@ -711,7 +689,7 @@ qmi_message_new_from_raw (GByteArray *raw, g_byte_array_remove_range (raw, 0, self->len); /* Check input message validity as soon as we create the QmiMessage */ - if (!qmi_message_check (self, error)) { + if (!message_check (self, error)) { /* Yes, we lose the whole message here */ qmi_message_unref (self); return NULL; @@ -813,9 +791,6 @@ qmi_message_get_printable (QmiMessage *self, g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (line_prefix != NULL, NULL); - if (!qmi_message_check (self, NULL)) - return NULL; - if (!line_prefix) line_prefix = ""; diff --git a/libqmi-glib/qmi-message.h b/libqmi-glib/qmi-message.h index 433192e..6b25c31 100644 --- a/libqmi-glib/qmi-message.h +++ b/libqmi-glib/qmi-message.h @@ -105,9 +105,6 @@ gchar *qmi_message_get_tlv_printable (QmiMessage *self, const guint8 *raw, gsize raw_length); -gboolean qmi_message_check (QmiMessage *self, - GError **error); - G_END_DECLS #endif /* _LIBQMI_GLIB_QMI_MESSAGE_H_ */ |