... | ... |
@@ -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))) { |