summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2015-07-26 19:14:47 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2015-07-26 19:14:47 +0000
commit845feaa5268e185bfbba5d755016d38ede81f89d (patch)
tree3bd61e50e6e9eb082841ba4230f744878b893c65
parentfcbf07a3d7e798c8ba95cbed807e5f916e0e8654 (diff)
tweak config checking slightly
-rw-r--r--usr.bin/doas/doas.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/usr.bin/doas/doas.c b/usr.bin/doas/doas.c
index 01895bc6108..310d8799b89 100644
--- a/usr.bin/doas/doas.c
+++ b/usr.bin/doas/doas.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: doas.c,v 1.23 2015/07/26 19:08:17 zhuk Exp $ */
+/* $OpenBSD: doas.c,v 1.24 2015/07/26 19:14:46 tedu Exp $ */
/*
* Copyright (c) 2015 Ted Unangst <tedu@openbsd.org>
*
@@ -284,7 +284,8 @@ fail(void)
static int
checkconfig(const char *confpath, int argc, char **argv,
- uid_t uid, gid_t *groups, int ngroups, uid_t target) {
+ uid_t uid, gid_t *groups, int ngroups, uid_t target)
+{
struct rule *rule;
setresuid(uid, uid, uid);
@@ -295,10 +296,10 @@ checkconfig(const char *confpath, int argc, char **argv,
if (permit(uid, groups, ngroups, &rule, target, argv[0],
(const char **)argv + 1)) {
printf("permit%s\n", (rule->options & NOPASS) ? " nopass" : "");
- return 1;
+ exit(0);
} else {
printf("deny\n");
- return 0;
+ exit(1);
}
}
@@ -369,9 +370,12 @@ main(int argc, char **argv, char **envp)
argc = 1;
}
- if (confpath)
- exit(!checkconfig(confpath, argc, argv, uid, groups, ngroups,
- target));
+ if (confpath) {
+ checkconfig(confpath, argc, argv, uid, groups, ngroups,
+ target);
+ exit(1); /* fail safe */
+ }
+
parseconfig("/etc/doas.conf", 1);
/* cmdline is used only for logging, no need to abort on truncate */