Browse code

error path dbl free in cdiff.c

aCaB authored on 2010/12/18 01:12:31
Showing 2 changed files
... ...
@@ -1,3 +1,8 @@
1
+Fri Dec 17 17:10:46 CET 2010 (acab)
2
+-----------------------------------
3
+ * shared/cdiff.c: Fix error path double free - missed in 4bc4581d
4
+		   thanks Michael Tautschnig <mt*debian.org>
5
+
1 6
 Fri Dec 17 14:21:21 CET 2010 (acab)
2 7
 -----------------------------------
3 8
  * clamav-milter/whitelist.c, clamscan/manager.c, libclamav/sis.c:
... ...
@@ -995,8 +995,16 @@ int cdiff_apply(int fd, unsigned short mode)
995 995
 			logg("!cdiff_apply: Can't resize line buffer to %d bytes\n", line_size);
996 996
 			cdiff_ctx_free(&ctx);
997 997
 			fclose(fh);
998
-			free(line);
999
-			free(lbuf);
998
+			if(!r1 && !r2) {
999
+			    free(line);
1000
+			    free(lbuf);
1001
+			} else if(!r1) {
1002
+			    free(line);
1003
+			    free(r2);
1004
+			} else {
1005
+			    free(r1);
1006
+			    free(lbuf);
1007
+			}
1000 1008
 			return -1;
1001 1009
 		    }
1002 1010
 		    line = r1;