From: Todd C. Miller Date: Tue, 9 Aug 2016 02:09:59 +0000 (-0600) Subject: Avoid passing around struct defaults when it is not needed. As a X-Git-Tag: SUDO_1_8_18^2~86 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9d94ee11c0b2bd27f89aa56619323ff78e288bbd;p=sudo Avoid passing around struct defaults when it is not needed. As a result, we no longer need to include gram.h in the LDAP and SSSD backends. --- diff --git a/plugins/sudoers/defaults.h b/plugins/sudoers/defaults.h index ae5073e11..f02fd3dd4 100644 --- a/plugins/sudoers/defaults.h +++ b/plugins/sudoers/defaults.h @@ -119,7 +119,6 @@ struct early_default { /* * Prototypes */ -struct defaults; void dump_default(void); bool check_defaults(int what, bool quiet); bool init_defaults(void); diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c index 8378c0ca1..d9ad04cc0 100644 --- a/plugins/sudoers/ldap.c +++ b/plugins/sudoers/ldap.c @@ -61,7 +61,6 @@ #include "sudoers.h" #include "parse.h" -#include "gram.h" /* for DEFAULTS */ #include "sudo_lbuf.h" #include "sudo_dso.h" @@ -1046,8 +1045,8 @@ sudo_ldap_check_bool(LDAP *ld, LDAPMessage *entry, char *option) * Parse an option string into a defaults structure. * The members of def are pointers into optstr (which is modified). */ -static void -sudo_ldap_parse_option(char *optstr, struct defaults *def) +static int +sudo_ldap_parse_option(char *optstr, char **varp, char **valp) { char *cp, *val = NULL; char *var = optstr; @@ -1094,13 +1093,10 @@ sudo_ldap_parse_option(char *optstr, struct defaults *def) } while (isblank((unsigned char)*var)); } } - def->var = var; - def->val = val; - def->op = op; - def->type = DEFAULTS; - def->binding = NULL; + *varp = var; + *valp = val; - debug_return; + debug_return_int(op); } /* @@ -1111,9 +1107,9 @@ static bool sudo_ldap_parse_options(LDAP *ld, LDAPMessage *entry) { struct berval **bv, **p; - struct defaults def; - char *copy; + char *copy, *var, *val; bool ret = false; + int op; debug_decl(sudo_ldap_parse_options, SUDOERS_DEBUG_LDAP) bv = ldap_get_values_len(ld, entry, "sudoOption"); @@ -1128,10 +1124,10 @@ sudo_ldap_parse_options(LDAP *ld, LDAPMessage *entry) sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } - sudo_ldap_parse_option(copy, &def); - early = is_early_default(def.var); + op = sudo_ldap_parse_option(copy, &var, &val); + early = is_early_default(var); if (early != NULL) - set_early_default(def.var, def.val, def.op, false, early); + set_early_default(var, val, op, false, early); free(copy); } run_early_defaults(); @@ -1142,9 +1138,9 @@ sudo_ldap_parse_options(LDAP *ld, LDAPMessage *entry) sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } - sudo_ldap_parse_option(copy, &def); - if (is_early_default(def.var) == NULL) - set_default(def.var, def.val, def.op, false); + op = sudo_ldap_parse_option(copy, &var, &val); + if (is_early_default(var) == NULL) + set_default(var, val, op, false); free(copy); } ret = true; diff --git a/plugins/sudoers/sssd.c b/plugins/sudoers/sssd.c index 9d6640cac..edd708460 100644 --- a/plugins/sudoers/sssd.c +++ b/plugins/sudoers/sssd.c @@ -45,7 +45,6 @@ #include "sudoers.h" #include "parse.h" -#include "gram.h" /* for DEFAULTS */ #include "sudo_lbuf.h" #include "sudo_dso.h" @@ -1121,8 +1120,8 @@ sudo_sss_check_command(struct sudo_sss_handle *handle, * Parse an option string into a defaults structure. * The members of def are pointers into optstr (which is modified). */ -static void -sudo_sss_parse_option(char *optstr, struct defaults *def) +static int +sudo_sss_parse_option(char *optstr, char **varp, char **valp) { char *cp, *val = NULL; char *var = optstr; @@ -1169,22 +1168,18 @@ sudo_sss_parse_option(char *optstr, struct defaults *def) } while (isblank((unsigned char)*var)); } } - def->var = var; - def->val = val; - def->op = op; - def->type = DEFAULTS; - def->binding = NULL; + *varp = var; + *valp = val; - debug_return; + debug_return_int(op); } static bool sudo_sss_parse_options(struct sudo_sss_handle *handle, struct sss_sudo_rule *rule) { - int i; - char *copy; + int i, op; + char *copy, *var, *val; bool ret = false; - struct defaults def; char **val_array = NULL; debug_decl(sudo_sss_parse_options, SUDOERS_DEBUG_SSSD); @@ -1210,10 +1205,10 @@ sudo_sss_parse_options(struct sudo_sss_handle *handle, struct sss_sudo_rule *rul sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } - sudo_sss_parse_option(copy, &def); - early = is_early_default(def.var); + op = sudo_sss_parse_option(copy, &var, &val); + early = is_early_default(var); if (early != NULL) - set_early_default(def.var, def.val, def.op, false, early); + set_early_default(var, val, op, false, early); free(copy); } run_early_defaults(); @@ -1224,9 +1219,9 @@ sudo_sss_parse_options(struct sudo_sss_handle *handle, struct sss_sudo_rule *rul sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } - sudo_sss_parse_option(copy, &def); - if (is_early_default(def.var) == NULL) - set_default(def.var, def.val, def.op, false); + op = sudo_sss_parse_option(copy, &var, &val); + if (is_early_default(var) == NULL) + set_default(var, val, op, false); free(copy); } ret = true;