From: Todd C. Miller Date: Mon, 19 Jul 2010 16:39:41 +0000 (-0400) Subject: Check return value of setdefs() but don't stop setting defaults if X-Git-Tag: SUDO_1_7_4~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=11ed40473fa60367b46f9c5bc0e44a574d5aa766;p=sudo Check return value of setdefs() but don't stop setting defaults if we hit an unknown one. --HG-- branch : 1.7 --- 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)