compile_info() can leak an open file descriptor write_all() fails.  This
corrects it.

Found by Coverity.

Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
---
 tools/depends.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/depends.c b/tools/depends.c
index e6a79d7..36b5809 100644
--- a/tools/depends.c
+++ b/tools/depends.c
@@ -54,8 +54,10 @@ char *compile_info(const void *ctx, const char *dir)
        fd = open(info_c_file, O_WRONLY|O_CREAT|O_EXCL, 0600);
        if (fd < 0)
                return NULL;
-       if (!write_all(fd, info, tal_count(info)-1))
+       if (!write_all(fd, info, tal_count(info)-1)) {
+               close(fd);
                return NULL;
+       }
 
        if (close(fd) != 0)
                return NULL;
-- 
2.9.3

_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan

Reply via email to