libpurple/plugins/log_reader.c

branch
soc.2013.gobjectification.plugins
changeset 37145
8826f95514fd
parent 37144
8b63b9948107
parent 36031
9eb8f52893d0
child 37205
72893d196f1a
--- a/libpurple/plugins/log_reader.c	Sat May 10 03:56:36 2014 +0530
+++ b/libpurple/plugins/log_reader.c	Thu May 15 10:16:32 2014 +0530
@@ -1409,12 +1409,16 @@
 
 	purple_debug_info("Trillian log read", "Reading %s\n", data->path);
 
-	read = g_malloc(data->length + 2);
-
 	file = g_fopen(data->path, "rb");
 	g_return_val_if_fail(file != NULL, g_strdup(""));
-	if (fseek(file, data->offset, SEEK_SET) != 0)
+
+	read = g_malloc(data->length + 2);
+
+	if (fseek(file, data->offset, SEEK_SET) != 0) {
+		fclose(file);
+		g_free(read);
 		g_return_val_if_reached(g_strdup(""));
+	}
 	data->length = fread(read, 1, data->length, file);
 	fclose(file);
 
@@ -1831,8 +1835,7 @@
 				} else {
 					while (*c)
 						c++;
-					if (c)
-						c--;
+					c--;
 					c = g_strrstr(c, "(");
 				}
 
@@ -1935,8 +1938,11 @@
 
 	contents = g_malloc(data->length + 2);
 
-	if (fseek(file, data->offset, SEEK_SET) != 0)
+	if (fseek(file, data->offset, SEEK_SET) != 0) {
+		fclose(file);
+		g_free(contents);
 		g_return_val_if_reached(g_strdup(""));
+	}
 	data->length = fread(contents, 1, data->length, file);
 	fclose(file);
 
@@ -1979,6 +1985,8 @@
 
 			/* find EOL */
 			c = strchr(c, '\n');
+			if (!c)
+				break;
 
 			/* XXX: Do we need buddy_name when we have buddy->alias? */
 			buddy_name = ++c;
@@ -2316,13 +2324,16 @@
 	g_return_val_if_fail(data->path != NULL, g_strdup(""));
 	g_return_val_if_fail(data->length > 0, g_strdup(""));
 
-	contents = g_malloc(data->length + 2);
-
 	file = g_fopen(data->path, "rb");
 	g_return_val_if_fail(file != NULL, g_strdup(""));
 
-	if (fseek(file, data->offset, SEEK_SET) != 0)
+	contents = g_malloc(data->length + 2);
+
+	if (fseek(file, data->offset, SEEK_SET) != 0) {
+		fclose(file);
+		free(contents);
 		g_return_val_if_reached(g_strdup(""));
+	}
 	data->length = fread(contents, 1, data->length, file);
 	fclose(file);
 

mercurial