Browse code

another error path leak

Tomasz Kojm authored on 2009/10/28 05:05:13
Showing 1 changed files
... ...
@@ -993,15 +993,23 @@ static int sigtool_scandir (const char *dirname, int hex_output)
993 993
 
994 994
 				/* generate the temporary directory */
995 995
 				dir = cli_gentemp (tmpdir);
996
+				if(!dir) {
997
+				    printf("cli_gentemp() failed\n");
998
+				    closedir (dd);
999
+				    return -1;
1000
+				}
1001
+
996 1002
 				if (mkdir (dir, 0700)) {
997 1003
 				    printf ("Can't create temporary directory %s\n", dir);
998 1004
 				    closedir (dd);
1005
+				    free(dir);
999 1006
 				    return CL_ETMPDIR;
1000 1007
 				}
1001 1008
 
1002 1009
 				if ((desc = open (fname, O_RDONLY|O_BINARY)) == -1) {
1003 1010
 				    printf ("Can't open file %s\n", fname);
1004 1011
 				    closedir (dd);
1012
+				    free(dir);
1005 1013
 				    return 1;
1006 1014
 				}
1007 1015
 
... ...
@@ -1010,6 +1018,7 @@ static int sigtool_scandir (const char *dirname, int hex_output)
1010 1010
 				    printf("malloc failed\n");
1011 1011
 				    closedir (dd);
1012 1012
 				    close(desc);
1013
+				    free(dir);
1013 1014
 				    return 1;
1014 1015
 				}
1015 1016
 				*ctx.fmap = fmap(desc, 0, 0);
... ...
@@ -1017,6 +1026,7 @@ static int sigtool_scandir (const char *dirname, int hex_output)
1017 1017
 				    printf("fmap failed\n");
1018 1018
 				    closedir (dd);
1019 1019
 				    close(desc);
1020
+				    free(dir);
1020 1021
 				    return 1;
1021 1022
 				}
1022 1023
 				if ((ret = cli_ole2_extract (dir, &ctx, &vba))) {