From: Todd C. Miller Date: Sat, 10 Feb 2018 01:22:02 +0000 (-0700) Subject: Rename sudo_file_append_default() -> sudo_lbuf_append_default() and X-Git-Tag: SUDO_1_8_23^2~144 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2522229e86353d96a964fca654d248e27cee618e;p=sudo Rename sudo_file_append_default() -> sudo_lbuf_append_default() and use it for ldap and sssd too. --- diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c index ed8520654..fc6773f03 100644 --- a/plugins/sudoers/ldap.c +++ b/plugins/sudoers/ldap.c @@ -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++; } diff --git a/plugins/sudoers/parse.c b/plugins/sudoers/parse.c index 63197838b..0b87cecc2 100644 --- a/plugins/sudoers/parse.c +++ b/plugins/sudoers/parse.c @@ -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)) diff --git a/plugins/sudoers/parse.h b/plugins/sudoers/parse.h index f37a838c1..a725c86e2 100644 --- a/plugins/sudoers/parse.h +++ b/plugins/sudoers/parse.h @@ -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 */ diff --git a/plugins/sudoers/sssd.c b/plugins/sudoers/sssd.c index 9278c7cd6..d2cc79d7f 100644 --- a/plugins/sudoers/sssd.c +++ b/plugins/sudoers/sssd.c @@ -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++; }