plugins/sudoers/regress/visudo/test4.sh
plugins/sudoers/regress/visudo/test5.out.ok
plugins/sudoers/regress/visudo/test5.sh
+plugins/sudoers/regress/visudo/test6.out.ok
+plugins/sudoers/regress/visudo/test6.sh
plugins/sudoers/set_perms.c
plugins/sudoers/solaris_audit.c
plugins/sudoers/solaris_audit.h
debug_return_bool(rc);
}
+static void
+free_default(struct sudo_defs_types *def)
+{
+ switch (def->type & T_MASK) {
+ case T_STR:
+ free(def->sd_un.str);
+ break;
+ case T_LIST:
+ (void)list_op(NULL, 0, def, freeall);
+ break;
+ }
+ memset(&def->sd_un, 0, sizeof(def->sd_un));
+}
+
/*
* Set default options to compiled-in values.
* Any of these may be overridden at runtime by a "Defaults" file.
/* Clear any old settings. */
if (!firsttime) {
- for (def = sudo_defs_table; def->name; def++) {
- switch (def->type & T_MASK) {
- case T_STR:
- free(def->sd_un.str);
- def->sd_un.str = NULL;
- break;
- case T_LIST:
- (void)list_op(NULL, 0, def, freeall);
- break;
- }
- memset(&def->sd_un, 0, sizeof(def->sd_un));
- }
+ for (def = sudo_defs_table; def->name != NULL; def++)
+ free_default(def);
}
/* First initialize the flags. */
}
/* Don't actually set the defaults value, just checking. */
tmp = *cur;
+ memset(&tmp.sd_un, 0, sizeof(&tmp.sd_un));
if (!set_default_entry(&tmp, def->val, def->op, quiet, false))
rc = false;
+ free_default(&tmp);
}
debug_return_bool(rc);
}