use it for ldap and sssd too.
#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.
*/
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)
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++;
}
/*
* 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,
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))
continue;
}
sudo_lbuf_append(lbuf, "%s", prefix);
- sudo_file_append_default(lbuf, d);
+ sudo_lbuf_append_default(lbuf, d);
prefix = ", ";
nfound++;
}
}
} else
sudo_lbuf_append(lbuf, ", ");
- sudo_file_append_default(lbuf, d);
+ sudo_lbuf_append_default(lbuf, d);
}
if (sudo_lbuf_error(lbuf))
/* 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 */
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);
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++;
}