summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--plugins/checksum/checksum.c1
-rw-r--r--plugins/python/python.c1
-rw-r--r--plugins/sysinfo/match.c3
-rw-r--r--plugins/sysinfo/parse.c9
-rw-r--r--src/common/dcc.c3
-rw-r--r--src/common/outbound.c4
-rw-r--r--src/common/server.c1
-rw-r--r--src/common/util.c11
-rw-r--r--src/fe-gtk/fkeys.c1
-rw-r--r--src/fe-gtk/maingui.c3
-rw-r--r--src/fe-text/fe-text.c2
11 files changed, 29 insertions, 10 deletions
diff --git a/plugins/checksum/checksum.c b/plugins/checksum/checksum.c
index 3cceeb5f..0524302d 100644
--- a/plugins/checksum/checksum.c
+++ b/plugins/checksum/checksum.c
@@ -105,6 +105,7 @@ sha256_file (char *path, char outputBuffer[65])
 
 	if (!buffer)
 	{
+		fclose (file);
 		return ENOMEM;
 	}
 
diff --git a/plugins/python/python.c b/plugins/python/python.c
index 0ff669b6..2e298c35 100644
--- a/plugins/python/python.c
+++ b/plugins/python/python.c
@@ -2137,6 +2137,7 @@ Command_PyReload(char *name)
 		char *filename = strdup(plugin->filename);
 		Command_PyUnload(filename);
 		Command_PyLoad(filename);
+		/* cppcheck-suppress deallocDealloc */
 		g_free(filename);
 	}
 }
diff --git a/plugins/sysinfo/match.c b/plugins/sysinfo/match.c
index e40ac428..7d719738 100644
--- a/plugins/sysinfo/match.c
+++ b/plugins/sysinfo/match.c
@@ -37,7 +37,6 @@ char *pretty_freespace(const char *desc, unsigned long long *free_k, unsigned lo
 	free_space = *free_k;
 	total_space = *total_k;
         result = malloc(bsize * sizeof(char));
-        bytesize = malloc(3 * sizeof(char));
 	const char *quantities = "KB\0MB\0GB\0TB\0PB\0EB\0ZB\0YB\0";
 	int i=0;
 	if (total_space == 0)
@@ -45,6 +44,7 @@ char *pretty_freespace(const char *desc, unsigned long long *free_k, unsigned lo
 		snprintf(result, bsize, "%s: none", desc);
 		return result;
 	}
+        bytesize = malloc(3 * sizeof(char));
 	while (total_space > 1023 && i <= 14)
 	{
 		i=i+3;
@@ -61,6 +61,7 @@ char *pretty_freespace(const char *desc, unsigned long long *free_k, unsigned lo
 	else
 		snprintf(result, bsize, "%s: %.1f%s/%.1f%s free",
 		desc, free_space, bytesize, total_space, bytesize);
+	free (bytesize);
         return result;
 }
 
diff --git a/plugins/sysinfo/parse.c b/plugins/sysinfo/parse.c
index fbca6213..c1b478f8 100644
--- a/plugins/sysinfo/parse.c
+++ b/plugins/sysinfo/parse.c
@@ -394,6 +394,7 @@ int xs_parse_distro(char *name)
 		char keywords[bsize];
 		while(fgets(buffer, bsize, fp) != NULL)
 			find_match_char(buffer, "ACCEPT_KEYWORDS", keywords);
+		/* cppcheck-suppress uninitvar */
 		if (strstr(keywords, "\"") == NULL)
 			snprintf(buffer, bsize, "Gentoo Linux (stable)");
 		else
@@ -440,16 +441,14 @@ int xs_parse_hwmon_chip(char *chip)
 
 int xs_parse_hwmon_temp(char *temp, unsigned int *sensor)
 {
-	unsigned int *value;
+	unsigned int value;
 	float celsius;
-        value = malloc(sizeof(int));
 
 	if (!hwmon_chip_present())
 		return 1;
 	else
-		get_hwmon_temp(value, sensor);
-		celsius = (float)*value;
+		get_hwmon_temp(&value, sensor);
+		celsius = (float)value;
 		snprintf(temp, bsize, "%.1fC", celsius/1000.0);
-		free(value);
 	return 0;
 }
diff --git a/src/common/dcc.c b/src/common/dcc.c
index d404b617..9014296e 100644
--- a/src/common/dcc.c
+++ b/src/common/dcc.c
@@ -322,6 +322,7 @@ dcc_lookup_proxy (char *host, struct sockaddr_in *addr)
 		memcpy (&addr->sin_addr, h->h_addr, 4);
 		memcpy (&cache_addr, h->h_addr, 4);
 		cache_host = strdup (host);
+		/* cppcheck-suppress memleak */
 		return TRUE;
 	}
 
@@ -788,6 +789,7 @@ dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 			dcc_send_ack (dcc);
 			dcc_close (dcc, STAT_DONE, FALSE);
 			dcc_calc_average_cps (dcc);	/* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */
+			/* cppcheck-suppress deallocuse */
 			sprintf (buf, "%d", dcc->cps);
 			EMIT_SIGNAL (XP_TE_DCCRECVCOMP, dcc->serv->front_session,
 							 dcc->file, dcc->destfile, dcc->nick, buf, 0);
@@ -1533,6 +1535,7 @@ dcc_handle_new_ack (struct DCC *dcc)
 		dcc->ack = dcc->size;	/* force 100% ack for >4 GB */
 		dcc_close (dcc, STAT_DONE, FALSE);
 		dcc_calc_average_cps (dcc);	/* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */
+		/* cppcheck-suppress deallocuse */
 		sprintf (buf, "%d", dcc->cps);
 		EMIT_SIGNAL (XP_TE_DCCSENDCOMP, dcc->serv->front_session,
 						 file_part (dcc->file), dcc->nick, buf, NULL, 0);
diff --git a/src/common/outbound.c b/src/common/outbound.c
index a8a65d6a..8241d78f 100644
--- a/src/common/outbound.c
+++ b/src/common/outbound.c
@@ -1866,7 +1866,6 @@ cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[])
 			/* not reached unless error */
 			/*printf("exec error\n");*/
 			fflush (stdout);
