summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-18 21:22:14 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-18 21:22:14 -0400
commit75a0be1f65f400489cc09b20a92a4569ad2b0782 (patch)
treea44c8e4d0e8250c4edd7d41e3dbccca9f944339d
parentdf9e11bb063446df760e8f7c62ea5eb6ba3faa34 (diff)
downloadmusl-75a0be1f65f400489cc09b20a92a4569ad2b0782.tar.gz
avoid fd leak if opendir is cancelled when calloc has failed
-rw-r--r--src/dirent/opendir.c3
1 files changed, 2 insertions, 1 deletions
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 <unistd.h>
#include <limits.h>
#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;