summaryrefslogtreecommitdiffstats
path: root/usr.sbin/smtpd/makemap.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/smtpd/makemap.c')
-rw-r--r--usr.sbin/smtpd/makemap.c9
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) {