]> granicus.if.org Git - sudo/commitdiff
Rename sudo_file_append_default() -> sudo_lbuf_append_default() and
authorTodd C. Miller <Todd.Miller@sudo.ws>
Sat, 10 Feb 2018 01:22:02 +0000 (18:22 -0700)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Sat, 10 Feb 2018 01:22:02 +0000 (18:22 -0700)
use it for ldap and sssd too.

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

index ed852065479f6a96347b6a05796d29990fa176d1..fc6773f0338f82afa8b058ebce5936c0681ab31e 100644 (file)
@@ -2236,29 +2236,6 @@ sudo_ldap_get_first_rdn(LDAP *ld, LDAPMessage *entry)
 #endif
 }
 
-static void
-sudo_ldap_print_quoted(struct sudo_lbuf *lbuf, const char *str)
-{
-    const char *name = str;
-    debug_decl(sudo_ldap_print_quoted, SUDOERS_DEBUG_LDAP)
-
-    /* Do not quote UID/GID, all others get quoted. */
-    while (*name == '!')
-       name++;
-    if (name[0] == '#' &&
-       name[strspn(name + 1, "0123456789") + 1] == '\0') {
-       sudo_lbuf_append(lbuf, "%s", str);
-    } else if (strpbrk(str, " \t") != NULL) {
-       sudo_lbuf_append(lbuf, "\"");
-       sudo_lbuf_append_quoted(lbuf, "\"", "%s", str);
-       sudo_lbuf_append(lbuf, "\"");
-    } else {
-       sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", str);
-    }
-
-    debug_return;
-}
-
 /*
  * Fetch and display the global Options.
  */
@@ -2272,8 +2249,8 @@ sudo_ldap_display_defaults(struct sudo_nss *nss, struct passwd *pw,
     struct sudo_ldap_handle *handle = nss->handle;
     LDAP *ld;
     LDAPMessage *entry, *result;
-    char *prefix, *filt, *var, *val;
-    int op, rc, count = 0;
+    char *prefix, *filt;
+    int rc, count = 0;
     debug_decl(sudo_ldap_display_defaults, SUDOERS_DEBUG_LDAP)
 
     if (handle == NULL || handle->ld == NULL)
@@ -2303,10 +2280,11 @@ sudo_ldap_display_defaults(struct sudo_nss *nss, struct passwd *pw,
                else
                    prefix = ", ";
                for (p = bv; *p != NULL; p++) {
-                   op = sudo_ldap_parse_option((*p)->bv_val, &var, &val);
-                   sudo_lbuf_append(lbuf, "%s%s%s", prefix, var,
-                       op == '+' ? "+=" : op == '-' ? "-=" : "=");
-                   sudo_ldap_print_quoted(lbuf, val);
+                   struct defaults d;
+
+                   sudo_lbuf_append(lbuf, "%s", prefix);
+                   d.op = sudo_ldap_parse_option((*p)->bv_val, &d.var, &d.val);
+                   sudo_lbuf_append_default(lbuf, &d);
                    prefix = ", ";
                    count++;
                }
index 63197838b0c9e1e186220aa86730f6d1423a84d7..0b87cecc283923a6470482ebdafc75d160607c49 100644 (file)
@@ -443,10 +443,10 @@ sudo_file_append_cmnd(struct cmndspec *cs, struct cmndtag *tags,
 /*
  * Format and append a defaults entry to the specified lbuf.
  */
-static void
-sudo_file_append_default(struct sudo_lbuf *lbuf, struct defaults *d)
+void
+sudo_lbuf_append_default(struct sudo_lbuf *lbuf, struct defaults *d)
 {
-    debug_decl(sudo_file_append_default, SUDOERS_DEBUG_NSS)
+    debug_decl(sudo_lbuf_append_default, SUDOERS_DEBUG_NSS)
 
     if (d->val != NULL) {
        sudo_lbuf_append(lbuf, "%s%s", d->var,
@@ -602,7 +602,7 @@ sudo_file_display_priv_long(struct passwd *pw, struct userspec *us,
                olen = lbuf->len;
                sudo_lbuf_append(lbuf, _("    Options: "));
                TAILQ_FOREACH(def, &priv->defaults, entries) {
-                   sudo_file_append_default(lbuf, def);
+                   sudo_lbuf_append_default(lbuf, def);
                    sudo_lbuf_append(lbuf, ", ");
                }
                if (TAG_SET(cs->tags.setenv))
@@ -739,7 +739,7 @@ sudo_file_display_defaults(struct sudo_nss *nss, struct passwd *pw,
                continue;
        }
        sudo_lbuf_append(lbuf, "%s", prefix);
-       sudo_file_append_default(lbuf, d);
+       sudo_lbuf_append_default(lbuf, d);
        prefix = ", ";
        nfound++;
     }
@@ -819,7 +819,7 @@ display_bound_defaults(int deftype, struct sudo_lbuf *lbuf)
            }
        } else
            sudo_lbuf_append(lbuf, ", ");
-       sudo_file_append_default(lbuf, d);
+       sudo_lbuf_append_default(lbuf, d);
     }
 
     if (sudo_lbuf_error(lbuf))
index f37a838c11a806ca1540164de76fae9790a03e9d..a725c86e235c48a67d3f981c7e1286fec4ed87a2 100644 (file)
@@ -308,5 +308,6 @@ const char *digest_type_to_name(int digest_type);
 /* parse.c */
 struct sudo_lbuf;
 int sudo_display_userspecs(struct userspec_list *usl, struct passwd *pw, struct sudo_lbuf *lbuf);
+void sudo_lbuf_append_default(struct sudo_lbuf *lbuf, struct defaults *d);
 
 #endif /* SUDOERS_PARSE_H */
index 9278c7cd6e171928df1a23f28343b0a5e6286aab..d2cc79d7f9e1de3c8e0ee2980e4d148814ed7fbd 100644 (file)
@@ -1334,7 +1334,7 @@ sudo_sss_display_defaults(struct sudo_nss *nss, struct passwd *pw,
     struct sss_sudo_rule *rule;
     struct sss_sudo_result *sss_result = NULL;
     uint32_t sss_error = 0;
-    char *prefix, *val, **val_array = NULL;
+    char *prefix, **val_array = NULL;
     unsigned int i, j;
     int count = 0;
     debug_decl(sudo_sss_display_defaults, SUDOERS_DEBUG_SSSD);
@@ -1379,8 +1379,11 @@ sudo_sss_display_defaults(struct sudo_nss *nss, struct passwd *pw,
            prefix = ", ";
 
        for (j = 0; val_array[j] != NULL; ++j) {
-           val = val_array[j];
-           sudo_lbuf_append(lbuf, "%s%s", prefix, val);
+           struct defaults d;
+
+           sudo_lbuf_append(lbuf, "%s", prefix);
+           d.op = sudo_ldap_parse_option(val_array[j], &d.var, &d.val);
+           sudo_lbuf_append_default(lbuf, &d);
            prefix = ", ";
            count++;
        }