From 75a0be1f65f400489cc09b20a92a4569ad2b0782 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 18 Apr 2011 21:22:14 -0400 Subject: [PATCH] avoid fd leak if opendir is cancelled when calloc has failed --- src/dirent/opendir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dirent/opendir.c b/src/dirent/opendir.c index cefe6ce7..928742c0 100644 --- a/src/dirent/opendir.c +++ b/src/dirent/opendir.c @@ -7,6 +7,7 @@ #include #include #include "__dirent.h" +#include "syscall.h" DIR *opendir(const char *name) { @@ -17,7 +18,7 @@ DIR *opendir(const char *name) return 0; fcntl(fd, F_SETFD, FD_CLOEXEC); if (!(dir = calloc(1, sizeof *dir))) { - close(fd); + __syscall(SYS_close, fd); return 0; } dir->fd = fd; -- 2.25.1