safe-mkstemp.c revision 033e315cc9396332a09b98bee7824b8e6641c2fc
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen/* Copyright (c) 2007-2016 Dovecot authors, see the included COPYING file */
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainensafe_mkstemp_full(string_t *prefix, mode_t mode, uid_t uid, gid_t gid,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen i_error("stat(%s) failed: %m", str_c(prefix));
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen fd = open(str_c(prefix), O_RDWR | O_EXCL | O_CREAT, 0666);
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen i_error("open(%s) failed: %m", str_c(prefix));
1ddec6312bc6882aeb17d4d46d19cbca1723b68bTimo Sirainenint safe_mkstemp(string_t *prefix, mode_t mode, uid_t uid, gid_t gid)
1ddec6312bc6882aeb17d4d46d19cbca1723b68bTimo Sirainen return safe_mkstemp_full(prefix, mode, uid, gid, NULL);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenint safe_mkstemp_group(string_t *prefix, mode_t mode,
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainen return safe_mkstemp_full(prefix, mode, (uid_t)-1, gid, gid_origin);
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainenint safe_mkstemp_hostpid(string_t *prefix, mode_t mode, uid_t uid, gid_t gid)
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainen str_printfa(prefix, "%s.%s.", my_hostname, my_pid);
0469ed17dafcc56589ce00960a23f4f06817dfb5Timo Sirainen if ((fd = safe_mkstemp(prefix, mode, uid, gid)) == -1)
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenint safe_mkstemp_hostpid_group(string_t *prefix, mode_t mode,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen str_printfa(prefix, "%s.%s.", my_hostname, my_pid);
c7480644202e5451fbed448508ea29a25cffc99cTimo Sirainen if ((fd = safe_mkstemp_group(prefix, mode, gid, gid_origin)) == -1)