]> granicus.if.org Git - sudo/commitdiff
Move update_defaults into defaults.c and call it properly from
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 2 Nov 2008 19:06:37 +0000 (19:06 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 2 Nov 2008 19:06:37 +0000 (19:06 +0000)
visudo and testsudoers.

defaults.c
parse.c
testsudoers.c
visudo.c

index b588241b3396003fcca000b6feb5af937c15066d..722c4832b61de27c14cde97970c5181e2886ee9f 100644 (file)
@@ -486,6 +486,52 @@ init_defaults()
     firsttime = 0;
 }
 
+/*
+ * Update the defaults based on what was set by sudoers.
+ * Pass in a an OR'd list of which default types to update.
+ */
+int
+update_defaults(what)
+    int what;
+{
+    struct defaults *def;
+
+    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);
+               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);
+               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);
+               break;
+           case DEFAULTS_HOST:
+               if (ISSET(what, SETDEF_HOST) &&
+                   hostlist_matches(&def->binding) == ALLOW &&
+                   !set_default(def->var, def->val, def->op))
+                   return(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);
+               break;
+       }
+    }
+    return(TRUE);
+}
+
 static int
 store_int(val, def, op)
     char *val;
diff --git a/parse.c b/parse.c
index f8bb455e282aee30b5b57ff9d49974c462286f08..8ce1321e1cb132c6c05c85a42430790c7bbb9f37 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -127,54 +127,6 @@ 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.
- * XXX - move to defaults.c or match.c
- */
-int
-update_defaults(what)
-    int what;
-{
-    struct defaults *def;
-
-    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);
-               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);
-               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);
-               break;
-           case DEFAULTS_HOST:
-               if (ISSET(what, SETDEF_HOST) &&
-                   hostlist_matches(&def->binding) == ALLOW &&
-                   !set_default(def->var, def->val, def->op))
-                   return(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);
-               break;
-       }
-    }
-    return(TRUE);
-}
-
 /*
  * Wrapper around update_defaults() for nsswitch code.
  */
index e5961b3bfae0177e231dbfa25bd8f0747474a6dc..7200dc793bd9156e6f9442f44e1b083af5dcf142 100644 (file)
@@ -336,14 +336,6 @@ set_runasgr(group)
     }
 }
 
-/* XXX - sanity check defaults settings */
-int
-update_defaults(what)
-    int what;
-{
-    return(TRUE);
-}
-
 void
 sudo_setspent()
 {
index 6d7d36446bbf2c13daf3c49e11f3f8966496cbbd..da4a42922e351f0f1d1b39736b330d4bde330b64 100644 (file)
--- a/visudo.c
+++ b/visudo.c
@@ -208,7 +208,7 @@ main(argc, argv)
        error(1, "%s", sudoers_path);
     init_parser(sudoers_path, 0);
     yyparse();
-    (void) update_defaults(SETDEF_ALL & ~SETDEF_CMND);
+    (void) update_defaults(SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER);
 
     editor = get_editor(&args);
 
@@ -564,15 +564,6 @@ user_is_exempt()
     return(FALSE);
 }
 
-/* STUB */
-/* XXX - parse defaults to get editor and env_editor values */
-int
-update_defaults(what)
-    int what;
-{
-    return(TRUE);
-}
-
 /* STUB */
 void
 sudo_setspent()