summaryrefslogtreecommitdiff
path: root/libc/stdlib/mkostemp.c
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2014-10-27 16:13:34 -0400
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2014-12-15 17:53:06 +0100
commit638a23483b40c5b606ee323e6612e7e454e5154b (patch)
treedbc20f09001718352295af64091bbe0682a1f3ca /libc/stdlib/mkostemp.c
parentbff3a664e6a2a367bf159c3089df1fe6f093bfb1 (diff)
mkostemp: fix implementation
mkostemp(char *template, int flags) generates a unique temporary filename from a template. The flags parameter accepts three of the same flags as open(2): O_APPEND, O_CLOEXEC, and O_SYNC. The current implementation of mkostemp(3) does not respect the flags and in fact confuses the flags with the file mode which should always be S_IRUSR | S_IWUSR. This patch corrects this issue. Signed-off-by: Anthony G. Basile <blueness@gentoo.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/stdlib/mkostemp.c')
-rw-r--r--libc/stdlib/mkostemp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libc/stdlib/mkostemp.c b/libc/stdlib/mkostemp.c
index 0369235dc..912be30a6 100644
--- a/libc/stdlib/mkostemp.c
+++ b/libc/stdlib/mkostemp.c
@@ -17,6 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <fcntl.h>
#include "../misc/internals/tempname.h"
/* Generate a unique temporary file name from TEMPLATE.
@@ -26,5 +27,6 @@
int
mkostemp (char *template, int flags)
{
- return __gen_tempname (template, __GT_FILE, flags);
+ flags -= flags & O_ACCMODE; /* Remove O_RDONLY, O_WRONLY, and O_RDWR. */
+ return __gen_tempname (template, __GT_FILE, flags, S_IRUSR | S_IWUSR);
}