Mercurial > pidgin.yaz
changeset 30056:84ec9e3cbb6d
jabber: Plug some leaks and make the success case quieter.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Wed, 31 Mar 2010 03:42:21 +0000 |
parents | 0646207f360f |
children | 7b4c881ebe64 |
files | libpurple/protocols/jabber/data.c |
diffstat | 1 files changed, 24 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/data.c Mon Mar 29 23:35:35 2010 +0000 +++ b/libpurple/protocols/jabber/data.c Wed Mar 31 03:42:21 2010 +0000 @@ -181,50 +181,48 @@ { const gchar *cid = jabber_data_get_cid(data); gchar **cid_parts = g_strsplit(cid, "@", -1); - gchar **iter; - int num_parts = 0; + guint num_cid_parts = 0; + gboolean ret = FALSE; - purple_debug_info("jabber", "validating BoB hash %s\n", cid); - - for (iter = cid_parts; *iter != NULL ; iter++) { - num_parts++; - } + if (cid_parts) + num_cid_parts = g_strv_length(cid_parts); - if (num_parts == 2 && purple_strequal(cid_parts[1], "bob.xmpp.org")) { + if (num_cid_parts == 2 && purple_strequal(cid_parts[1], "bob.xmpp.org")) { gchar **sub_parts = g_strsplit(cid_parts[0], "+", -1); + guint num_sub_parts = 0; - num_parts = 0; - for (iter = sub_parts ; *iter != NULL ; iter++) { - num_parts++; - } + if (sub_parts) + num_sub_parts = g_strv_length(sub_parts); - if (num_parts == 2) { + if (num_sub_parts == 2) { const gchar *hash_algo = sub_parts[0]; const gchar *hash_value = sub_parts[1]; gchar *digest = jabber_calculate_data_hash(jabber_data_get_data(data), jabber_data_get_size(data), hash_algo); - + if (digest) { - gboolean result = purple_strequal(digest, hash_value); - - purple_debug_info("jabber", "BoB expecting hash: %s\n", digest); + ret = purple_strequal(digest, hash_value); - if (!result) { - purple_debug_error("jabber", "invalid BoB hash\n"); - } + if (!ret) + purple_debug_warning("jabber", "Unable to validate BoB " + "hash; expecting %s, got %s\n", + cid, digest); + g_free(digest); - return result; } else { - purple_debug_info("jabber", "unknown BoB hash algo\n"); - return FALSE; + purple_debug_warning("jabber", "Unable to validate BoB hash; " + "unknown hash algorithm %s\n", hash_algo); } } else { - return FALSE; + purple_debug_warning("jabber", "Malformed BoB CID\n"); } - } else { - return FALSE; + + g_strfreev(sub_parts); } + + g_strfreev(cid_parts); + return ret; }