diff --git a/plugins/sudoers/defaults.c b/plugins/sudoers/defaults.c index 4fac3e341..0309658dc 100644 --- a/plugins/sudoers/defaults.c +++ b/plugins/sudoers/defaults.c @@ -505,47 +505,48 @@ init_defaults(void) /* * 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(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/plugins/sudoers/sudoers.c b/plugins/sudoers/sudoers.c index 356e2ef52..7b5db5a18 100644 --- a/plugins/sudoers/sudoers.c +++ b/plugins/sudoers/sudoers.c @@ -227,7 +227,8 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation, 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) {