summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-03-08 13:28:01 +0100
committerCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-03-12 14:07:50 +0100
commit3396bb782378df3352da0106a608cab86722df66 (patch)
tree376d1277fef7ba415e14c9c2aba9534da972c7be
parent72f640053a59783c6f5e7f09be12e372806ac452 (diff)
check validity for data retrieved with tp_asv_*
-rw-r--r--telepathy-logger/channel-text.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/telepathy-logger/channel-text.c b/telepathy-logger/channel-text.c
index d00fa2847..3fc7d3ba3 100644
--- a/telepathy-logger/channel-text.c
+++ b/telepathy-logger/channel-text.c
@@ -672,11 +672,9 @@ got_message_pending_messages_cb (TpProxy *proxy,
guint message_flags = 0;
guint message_id;
TpHandle message_sender_handle;
-
- gboolean is_scrollback;
- gboolean is_rescued;
const gchar *message_body;
GList *l = NULL;
+ gboolean valid;
/* list of message's parts */
message_parts = g_ptr_array_index (result, i);
@@ -691,7 +689,13 @@ got_message_pending_messages_cb (TpProxy *proxy,
message_token = tp_asv_get_string (message_headers, "message-token");
message_id = tp_asv_get_uint32 (message_headers, "pending-message-id",
- NULL);
+ &valid);
+ if (!valid)
+ {
+ DEBUG ("pending-message-id not in a valid range, setting to "
+ "UNKNOWN");
+ message_id = TPL_LOG_ENTRY_MSG_ID_UNKNOWN;
+ }
message_timestamp = tp_asv_get_uint64 (message_headers,
"message-received", NULL);
@@ -719,16 +723,20 @@ got_message_pending_messages_cb (TpProxy *proxy,
message_sender_handle = tp_asv_get_uint32 (message_headers,
"message-sender", NULL);
- if (g_hash_table_lookup (message_headers, "message-type") != NULL)
- message_type = tp_asv_get_uint32 (message_headers, "message-type",
- NULL);
+ message_type = tp_asv_get_uint32 (message_headers, "message-type",
+ &valid);
+ if (!valid)
+ {
+ PATH_DEBUG (proxy, "message-type not in a valid range, falling "
+ "back to type=NORMAL");
+ message_type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL;
+ }
- is_rescued = tp_asv_get_boolean (message_headers, "rescued", NULL);
- is_scrollback = tp_asv_get_boolean (message_headers, "scrollback",
- NULL);
- message_flags = (is_rescued ? TP_CHANNEL_TEXT_MESSAGE_FLAG_RESCUED : 0);
- message_flags |= (is_scrollback ?
- TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK : 0);
+ if (tp_asv_get_boolean (message_headers, "rescued", &valid) && valid)
+ message_flags |= TP_CHANNEL_TEXT_MESSAGE_FLAG_RESCUED;
+
+ if (tp_asv_get_boolean (message_headers, "scrollback", NULL) && valid)
+ message_flags |= TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK;
message_body = tp_asv_get_string (message_part, "content");