[Commits] [SCM] claws branch, master, updated. 3.10.0-63-gfd779c8

Colin colin at claws-mail.org
Fri Jun 6 13:38:18 CEST 2014


The branch master of project "claws" (Claws Mail) has been updated
       via  fd779c80a57f905b228e6972881368e5777cc562 (commit)
      from  cf8bcfa094cca9216fed143ade374544f88e08ab (commit)


- Log -----------------------------------------------------------------
commit fd779c80a57f905b228e6972881368e5777cc562
Author: Colin Leroy <colin at colino.net>
Date:   Fri Jun 6 13:38:18 2014 +0200

    Coverity fixes

diff --git a/src/crash.c b/src/crash.c
index 5f3eaa9..d3c5022 100644
--- a/src/crash.c
+++ b/src/crash.c
@@ -333,7 +333,10 @@ static void crash_debug(unsigned long crash_pid,
 	int choutput[2];
 	pid_t pid;
 
-	pipe(choutput);
+	if (pipe(choutput) == -1) {
+		g_print("can't pipe - error %s", errno);
+		return;
+	}
 
 	if (0 == (pid = fork())) {
 		char *argp[10];
diff --git a/src/matcher.c b/src/matcher.c
index 8c1fd11..4382c59 100644
--- a/src/matcher.c
+++ b/src/matcher.c
@@ -1531,7 +1531,7 @@ static gboolean matcherlist_match_binary_content(MatcherList *matchers, MimeInfo
 	gchar buf[BUFFSIZE];
 	GSList *l;
 
-	if (partinfo->type == MIMETYPE_TEXT)
+	if (!partinfo || partinfo->type == MIMETYPE_TEXT)
 		return FALSE;
 	else
 		outfp = procmime_get_binary_content(partinfo);
@@ -1551,9 +1551,8 @@ static gboolean matcherlist_match_binary_content(MatcherList *matchers, MimeInfo
 			/* Don't scan non-text parts when looking in body, only
 			 * when looking in whole message
 			 */
-			if (partinfo && partinfo->type != MIMETYPE_TEXT &&
-			(matcher->criteria == MATCHCRITERIA_NOT_BODY_PART ||
-			matcher->criteria == MATCHCRITERIA_BODY_PART))
+			if (matcher->criteria == MATCHCRITERIA_NOT_BODY_PART ||
+			    matcher->criteria == MATCHCRITERIA_BODY_PART)
 				continue;
 
 			/* if the criteria is ~body_part or ~message, ZERO lines
diff --git a/src/matcher_parser_lex.l b/src/matcher_parser_lex.l
index bf36c58..209e503 100644
--- a/src/matcher_parser_lex.l
+++ b/src/matcher_parser_lex.l
@@ -90,7 +90,7 @@ void matcher_parser_init(void)
 		if (!g_utf8_validate(string_buf, -1, NULL)) {
 			gchar *tmp = conv_codeset_strdup(string_buf, conv_get_locale_charset_str(), CS_INTERNAL);
 			if (tmp) {
-				strcpy(string_buf, tmp);
+				g_strlcpy(string_buf, tmp, sizeof(string_buf));
 				g_free(tmp);
 			}
 		}
diff --git a/src/mbox.c b/src/mbox.c
index 04f5108..6ef1cad 100644
--- a/src/mbox.c
+++ b/src/mbox.c
@@ -380,6 +380,7 @@ gint lock_mbox(const gchar *base, LockType type)
 #if HAVE_FCNTL_H && !defined(G_OS_WIN32)
 		if (fcntl(lockfd, F_SETLK, &fl) == -1) {
 			g_warning("can't fnctl %s (%s)", base, strerror(errno));
+			close(lockfd);
 			return -1;
 		} else {
 			fcntled = TRUE;
diff --git a/src/messageview.c b/src/messageview.c
index 3acacd2..6618c8b 100644
--- a/src/messageview.c
+++ b/src/messageview.c
@@ -836,7 +836,7 @@ static gint disposition_notification_send(MsgInfo *msginfo)
 		ok = strcasecmp(to_addr, buf);
 		g_free(to_addr);
 	} else {
-		strncpy(buf, _("<No Return-Path found>"), 
+		g_strlcpy(buf, _("<No Return-Path found>"), 
 				sizeof(buf));
 	}
 	
@@ -1276,7 +1276,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
 {
 	gchar *text = NULL;
 	gchar *file;
-	MimeInfo *mimeinfo, *encinfo, *brokeninfo, *root;
+	MimeInfo *mimeinfo, *encinfo, *root;
 	gchar *subject = NULL;
 	cm_return_val_if_fail(msginfo != NULL, -1);
 
@@ -1431,7 +1431,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
 		return_receipt_show(messageview->noticeview, 
 				    messageview->msginfo);
 
-	if ((brokeninfo = find_broken_part(mimeinfo)) != NULL) {
+	if (find_broken_part(mimeinfo) != NULL) {
 		noticeview_set_icon(messageview->noticeview,
 				    STOCK_PIXMAP_NOTICE_WARN);
 		if (!noticeview_is_visible(messageview->noticeview)) {
diff --git a/src/mh.c b/src/mh.c
index 5b3bf72..e7b9888 100644
--- a/src/mh.c
+++ b/src/mh.c
@@ -859,8 +859,8 @@ static gchar *mh_item_get_path(Folder *folder, FolderItem *item)
 	if (!is_dir_exist(real_path) && is_dir_exist(path)) {
 		/* mmh, older version did put utf8 filenames instead of
 		 * the correct encoding */
-		g_rename(path, real_path);
-		folder_item_scan(item);
+		if (g_rename(path, real_path) == 0)
+			folder_item_scan(item);
 	}
 
 	g_free(path);
@@ -1354,8 +1354,10 @@ static void mh_write_sequences(FolderItem *item, gboolean remove_unseen)
 		if (fclose(mh_sequences_new_fp) == EOF)
 			err = TRUE;
 
-		if (!err)
-			g_rename(mh_sequences_new, mh_sequences_old);
+		if (!err) {
+			if (g_rename(mh_sequences_new, mh_sequences_old) < 0)
+				FILE_OP_ERROR(mh_sequences_new, "rename");
+		}
 		g_free(sequence);
 		procmsg_msg_list_free(msglist);
 	}
diff --git a/src/mimeview.c b/src/mimeview.c
index 61dd53e..8b20d5c 100644
--- a/src/mimeview.c
+++ b/src/mimeview.c
@@ -1696,21 +1696,22 @@ static void mimeview_drag_data_get(GtkWidget	    *widget,
 		FILE *fp;
 
 		fp = g_fopen(partinfo->data.filename, "rb");
-		fseek(fp, partinfo->offset, SEEK_SET);
-		headers = procheader_get_header_array_asis(fp);
-		if (headers) {
-			gint i;
-			for (i = 0; i < headers->len; i++) {
-				Header *header = g_ptr_array_index(headers, i);
-				if (procheader_headername_equal(header->name, "Subject")) {
-					unfold_line(header->body);
-					name = g_strconcat(header->body, ".txt", NULL);
-					subst_for_filename(name);
+		if (fp != NULL && fseek(fp, partinfo->offset, SEEK_SET) == 0) {
+			headers = procheader_get_header_array_asis(fp);
+			if (headers) {
+				gint i;
+				for (i = 0; i < headers->len; i++) {
+					Header *header = g_ptr_array_index(headers, i);
+					if (procheader_headername_equal(header->name, "Subject")) {
+						unfold_line(header->body);
+						name = g_strconcat(header->body, ".txt", NULL);
+						subst_for_filename(name);
+					}
 				}
+				procheader_header_array_destroy(headers);
 			}
-			procheader_header_array_destroy(headers);
+			fclose(fp);
 		}
-		fclose(fp);
 		if (name)
 			filename = g_path_get_basename(name);
 		g_free(name);
diff --git a/src/msgcache.c b/src/msgcache.c
index 9524026..cb2afcc 100644
--- a/src/msgcache.c
+++ b/src/msgcache.c
@@ -714,12 +714,6 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
 			if(msginfo->msgid)
 				g_hash_table_insert(cache->msgid_table, msginfo->msgid, msginfo);
 		}
-
-#ifdef G_OS_WIN32
-		UnmapViewOfFile((void*) cache_data);
-#else
-		munmap(cache_data, map_len);
-#endif
 	} else {
 		while (fread(&num, sizeof(num), 1, fp) == 1) {
 			if (swapping)
@@ -772,8 +766,14 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
 		}
 	}
 bail_err:
+	if (cache_data != NULL && cache_data != MAP_FAILED) {
+#ifdef G_OS_WIN32
+		UnmapViewOfFile((void*) cache_data);
+#else
+		munmap(cache_data, map_len);
+#endif
+	}
 	fclose(fp);
-
 	if (conv != NULL) {
 		if (conv->free != NULL)
 			conv->free(conv);
@@ -859,11 +859,6 @@ void msgcache_read_mark(MsgCache *cache, const gchar *mark_file)
 				msginfo->flags.perm_flags = perm_flags;
 			}
 		}
-#ifdef G_OS_WIN32
-		UnmapViewOfFile((void*) cache_data);
-#else
-		munmap(cache_data, map_len);
-#endif
 	} else {
 		while (fread(&num, sizeof(num), 1, fp) == 1) {
 			if (swapping)
@@ -881,6 +876,13 @@ void msgcache_read_mark(MsgCache *cache, const gchar *mark_file)
 		}	
 	}
 bail_err:
+	if (cache_data != NULL && cache_data != MAP_FAILED) {
+#ifdef G_OS_WIN32
+		UnmapViewOfFile((void*) cache_data);
+#else
+		munmap(cache_data, map_len);
+#endif
+	}
 	fclose(fp);
 	if (error) {
 		debug_print("error reading cache mark from %s\n", mark_file);
@@ -961,11 +963,6 @@ void msgcache_read_tags(MsgCache *cache, const gchar *tags_file)
 				msginfo->tags = g_slist_reverse(msginfo->tags);
 			}
 		}
-#ifdef G_OS_WIN32
-		UnmapViewOfFile((void*) cache_data);
-#else
-		munmap(cache_data, map_len);
-#endif
 	} else {
 		while (fread(&num, sizeof(num), 1, fp) == 1) {
 			gint id = -1;
@@ -991,6 +988,13 @@ void msgcache_read_tags(MsgCache *cache, const gchar *tags_file)
 		}
 	}
 bail_err:
