diff options
author | Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> | 2011-07-15 19:13:21 +0300 |
---|---|---|
committer | Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> | 2011-07-15 19:13:21 +0300 |
commit | 589eac5c37a2dc5020e18fc9197cfcb2e5934f25 (patch) | |
tree | 234d70d959ec380acfbddbc1f159a4944ca53f5c | |
parent | 32a3d22201b141a3cebfbbb526f0101a1cf9a5ef (diff) | |
download | telepathy-logger-589eac5c37a2dc5020e18fc9197cfcb2e5934f25.tar.gz |
Avoid dereferencing NULL pointers
Use empty strings where a given string cannot be known
due to a NULL sender or actor.
-rw-r--r-- | telepathy-logger/log-store-xml.c | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c index c727aef..8a86dbc 100644 --- a/telepathy-logger/log-store-xml.c +++ b/telepathy-logger/log-store-xml.c @@ -545,18 +545,24 @@ add_text_event (TplLogStoreXml *self, TPL_EVENT (message)); sender = tpl_event_get_sender (TPL_EVENT (message)); - contact_id = g_markup_escape_text (tpl_entity_get_identifier (sender), -1); - contact_name = g_markup_escape_text (tpl_entity_get_alias (sender), -1); - avatar_token = g_markup_escape_text (tpl_entity_get_avatar_token (sender), - -1); + + if (sender != NULL) + { + contact_id = g_markup_escape_text (tpl_entity_get_identifier (sender), -1); + contact_name = g_markup_escape_text (tpl_entity_get_alias (sender), -1); + avatar_token = g_markup_escape_text (tpl_entity_get_avatar_token (sender), + -1); + } event = g_string_new (NULL); g_string_printf (event, "<message time='%s' id='%s' name='%s' " "token='%s' isuser='%s' type='%s'", - time_str, contact_id, contact_name, - avatar_token, - tpl_entity_get_entity_type (sender) - == TPL_ENTITY_SELF ? "true" : "false", + time_str, + contact_id ? contact_id : "", + contact_name ? contact_name : "", + avatar_token ? avatar_token : "", + (sender && tpl_entity_get_entity_type (sender) + == TPL_ENTITY_SELF) ? "true" : "false", _tpl_text_event_message_type_to_str (msg_type)); token_str = tpl_text_event_get_message_token (message); @@ -654,14 +660,22 @@ add_call_event (TplLogStoreXml *self, sender = tpl_event_get_sender (TPL_EVENT (event)); actor = tpl_call_event_get_end_actor (event); target = _tpl_event_get_target (TPL_EVENT (event)); - sender_id = g_markup_escape_text (tpl_entity_get_identifier (sender), -1); - sender_name = g_markup_escape_text (tpl_entity_get_alias (sender), -1); - sender_avatar = g_markup_escape_text (tpl_entity_get_avatar_token (sender), - -1); - actor_id = g_markup_escape_text (tpl_entity_get_identifier (actor), -1); - actor_name = g_markup_escape_text (tpl_entity_get_alias (actor), -1); - actor_avatar = g_markup_escape_text (tpl_entity_get_avatar_token (actor), - -1); + + if (sender != NULL) + { + sender_id = g_markup_escape_text (tpl_entity_get_identifier (sender), -1); + sender_name = g_markup_escape_text (tpl_entity_get_alias (sender), -1); + sender_avatar = g_markup_escape_text (tpl_entity_get_avatar_token (sender), + -1); + } + + if (actor != NULL) + { + actor_id = g_markup_escape_text (tpl_entity_get_identifier (actor), -1); + actor_name = g_markup_escape_text (tpl_entity_get_alias (actor), -1); + actor_avatar = g_markup_escape_text (tpl_entity_get_avatar_token (actor), + -1); + } log_str = g_strdup_printf ("<call time='%s' " @@ -672,16 +686,16 @@ add_call_event (TplLogStoreXml *self, "reason='%s' detail='%s'/>\n" LOG_FOOTER, time_str, - sender_id, - sender_name, - tpl_entity_get_entity_type (sender) == - TPL_ENTITY_SELF ? "true" : "false", - sender_avatar, + sender_id ? sender_id : "", + sender_name ? sender_name : "", + (sender && tpl_entity_get_entity_type (sender) == + TPL_ENTITY_SELF) ? "true" : "false", + sender_avatar ? sender_avatar : "", tpl_call_event_get_duration (event), - actor_id, - _tpl_entity_type_to_str (tpl_entity_get_entity_type (actor)), - actor_name, - actor_avatar, + actor_id ? actor_id : "", + actor ? _tpl_entity_type_to_str (tpl_entity_get_entity_type (actor)) : "", + actor_name ? actor_name : "", + actor_avatar ? actor_avatar : "", _tpl_call_event_end_reason_to_str (reason), tpl_call_event_get_detailed_end_reason (event)); |