Fix a mismatch between sudo_settings and settings_pairs that causes

some settings to get the wrong values.
This commit is contained in:
Todd C. Miller
2010-03-05 14:38:42 -05:00
parent c857c74e3a
commit a1b7526e33

View File

@@ -88,7 +88,6 @@ static struct sudo_settings {
struct name_value_pair p; struct name_value_pair p;
struct name_value_pair r; struct name_value_pair r;
struct name_value_pair t; struct name_value_pair t;
struct name_value_pair U;
struct name_value_pair u; struct name_value_pair u;
} sudo_settings = { } sudo_settings = {
{ "bsdauth_type" }, { "bsdauth_type" },
@@ -112,12 +111,13 @@ static struct name_value_pair *setting_pairs[] = {
&sudo_settings.g, &sudo_settings.g,
&sudo_settings.H, &sudo_settings.H,
&sudo_settings.i, &sudo_settings.i,
&sudo_settings.k,
&sudo_settings.p, &sudo_settings.p,
&sudo_settings.r, &sudo_settings.r,
&sudo_settings.t, &sudo_settings.t,
&sudo_settings.u &sudo_settings.u
}; };
#define settings_size (sizeof(setting_pairs) / sizeof(struct name_value_pair)) #define settings_size (sizeof(setting_pairs) / sizeof(setting_pairs[0]))
/* /*
* Command line argument parsing. * Command line argument parsing.
@@ -372,6 +372,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
settings = emalloc2(settings_size + 1, sizeof (char *)); settings = emalloc2(settings_size + 1, sizeof (char *));
for (i = 0, j = 0; i < settings_size; i++) { for (i = 0, j = 0; i < settings_size; i++) {
if (setting_pairs[i]->value) { if (setting_pairs[i]->value) {
sudo_debug(9, "settings: %s=%s", setting_pairs[i]->name,
setting_pairs[i]->value);
settings[j++] = fmt_string(setting_pairs[i]->name, settings[j++] = fmt_string(setting_pairs[i]->name,
setting_pairs[i]->value); setting_pairs[i]->value);
} }