+	if (cache_data != NULL && cache_data != MAP_FAILED) {
+#ifdef G_OS_WIN32
+		UnmapViewOfFile((void*) cache_data);
+#else
+		munmap(cache_data, map_len);
+#endif
+	}
 	fclose(fp);
 	if (error) {
 		debug_print("error reading cache tags from %s\n", tags_file);
@@ -1136,7 +1140,8 @@ gint msgcache_write(const gchar *cache_file, const gchar *mark_file, const gchar
 
 	if (w_err != 0) {
 		g_warning("failed to write charset\n");
-		fclose(write_fps.cache_fp);
+		if (write_fps.cache_fp)
+			fclose(write_fps.cache_fp);
 		claws_unlink(new_cache);
 		g_free(new_cache);
 		g_free(new_mark);
@@ -1148,7 +1153,8 @@ gint msgcache_write(const gchar *cache_file, const gchar *mark_file, const gchar
 		write_fps.mark_fp = msgcache_open_data_file(new_mark, MARK_VERSION,
 			DATA_WRITE, NULL, 0);
 		if (write_fps.mark_fp == NULL) {
-			fclose(write_fps.cache_fp);
+			if (write_fps.cache_fp)
+				fclose(write_fps.cache_fp);
 			claws_unlink(new_cache);
 			g_free(new_cache);
 			g_free(new_mark);
@@ -1163,8 +1169,10 @@ gint msgcache_write(const gchar *cache_file, const gchar *mark_file, const gchar
 		write_fps.tags_fp = msgcache_open_data_file(new_tags, TAGS_VERSION,
 			DATA_WRITE, NULL, 0);
 		if (write_fps.tags_fp == NULL) {
-			fclose(write_fps.cache_fp);
-			fclose(write_fps.mark_fp);
+			if (write_fps.cache_fp)
+				fclose(write_fps.cache_fp);
+			if (write_fps.mark_fp)
+				fclose(write_fps.mark_fp);
 			claws_unlink(new_cache);
 			claws_unlink(new_mark);
 			g_free(new_cache);
diff --git a/src/news.c b/src/news.c
index 6d91b4a..d678e8f 100644
--- a/src/news.c
+++ b/src/news.c
@@ -354,8 +354,7 @@ static Session *news_session_new(Folder *folder, const gchar *server, gushort po
 	
 	if (r != NEWSNNTP_NO_ERROR) {
 		log_error(LOG_PROTOCOL, _("Error logging in to %s:%d...\n"), server, port);
-		if (session != NULL)
-			session_destroy(SESSION(session));
+		session_destroy(SESSION(session));
 		return NULL;
 	}
 
@@ -763,7 +762,7 @@ void news_remove_group_list_cache(Folder *folder)
 	g_free(path);
 
 	if (is_file_exist(filename)) {
-		if (remove(filename) < 0)
+		if (claws_unlink(filename) < 0)
 			FILE_OP_ERROR(filename, "remove");
 	}
 	g_free(filename);
@@ -977,7 +976,7 @@ gint news_cancel_article(Folder * folder, MsgInfo * msginfo)
 	}
 
 	news_post(folder, tmp);
-	remove(tmp);
+	claws_unlink(tmp);
 
 	g_free(tmp);
 
@@ -1295,8 +1294,6 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu
 	NewsSession *session;
 	GSList *elem, *msginfo_list = NULL, *tmp_msgnum_list, *tmp_msginfo_list;
 	guint first, last, next;
-/*	guint tofetch, fetched;
-*/
 	
 	cm_return_val_if_fail(folder != NULL, NULL);
 	cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL);
@@ -1310,9 +1307,6 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu
 	tmp_msgnum_list = g_slist_sort(tmp_msgnum_list, g_int_compare);
 
 	progressindicator_start(PROGRESS_TYPE_NETWORK);
-/*	tofetch = g_slist_length(tmp_msgnum_list);
-	fetched = 0;
-*/
 
 	first = GPOINTER_TO_INT(tmp_msgnum_list->data);
 	last = first;
@@ -1322,13 +1316,8 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu
 	for(elem = g_slist_next(tmp_msgnum_list); elem != NULL; elem = g_slist_next(elem)) {
 		next = GPOINTER_TO_INT(elem->data);
 		if(next != (last + 1)) {
-/*			session->fetch_base_percentage = ((gfloat) fetched) / ((gfloat) tofetch);
-			session->fetch_total_percentage = ((gfloat) (last - first + 1)) / ((gfloat) tofetch);
-*/
 			tmp_msginfo_list = news_get_msginfos_for_range(session, item, first, last);
 			msginfo_list = g_slist_concat(msginfo_list, tmp_msginfo_list);
-/*			fetched = last - first + 1;
-*/
 			first = next;
 		}
 		last = next;
@@ -1336,9 +1325,6 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu
 	
 	news_folder_unlock(NEWS_FOLDER(item->folder));
 	
-/*	session->fetch_base_percentage = ((gfloat) fetched) / ((gfloat) tofetch);
-	session->fetch_total_percentage = ((gfloat) (last - first + 1)) / ((gfloat) tofetch);
-*/
 	tmp_msginfo_list = news_get_msginfos_for_range(session, item, first, last);
 	msginfo_list = g_slist_concat(msginfo_list, tmp_msginfo_list);
 
diff --git a/src/partial_download.c b/src/partial_download.c
index 6ef11b9..d7b0ce6 100644
--- a/src/partial_download.c
+++ b/src/partial_download.c
@@ -316,8 +316,7 @@ static int partial_uidl_mark_mail(MsgInfo *msginfo, int download)
 	}
 
 	fclose(fp);
-	claws_unlink(filename);
-	g_rename(pathnew, filename);
+	rename_force(pathnew, filename);
 	g_free(pathnew);
 	msginfo->planned_download = download;
 	msgcache_update_msg(msginfo->folder->cache, msginfo);

-----------------------------------------------------------------------

Summary of changes:
 src/crash.c              |    5 ++++-
 src/matcher.c            |    7 +++----
 src/matcher_parser_lex.l |    2 +-
 src/mbox.c               |    1 +
 src/messageview.c        |    6 +++---
 src/mh.c                 |   10 ++++++----
 src/mimeview.c           |   25 ++++++++++++-----------
 src/msgcache.c           |   50 +++++++++++++++++++++++++++-------------------
 src/news.c               |   20 +++----------------
 src/partial_download.c   |    3 +--
 10 files changed, 64 insertions(+), 65 deletions(-)


hooks/post-receive
-- 
Claws Mail


More information about the Commits mailing list