From 3008bb494a54d95ee92360a7dc6508dd7e7ca111 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 31 Dec 2007 12:54:47 +0000 Subject: [PATCH] move update_defaults() to parse.c --- defaults.c | 42 ------------------------------------------ parse.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- testsudoers.c | 7 +++++++ visudo.c | 8 ++++++++ 4 files changed, 60 insertions(+), 43 deletions(-) diff --git a/defaults.c b/defaults.c index a0d702ac1..a6a82d9f2 100644 --- a/defaults.c +++ b/defaults.c @@ -482,48 +482,6 @@ init_defaults() firsttime = 0; } -/* - * Update the defaults based on what was set by sudoers. - * If skip_cmnd is 1, skip DEFAULTS_CMND, if it is 0, skip all others. - * Returns TRUE on success and FALSE on failure. - */ -int -update_defaults(skip_cmnd) - int skip_cmnd; -{ - struct defaults *def; - - tq_foreach_fwd(&defaults, def) { - if (skip_cmnd == (def->type == DEFAULTS_CMND)) - continue; - switch (def->type) { - case DEFAULTS: - if (!set_default(def->var, def->val, def->op)) - return(FALSE); - case DEFAULTS_USER: - if (userlist_matches(sudo_user.pw, &def->binding) && - !set_default(def->var, def->val, def->op)) - return(FALSE); - break; - case DEFAULTS_RUNAS: - if (runaslist_matches(&def->binding, NULL) && - !set_default(def->var, def->val, def->op)) - return(FALSE); - break; - case DEFAULTS_HOST: - if (hostlist_matches(&def->binding) && - !set_default(def->var, def->val, def->op)) - return(FALSE); - break; - case DEFAULTS_CMND: - if (cmndlist_matches(&def->binding) && - !set_default(def->var, def->val, def->op)) - return(FALSE); - } - } - return(TRUE); -} - static int store_int(val, def, op) char *val; diff --git a/parse.c b/parse.c index cbf116574..0122b3c38 100644 --- a/parse.c +++ b/parse.c @@ -122,6 +122,51 @@ sudo_file_parse(nss) return(0); } +/* + * Update the defaults based on what was set by sudoers. + * If skip_cmnd is 1, skip DEFAULTS_CMND, if it is 0, skip all others. + * Returns TRUE on success and FALSE on failure. + */ +int +update_defaults(skip_cmnd) + int skip_cmnd; +{ + struct defaults *def; + + tq_foreach_fwd(&defaults, def) { + if (skip_cmnd == (def->type == DEFAULTS_CMND)) + continue; + switch (def->type) { + case DEFAULTS: + if (!set_default(def->var, def->val, def->op)) + return(FALSE); + case DEFAULTS_USER: + if (userlist_matches(sudo_user.pw, &def->binding) && + !set_default(def->var, def->val, def->op)) + return(FALSE); + break; + case DEFAULTS_RUNAS: + if (runaslist_matches(&def->binding, NULL) && + !set_default(def->var, def->val, def->op)) + return(FALSE); + break; + case DEFAULTS_HOST: + if (hostlist_matches(&def->binding) && + !set_default(def->var, def->val, def->op)) + return(FALSE); + break; + case DEFAULTS_CMND: + if (cmndlist_matches(&def->binding) && + !set_default(def->var, def->val, def->op)) + return(FALSE); + } + } + return(TRUE); +} + +/* + * Wrapper around update_defaults() for nsswitch code. + */ int sudo_file_setdefs(nss) struct sudo_nss *nss; @@ -129,7 +174,6 @@ sudo_file_setdefs(nss) if (nss->handle == NULL) return(-1); - /* XXX - move guts of update_defaults here */ if (!update_defaults(SKIP_CMND)) return(-1); return(0); diff --git a/testsudoers.c b/testsudoers.c index 91118a4ed..772a96f07 100644 --- a/testsudoers.c +++ b/testsudoers.c @@ -297,6 +297,13 @@ main(argc, argv) exit(0); } +int +update_defaults(skip_cmnd) + int skip_cmnd; +{ + return(TRUE); +} + void sudo_setspent() { diff --git a/visudo.c b/visudo.c index f6e3e7bad..a3cc37f42 100644 --- a/visudo.c +++ b/visudo.c @@ -572,6 +572,14 @@ user_is_exempt() return(FALSE); } +/* STUB */ +int +update_defaults(skip_cmnd) + int skip_cmnd; +{ + return(TRUE); +} + /* STUB */ void sudo_setspent() -- 2.40.0