/pidgin/main: 2d7d55acd82c: Coverity: fix null pointer dereferences

Tomasz Wasilczyk twasilczyk at pidgin.im
Thu May 15 17:02:31 EDT 2014


Changeset: 2d7d55acd82c0de210064ca5b2c10b1150a9b7fa
Author:	 Tomasz Wasilczyk <twasilczyk at pidgin.im>
Date:	 2014-05-15 23:02 +0200
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/2d7d55acd82c

Description:

Coverity: fix null pointer dereferences

diffstat:

 libpurple/http.c                          |  7 ++++---
 libpurple/protocols/gg/utils.c            |  3 ++-
 libpurple/protocols/yahoo/yahoo_profile.c |  2 +-
 libpurple/request.c                       |  6 ++++--
 4 files changed, 11 insertions(+), 7 deletions(-)

diffs (84 lines):

diff --git a/libpurple/http.c b/libpurple/http.c
--- a/libpurple/http.c
+++ b/libpurple/http.c
@@ -1944,6 +1944,7 @@ static void purple_http_cookie_jar_parse
 					"Invalid cookie: [%s]\n", cookie);
 			else
 				purple_debug_warning("http", "Invalid cookie.");
+			continue;
 		}
 
 		name = g_strndup(cookie, eqsign - cookie);
@@ -1955,7 +1956,7 @@ static void purple_http_cookie_jar_parse
 
 		if (semicolon != NULL) {
 			GMatchInfo *match_info;
-			GRegex *re_expires = g_regex_new(
+			GRegex *re_expires = g_regex_new( /* XXX: make it static */
 				"expires=([a-z0-9, :]+)",
 				G_REGEX_OPTIMIZE | G_REGEX_CASELESS,
 				G_REGEX_MATCH_NOTEMPTY, NULL);
@@ -2884,7 +2885,7 @@ purple_http_url_parse(const char *raw_ur
 	url->fragment = g_match_info_fetch(match_info, 4);
 	g_match_info_free(match_info);
 
-	if (url->protocol[0] == '\0') {
+	if (g_strcmp0(url->protocol, "") == 0) {
 		g_free(url->protocol);
 		url->protocol = NULL;
 	} else if (url->protocol != NULL) {
@@ -2939,7 +2940,7 @@ purple_http_url_parse(const char *raw_ur
 			g_free(url->password);
 			url->password = NULL;
 		}
-		if (url->host[0] == '\0') {
+		if (g_strcmp0(url->host, "") == 0) {
 			g_free(url->host);
 			url->host = NULL;
 		} else if (url->host != NULL) {
diff --git a/libpurple/protocols/gg/utils.c b/libpurple/protocols/gg/utils.c
--- a/libpurple/protocols/gg/utils.c
+++ b/libpurple/protocols/gg/utils.c
@@ -111,10 +111,11 @@ gboolean ggp_password_validate(const gch
 
 gchar * ggp_utf8_strndup(const gchar *str, gsize n)
 {
-	size_t raw_len = strlen(str);
+	size_t raw_len;
 	gchar *end_ptr;
 	if (str == NULL)
 		return NULL;
+	raw_len = strlen(str);
 	if (raw_len <= n)
 		return g_strdup(str);
 
diff --git a/libpurple/protocols/yahoo/yahoo_profile.c b/libpurple/protocols/yahoo/yahoo_profile.c
--- a/libpurple/protocols/yahoo/yahoo_profile.c
+++ b/libpurple/protocols/yahoo/yahoo_profile.c
@@ -1018,7 +1018,7 @@ yahoo_got_photo(PurpleHttpConnection *ht
 		purple_debug_misc("yahoo", "after utf8 conversion: stripped = (%s)\n", stripped);
 	}
 
-	if (strings && profile_state == PROFILE_STATE_DEFAULT) {
+	if (profile_state == PROFILE_STATE_DEFAULT) {
 #if 0
 	/* extract their Yahoo! ID and put it in. Don't bother marking has_info as
 	 * true, since the Yahoo! ID will always be there */
diff --git a/libpurple/request.c b/libpurple/request.c
--- a/libpurple/request.c
+++ b/libpurple/request.c
@@ -959,10 +959,12 @@ purple_request_field_destroy(PurpleReque
 			while (it != NULL) {
 				g_free(it->data);
 				it = g_list_next(it); /* value */
+				if (it == NULL) {
+					g_warn_if_reached();
+					break;
+				}
 				if (it->data && field->u.choice.data_destroy)
 					field->u.choice.data_destroy(it->data);
-				if (it == NULL)
-					break;
 				it = g_list_next(it); /* next label */
 			}
 			g_list_free(field->u.choice.elements);



More information about the Commits mailing list