]> granicus.if.org Git - sudo/commitdiff
Flag settings have a NULL value so we can't use that to test whether
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 28 Jul 2016 12:05:39 +0000 (06:05 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 28 Jul 2016 12:05:39 +0000 (06:05 -0600)
an entry in struct early_default is set or not.  Add a "set" member
and use that instead.

plugins/sudoers/defaults.c

index 910fb5f1ea241a0f217f67b62ac464be310d67bf..f9630c49e6facb90fd6e106b3e25ebca77d2875d 100644 (file)
@@ -82,7 +82,8 @@ static struct strmap priorities[] = {
 struct early_default {
     const char *var;
     const char *val;
-    int op;
+    short op;
+    short set;
 };
 
 static struct early_default early_defaults[] = {
@@ -681,6 +682,7 @@ store_early_default(struct defaults *def, int what)
                default_binding_matches(def, what)) {
                early->val = def->val;
                early->op = def->op;
+               early->set = true;
            }
            debug_return_bool(true);
        }
@@ -696,10 +698,10 @@ apply_early_defaults(bool quiet)
     debug_decl(apply_early_defaults, SUDOERS_DEBUG_DEFAULTS)
 
     for (early = early_defaults; early->var != NULL; early++) {
-       if (early->val != NULL) {
+       if (early->set) {
            if (!set_default(early->var, early->val, early->op, quiet))
                rc = false;
-           early->val = NULL;          /* clean state for next run */
+           early->set = false;         /* clean state for next run */
        }
     }
     debug_return_bool(rc);