aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2016-10-28 00:02:22 +0200
committerTharre <tharre3@gmail.com>2016-10-28 00:02:22 +0200
commitd030418896e0f74ed65bb69c2a0c058a3c6288f1 (patch)
tree89f4dbcf8d8795d975be2a698ffbbf0e89d6e076 /src
parent15465e8b518d9413c11dcdcad712a6a51b3ebde2 (diff)
downloadredo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.tar.gz
redo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.tar.xz
redo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.zip
Fix reference to free'd memory in handle_c()
Diffstat (limited to 'src')
-rw-r--r--src/build.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/build.c b/src/build.c
index be739c9..01f8314 100644
--- a/src/build.c
+++ b/src/build.c
@@ -555,13 +555,12 @@ static int handle_c(dep_info *dep) {
/* make sure all prereq dependencies are met */
char *prereq_path = concat(2, dep->path, ".prereq");
FILE *prereqfd = fopen(prereq_path, "rb");
- free(prereq_path);
if (!prereqfd) {
if (errno != ENOENT)
fatal("redo: failed to open %s", prereq_path);
/* no .prereq file exists; so we don't do anything */
- goto exit3;
+ goto exit4;
}
dsv_init(&ctx_prereq, 2);
@@ -590,6 +589,8 @@ static int handle_c(dep_info *dep) {
dsv_free(&ctx_prereq);
fclose(prereqfd);
+exit4:
+ free(prereq_path);
exit3:
fclose(targetfd);
exit2: