changeset 9001:5302ce189a70 HEAD

safe_mkstemp()'s mode parameter didn't override umask as it was supposed to.
author Timo Sirainen <tss@iki.fi>
date Fri, 01 May 2009 12:30:07 -0400
parents b02c642b4e51
children 89b825b20f76
files src/lib/safe-mkstemp.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/safe-mkstemp.c	Thu Apr 30 20:22:49 2009 -0400
+++ b/src/lib/safe-mkstemp.c	Fri May 01 12:30:07 2009 -0400
@@ -16,6 +16,7 @@
 	size_t prefix_len;
 	struct stat st;
 	unsigned char randbuf[8];
+	mode_t old_umask;
 	int fd;
 
 	prefix_len = str_len(prefix);
@@ -32,7 +33,9 @@
 			return -1;
 		}
 
-		fd = open(str_c(prefix), O_RDWR | O_EXCL | O_CREAT, mode);
+		old_umask = umask(0666 ^ mode);
+		fd = open(str_c(prefix), O_RDWR | O_EXCL | O_CREAT, 0666);
+		umask(old_umask);
 		if (fd != -1)
 			break;