-			fflush (stdin);
 			_exit (0);
 		}
 		if (pid == -1)
@@ -1876,6 +1875,7 @@ cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[])
 			PrintText (sess, "Error in fork(2)\n");
 			close(fds[0]);
 			close(fds[1]);
+			free (s);
 		} else
 		{
 			/* Parent path */
@@ -3350,6 +3350,8 @@ static void
 url_join_only (server *serv, char *tbuf, char *channel)
 {
 	/* already connected, JOIN only. FIXME: support keys? */
+	if (channel == NULL)
+		return;
 	tbuf[0] = '#';
 	/* tbuf is 4kb */
 	safe_strcpy ((tbuf + 1), channel, 256);
diff --git a/src/common/server.c b/src/common/server.c
index 1fd04422..6ddaa18d 100644
--- a/src/common/server.c
+++ b/src/common/server.c
@@ -1678,6 +1678,7 @@ xit:
 #endif
 
 	return 0;
+	/* cppcheck-suppress memleak */
 }
 
 static void
diff --git a/src/common/util.c b/src/common/util.c
index 55cb530a..2319f75e 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -1319,8 +1319,17 @@ int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr) {
 	    if (*argv[argc]) {
 		buf++, argc++;
 		if (argc == argvAlloced) {
+		    char **temp;
 		    argvAlloced += POPT_ARGV_ARRAY_GROW_DELTA;
-		    argv = realloc(argv, sizeof(*argv) * argvAlloced);
+		    temp = realloc(argv, sizeof(*argv) * argvAlloced);
+		    if (temp)
+			argv = temp;
+		    else
+		    {
+			free(argv);
+			free(bufStart);
+			return 1;
+		    }
 		}
 		argv[argc] = buf;
 	    }
diff --git a/src/fe-gtk/fkeys.c b/src/fe-gtk/fkeys.c
index 99d244ea..3a937e1a 100644
--- a/src/fe-gtk/fkeys.c
+++ b/src/fe-gtk/fkeys.c
@@ -1153,6 +1153,7 @@ key_load_kbs (char *filename)
 						 get_xdir ());
 	fe_message (ibuf, FE_MSG_ERROR);
 	free (ibuf);
+	free (kb);
 	return 5;
 }
 
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index fee8f320..2dfb7b8d 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -1646,7 +1646,8 @@ mg_create_tabmenu (session *sess, GdkEventButton *event, chan *ch)
 								mg_destroy_tab_cb, ch);
 	if (sess && tabmenu_list)
 		menu_create (menu, tabmenu_list, sess->channel, FALSE);
-	menu_add_plugin_items (menu, "\x4$TAB", sess->channel);
+	if (sess)
+		menu_add_plugin_items (menu, "\x4$TAB", sess->channel);
 
 	if (event->window)
 		gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window));
diff --git a/src/fe-text/fe-text.c b/src/fe-text/fe-text.c
index bd9d2d1a..21db1bbd 100644
--- a/src/fe-text/fe-text.c
+++ b/src/fe-text/fe-text.c
@@ -116,7 +116,6 @@ fe_new_window (struct session *sess, int focus)
 #endif
 	"\n\n", 0);
 	fflush (stdout);
-	fflush (stdin);
 }
 
 static int
@@ -506,6 +505,7 @@ fe_args (int argc, char *argv[])
 			*sl = 0;
 			printf ("%s\\plugins\n", exe);
 		}
+		free (exe);
 #else
 		printf ("%s\n", HEXCHATLIBDIR"/plugins");
 #endif