/pidgin/main: 4eeb75c4ed61: Fix purple_hash_digest_to_str return...

Tomasz Wasilczyk <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 4eeb75c4ed61449443453158901339811c6fa0d0
Author:	 Tomasz Wasilczyk <[email protected]>
Date:	 2014-05-19 09:31 +0200
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/4eeb75c4ed61

Description:

Fix purple_hash_digest_to_str returned types

diffstat:

 libpurple/protocols/msn/notification.c |   6 +++---
 libpurple/util.c                       |  26 ++++++++++++++++++--------
 2 files changed, 21 insertions(+), 11 deletions(-)

diffs (102 lines):

diff --git a/libpurple/protocols/msn/notification.c b/libpurple/protocols/msn/notification.c
--- a/libpurple/protocols/msn/notification.c
+++ b/libpurple/protocols/msn/notification.c
@@ -1400,7 +1400,7 @@ url_cmd(MsnCmdProc *cmdproc, MsnCommand 
 	PurpleHash *hash;
 	gchar creds[33];
 	char *buf;
-	gssize diglen;
+	gboolean digest_ok;
 
 	gulong tmp_timestamp;
 
@@ -1421,11 +1421,11 @@ url_cmd(MsnCmdProc *cmdproc, MsnCommand 
 
 	hash = purple_md5_hash_new();
 	purple_hash_append(hash, (const guchar *)buf, strlen(buf));
-	diglen = purple_hash_digest_to_str(hash, creds, sizeof(creds));
+	digest_ok = purple_hash_digest_to_str(hash, creds, sizeof(creds));
 	g_object_unref(hash);
 	g_free(buf);
 
-	g_return_if_fail(diglen > 0);
+	g_return_if_fail(digest_ok);
 
 	g_free(session->passport_info.mail_url);
 	session->passport_info.mail_url =
diff --git a/libpurple/util.c b/libpurple/util.c
--- a/libpurple/util.c
+++ b/libpurple/util.c
@@ -4819,7 +4819,7 @@ gchar *purple_http_digest_calculate_sess
 {
 	PurpleHash *hasher;
 	gchar hash[33]; /* We only support MD5. */
-	gssize digest_len;
+	gboolean digest_ok;
 
 	g_return_val_if_fail(username != NULL, NULL);
 	g_return_val_if_fail(realm    != NULL, NULL);
@@ -4862,10 +4862,10 @@ gchar *purple_http_digest_calculate_sess
 		purple_hash_append(hasher, (guchar *)client_nonce, strlen(client_nonce));
 	}
 
-	digest_len = purple_hash_digest_to_str(hasher, hash, sizeof(hash));
+	digest_ok = purple_hash_digest_to_str(hasher, hash, sizeof(hash));
 	g_object_unref(hasher);
 
-	g_return_val_if_fail(digest_len > 0, NULL);
+	g_return_val_if_fail(digest_ok, NULL);
 
 	return g_strdup(hash);
 }
@@ -4883,7 +4883,7 @@ gchar *purple_http_digest_calculate_resp
 {
 	PurpleHash *hash;
 	static gchar hash2[33]; /* We only support MD5. */
-	gssize hash_len;
+	gboolean digest_ok;
 
 	g_return_val_if_fail(method      != NULL, NULL);
 	g_return_val_if_fail(digest_uri  != NULL, NULL);
@@ -4923,16 +4923,26 @@ gchar *purple_http_digest_calculate_resp
 
 		hash2 = purple_md5_hash_new();
 		purple_hash_append(hash2, (guchar *)entity, strlen(entity));
-		purple_hash_digest_to_str(hash2, entity_hash, sizeof(entity_hash));
+		digest_ok = purple_hash_digest_to_str(hash2, entity_hash, sizeof(entity_hash));
 		g_object_unref(hash2);
 
+		if (!digest_ok) {
+			g_object_unref(hash);
+			g_return_val_if_reached(NULL);
+		}
+
 		purple_hash_append(hash, (guchar *)":", 1);
 		purple_hash_append(hash, (guchar *)entity_hash, strlen(entity_hash));
 	}
 
-	purple_hash_digest_to_str(hash, hash2, sizeof(hash2));
+	digest_ok = purple_hash_digest_to_str(hash, hash2, sizeof(hash2));
 	purple_hash_reset(hash);
 
+	if (!digest_ok) {
+		g_object_unref(hash);
+		g_return_val_if_reached(NULL);
+	}
+
 	purple_hash_append(hash, (guchar *)session_key, strlen(session_key));
 	purple_hash_append(hash, (guchar *)":", 1);
 	purple_hash_append(hash, (guchar *)nonce, strlen(nonce));
@@ -4965,10 +4975,10 @@ gchar *purple_http_digest_calculate_resp
 	}
 
 	purple_hash_append(hash, (guchar *)hash2, strlen(hash2));
-	hash_len = purple_hash_digest_to_str(hash, hash2, sizeof(hash2));
+	digest_ok = purple_hash_digest_to_str(hash, hash2, sizeof(hash2));
 	g_object_unref(hash);
 
-	g_return_val_if_fail(hash_len > 0, NULL);
+	g_return_val_if_fail(digest_ok, NULL);
 
 	return g_strdup(hash2);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.