]> granicus.if.org Git - sudo/commitdiff
Avoid passing around struct defaults when it is not needed. As a
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 9 Aug 2016 02:09:59 +0000 (20:09 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 9 Aug 2016 02:09:59 +0000 (20:09 -0600)
result, we no longer need to include gram.h in the LDAP and SSSD
backends.

plugins/sudoers/defaults.h
plugins/sudoers/ldap.c
plugins/sudoers/sssd.c

index ae5073e11f8128118a96caebec583c244b380f72..f02fd3dd406eedbf7adbf13de7b1c9c64864a9fd 100644 (file)
@@ -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);
index 8378c0ca19705a6779f4bc4f231a4b3881081f9d..d9ad04cc0ea4db6ac07a1cc44626222dd01ee824 100644 (file)
@@ -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;
index 9d6640cac74d14f0344694e30f7b66ea664a6fa7..edd708460a4b48a6970afaa033796f0017283af7 100644 (file)
@@ -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;