/pidgin/main: cd7db320cf5c: Fix coverity regression warnings

Tomasz Wasilczyk twasilczyk at pidgin.im
Mon May 12 17:32:09 EDT 2014


Changeset: cd7db320cf5c1ac2db8a95f71fe8f9532a5c7905
Author:	 Tomasz Wasilczyk <twasilczyk at pidgin.im>
Date:	 2014-05-12 23:32 +0200
Branch:	 release-2.x.y
URL: https://hg.pidgin.im/pidgin/main/rev/cd7db320cf5c

Description:

Fix coverity regression warnings

diffstat:

 finch/libgnt/gnttextview.c                |  4 ++++
 libpurple/dnssrv.c                        |  8 ++++++++
 libpurple/plugins/log_reader.c            |  2 ++
 libpurple/protocols/yahoo/yahoo_profile.c |  2 +-
 libpurple/protocols/zephyr/ZReadAscii.c   |  2 +-
 libpurple/protocols/zephyr/zephyr.c       |  4 ++--
 pidgin/gtkprefs.c                         |  5 ++++-
 pidgin/plugins/perl/common/GtkIMHtml.xs   |  2 +-
 8 files changed, 23 insertions(+), 6 deletions(-)

diffs (116 lines):

diff --git a/finch/libgnt/gnttextview.c b/finch/libgnt/gnttextview.c
--- a/finch/libgnt/gnttextview.c
+++ b/finch/libgnt/gnttextview.c
@@ -766,6 +766,10 @@ int gnt_text_view_tag_change(GntTextView
 
 				for (segs = line->segments; segs; segs = snext) {
 					GntTextSegment *seg = segs->data;
+
+					if (!line)
+						break;
+
 					snext = segs->next;
 					if (seg->start >= tag->end) {
 						/* The segment is somewhere after the tag */
diff --git a/libpurple/dnssrv.c b/libpurple/dnssrv.c
--- a/libpurple/dnssrv.c
+++ b/libpurple/dnssrv.c
@@ -544,6 +544,14 @@ resolved(gpointer data, gint source, Pur
 							responses = NULL;
 							break;
 						}
+						if (len > MAX_ADDR_RESPONSE_LEN) {
+							purple_debug_error("dnssrv", "we've read invalid number\n");
+							size = 0;
+							g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
+							g_list_free(responses);
+							responses = NULL;
+							break;
+						}
 
 						res = g_new0(PurpleTxtResponse, 1);
 						res->content = g_new0(gchar, len);
diff --git a/libpurple/plugins/log_reader.c b/libpurple/plugins/log_reader.c
--- a/libpurple/plugins/log_reader.c
+++ b/libpurple/plugins/log_reader.c
@@ -2003,6 +2003,8 @@ static char *qip_logger_read(PurpleLog *
 
 			/* find EOL */
 			c = strchr(c, '\n');
+			if (!c)
+				break;
 
 			/* XXX: Do we need buddy_name when we have buddy->alias? */
 			buddy_name = ++c;
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
@@ -1023,7 +1023,7 @@ yahoo_got_photo(PurpleUtilFetchUrlData *
 		purple_debug_misc("yahoo", "after utf8 conversion: stripped = (%s)\n", stripped);
 	}
 
-	if (profile_state == PROFILE_STATE_DEFAULT) {
+	if (strings && 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/protocols/zephyr/ZReadAscii.c b/libpurple/protocols/zephyr/ZReadAscii.c
--- a/libpurple/protocols/zephyr/ZReadAscii.c
+++ b/libpurple/protocols/zephyr/ZReadAscii.c
@@ -64,7 +64,7 @@ Code_t ZReadAscii32(ptr, len, value_ptr)
     retval = ZReadAscii(ptr, len, buf, 4);
     if (retval != ZERR_NONE)
 	return retval;
-    value |= buf[0] << 24;
+    value |= (unsigned long)buf[0] << 24;
     value |= buf[1] << 16;
     value |= buf[2] << 8;
     value |= buf[3];
diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c
--- a/libpurple/protocols/zephyr/zephyr.c
+++ b/libpurple/protocols/zephyr/zephyr.c
@@ -697,7 +697,7 @@ static char *zephyr_to_html(const char *
 			gboolean last_had_closer;
 
 			message += strlen(frames->closer);
-			if (frames && frames->enclosing) {
+			if (frames->enclosing) {
 				do {
 					popped = frames;
 					frames = frames->enclosing;
@@ -706,7 +706,7 @@ static char *zephyr_to_html(const char *
 					g_string_free(popped->text, TRUE);
 					last_had_closer = popped->has_closer;
 					g_free(popped);
-				} while (frames && frames->enclosing && !last_had_closer);
+				} while (frames->enclosing && !last_had_closer);
 			} else {
 				g_string_append_c(frames->text, *message);
 			}
diff --git a/pidgin/gtkprefs.c b/pidgin/gtkprefs.c
--- a/pidgin/gtkprefs.c
+++ b/pidgin/gtkprefs.c
@@ -729,7 +729,10 @@ theme_install_theme(char *path, struct t
 			g_rename(purple_theme_get_dir(theme), theme_dest);
 
 			g_free(theme_dest);
-			g_remove(destdir);
+			if (g_remove(destdir) != 0) {
+				purple_debug_error("gtkprefs",
+					"couldn't remove temp (dest) path\n");
+			}
 			g_object_unref(theme);
 
 			prefs_themes_refresh();
diff --git a/pidgin/plugins/perl/common/GtkIMHtml.xs b/pidgin/plugins/perl/common/GtkIMHtml.xs
--- a/pidgin/plugins/perl/common/GtkIMHtml.xs
+++ b/pidgin/plugins/perl/common/GtkIMHtml.xs
@@ -176,7 +176,7 @@ PPCODE:
 	else
 		t_len = 0;
 
-	for (i = 0; i <= t_len; i++) {
+	for (i = 0; i <= t_len && unused; i++) {
 		STRLEN t_sl;
 		t_GL = g_slist_append(t_GL, SvPV(*av_fetch((AV *)SvRV(unused), i, 0), t_sl));
 	}



More information about the Commits mailing list