diff options
Diffstat (limited to 'usr.sbin/smtpd/makemap.c')
| -rw-r--r-- | usr.sbin/smtpd/makemap.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/smtpd/makemap.c b/usr.sbin/smtpd/makemap.c index c8382f7593c..a624185a1d6 100644 --- a/usr.sbin/smtpd/makemap.c +++ b/usr.sbin/smtpd/makemap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: makemap.c,v 1.42 2013/01/26 09:37:23 gilles Exp $ */ +/* $OpenBSD: makemap.c,v 1.43 2013/01/31 18:34:43 eric Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -90,8 +90,8 @@ main(int argc, char *argv[]) char *conf; int ch; DBTYPE dbtype = DB_HASH; - char *execname; char *p; + mode_t omode; log_init(1); @@ -101,7 +101,6 @@ main(int argc, char *argv[]) opts = "ho:t:d:"; if (mode == P_NEWALIASES) opts = "f:h"; - execname = argv[0]; while ((ch = getopt(argc, argv, opts)) != -1) { switch (ch) { @@ -153,7 +152,7 @@ main(int argc, char *argv[]) errx(1, "database name too long"); } - execlp(execname, execname, "-d", argv[0], "-o", dbname, "-", + execlp("makemap", "makemap", "-d", argv[0], "-o", dbname, "-", NULL); err(1, "execlp"); } @@ -180,8 +179,10 @@ main(int argc, char *argv[]) if (! bsnprintf(dbname, sizeof(dbname), "%s.XXXXXXXXXXX", oflag)) errx(1, "path too long"); + omode = umask(7077); if (mkstemp(dbname) == -1) err(1, "mkstemp"); + umask(omode); db = dbopen(dbname, O_EXLOCK|O_RDWR|O_SYNC, 0644, dbtype, NULL); if (db == NULL) { |
