From d030418896e0f74ed65bb69c2a0c058a3c6288f1 Mon Sep 17 00:00:00 2001 From: Tharre Date: Fri, 28 Oct 2016 00:02:22 +0200 Subject: Fix reference to free'd memory in handle_c() --- src/build.c | 5 +++-- 1 file 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: -- cgit v1.2.3-70-g09d2