From 11ed40473fa60367b46f9c5bc0e44a574d5aa766 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 19 Jul 2010 12:39:41 -0400 Subject: [PATCH] Check return value of setdefs() but don't stop setting defaults if we hit an unknown one. --HG-- branch : 1.7 --- defaults.c | 15 ++++++++------- sudo.c | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/defaults.c b/defaults.c index 670b1a6cd..1bc99c7bd 100644 --- a/defaults.c +++ b/defaults.c @@ -501,48 +501,49 @@ init_defaults() /* * Update the defaults based on what was set by sudoers. - * Pass in a an OR'd list of which default types to update. + * Pass in an OR'd list of which default types to update. */ int update_defaults(what) int what; { struct defaults *def; + int rc = TRUE; tq_foreach_fwd(&defaults, def) { switch (def->type) { case DEFAULTS: if (ISSET(what, SETDEF_GENERIC) && !set_default(def->var, def->val, def->op)) - return(FALSE); + rc = FALSE; break; case DEFAULTS_USER: if (ISSET(what, SETDEF_USER) && userlist_matches(sudo_user.pw, &def->binding) == ALLOW && !set_default(def->var, def->val, def->op)) - return(FALSE); + rc = FALSE; break; case DEFAULTS_RUNAS: if (ISSET(what, SETDEF_RUNAS) && runaslist_matches(&def->binding, NULL) == ALLOW && !set_default(def->var, def->val, def->op)) - return(FALSE); + rc = FALSE; break; case DEFAULTS_HOST: if (ISSET(what, SETDEF_HOST) && hostlist_matches(&def->binding) == ALLOW && !set_default(def->var, def->val, def->op)) - return(FALSE); + rc = FALSE; break; case DEFAULTS_CMND: if (ISSET(what, SETDEF_CMND) && cmndlist_matches(&def->binding) == ALLOW && !set_default(def->var, def->val, def->op)) - return(FALSE); + rc = FALSE; break; } } - return(TRUE); + return(rc); } static int diff --git a/sudo.c b/sudo.c index ee8de96a1..b4f584c88 100644 --- a/sudo.c +++ b/sudo.c @@ -279,7 +279,8 @@ main(argc, argv, envp) tq_foreach_fwd(snl, nss) { if (nss->open(nss) == 0 && nss->parse(nss) == 0) { sources++; - nss->setdefs(nss); + if (nss->setdefs(nss) != 0) + log_error(NO_STDERR|NO_EXIT, "problem with defaults entries"); } } if (sources == 0) -- 2.40.0