]> granicus.if.org Git - sudo/commitdiff
Check return value of setdefs() but don't stop setting defaults if
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 19 Jul 2010 16:53:25 +0000 (12:53 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 19 Jul 2010 16:53:25 +0000 (12:53 -0400)
we hit an unknown one.

plugins/sudoers/defaults.c
plugins/sudoers/sudoers.c

index 4fac3e341b77bb7c0f4d46e4811e518ed556834b..0309658dc7dadb46976c3e76645f2c4f5cc949da 100644 (file)
@@ -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
index 356e2ef52a56decf8e9b2b8449229304ba63fb17..7b5db5a189b1dc3d7ff85407581944e7fe47452d 100644 (file)
@@ -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) {