From 7bafa63c15329578ef845e9f25546833423bee10 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 26 Jun 2014 15:51:15 -0600 Subject: [PATCH] Don't pollute the namespace with lbuf struct and functions --- MANIFEST | 2 +- Makefile.in | 4 +- include/{lbuf.h => sudo_lbuf.h} | 15 ++-- lib/util/Makefile.in | 5 +- lib/util/lbuf.c | 42 ++++----- lib/util/util.exp | 10 +-- plugins/sudoers/Makefile.in | 32 +++---- plugins/sudoers/ldap.c | 72 +++++++-------- plugins/sudoers/parse.c | 155 ++++++++++++++++---------------- plugins/sudoers/sssd.c | 70 +++++++-------- plugins/sudoers/sudo_nss.c | 28 +++--- plugins/sudoers/sudo_nss.h | 8 +- plugins/sudoers/sudoers.h | 8 +- plugins/sudoers/toke.c | 8 +- plugins/sudoers/toke.l | 8 +- src/Makefile.in | 4 +- src/parse_args.c | 82 ++++++++--------- 17 files changed, 278 insertions(+), 275 deletions(-) rename include/{lbuf.h => sudo_lbuf.h} (67%) diff --git a/MANIFEST b/MANIFEST index affa48400..96dcddc04 100644 --- a/MANIFEST +++ b/MANIFEST @@ -67,7 +67,6 @@ include/compat/utime.h/ include/fatal.h include/fileops.h include/gettext.h -include/lbuf.h include/missing.h include/queue.h include/secure_path.h @@ -75,6 +74,7 @@ include/sudo_conf.h include/sudo_debug.h include/sudo_dso.h include/sudo_event.h +include/sudo_lbuf.h include/sudo_plugin.h include/sudo_util.h indent.pro diff --git a/Makefile.in b/Makefile.in index f1ff21463..7f6bf2d90 100644 --- a/Makefile.in +++ b/Makefile.in @@ -79,8 +79,8 @@ XGETTEXT_OPTS = -F -k_ -kN_ -kU_ --copyright-holder="Todd C. Miller" \ --package-name=@PACKAGE_NAME@ --package-version=$(VERSION) \ --flag warning:1:c-format --flag warningx:1:c-format \ --flag fatal:1:c-format --flag fatalx:1:c-format \ - --flag easprintf:3:c-format --flag lbuf_append:2:c-format \ - --flag lbuf_append_quoted:3:c-format --foreign-user + --flag easprintf:3:c-format --flag sudo_lbuf_append:2:c-format \ + --flag sudo_lbuf_append_quoted:3:c-format --foreign-user # Default cppcheck options when run from the top-level Makefile CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX diff --git a/include/lbuf.h b/include/sudo_lbuf.h similarity index 67% rename from include/lbuf.h rename to include/sudo_lbuf.h index 37cc73ebc..85fb6b8e9 100644 --- a/include/lbuf.h +++ b/include/sudo_lbuf.h @@ -1,5 +1,6 @@ /* - * Copyright (c) 2007, 2010, 2011 Todd C. Miller + * Copyright (c) 2007, 2010, 2011, 2013, 2014 + * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -22,7 +23,7 @@ /* * Line buffer struct. */ -struct lbuf { +struct sudo_lbuf { int (*output)(const char *); char *buf; const char *continuation; @@ -32,10 +33,10 @@ struct lbuf { int cols; }; -__dso_public void lbuf_init(struct lbuf *, int (*)(const char *), int, const char *, int); -__dso_public void lbuf_destroy(struct lbuf *); -__dso_public void lbuf_append(struct lbuf *, const char *, ...) __printflike(2, 3); -__dso_public void lbuf_append_quoted(struct lbuf *, const char *, const char *, ...) __printflike(3, 4); -__dso_public void lbuf_print(struct lbuf *); +__dso_public void sudo_lbuf_init(struct sudo_lbuf *, int (*)(const char *), int, const char *, int); +__dso_public void sudo_lbuf_destroy(struct sudo_lbuf *); +__dso_public void sudo_lbuf_append(struct sudo_lbuf *, const char *, ...) __printflike(2, 3); +__dso_public void sudo_lbuf_append_quoted(struct sudo_lbuf *, const char *, const char *, ...) __printflike(3, 4); +__dso_public void sudo_lbuf_print(struct sudo_lbuf *); #endif /* _SUDO_LBUF_H */ diff --git a/lib/util/Makefile.in b/lib/util/Makefile.in index c93a48db4..0c37783e9 100644 --- a/lib/util/Makefile.in +++ b/lib/util/Makefile.in @@ -381,8 +381,9 @@ key_val.lo: $(srcdir)/key_val.c $(incdir)/compat/stdbool.h $(incdir)/missing.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_util.h \ $(top_builddir)/config.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/key_val.c -lbuf.lo: $(srcdir)/lbuf.c $(incdir)/alloc.h $(incdir)/fatal.h $(incdir)/lbuf.h \ - $(incdir)/missing.h $(incdir)/sudo_debug.h $(top_builddir)/config.h +lbuf.lo: $(srcdir)/lbuf.c $(incdir)/alloc.h $(incdir)/fatal.h \ + $(incdir)/missing.h $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h \ + $(top_builddir)/config.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/lbuf.c locale_stub.lo: $(top_srcdir)/src/locale_stub.c $(incdir)/fatal.h \ $(incdir)/gettext.h $(incdir)/missing.h $(top_builddir)/config.h diff --git a/lib/util/lbuf.c b/lib/util/lbuf.c index 58ac88f15..b7cb1cbd5 100644 --- a/lib/util/lbuf.c +++ b/lib/util/lbuf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007-2013 Todd C. Miller + * Copyright (c) 2007-2014 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -45,14 +45,14 @@ #include "missing.h" #include "alloc.h" #include "fatal.h" -#include "lbuf.h" +#include "sudo_lbuf.h" #include "sudo_debug.h" void -lbuf_init(struct lbuf *lbuf, int (*output)(const char *), +sudo_lbuf_init(struct sudo_lbuf *lbuf, int (*output)(const char *), int indent, const char *continuation, int cols) { - debug_decl(lbuf_init, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_init, SUDO_DEBUG_UTIL) lbuf->output = output; lbuf->continuation = continuation; @@ -66,9 +66,9 @@ lbuf_init(struct lbuf *lbuf, int (*output)(const char *), } void -lbuf_destroy(struct lbuf *lbuf) +sudo_lbuf_destroy(struct sudo_lbuf *lbuf) { - debug_decl(lbuf_destroy, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_destroy, SUDO_DEBUG_UTIL) efree(lbuf->buf); lbuf->buf = NULL; @@ -77,7 +77,7 @@ lbuf_destroy(struct lbuf *lbuf) } static void -lbuf_expand(struct lbuf *lbuf, int extra) +sudo_lbuf_expand(struct sudo_lbuf *lbuf, int extra) { if (lbuf->len + extra + 1 >= lbuf->size) { do { @@ -92,12 +92,12 @@ lbuf_expand(struct lbuf *lbuf, int extra) * Any characters in set are quoted with a backslash. */ void -lbuf_append_quoted(struct lbuf *lbuf, const char *set, const char *fmt, ...) +sudo_lbuf_append_quoted(struct sudo_lbuf *lbuf, const char *set, const char *fmt, ...) { va_list ap; int len; char *cp, *s; - debug_decl(lbuf_append_quoted, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_append_quoted, SUDO_DEBUG_UTIL) va_start(ap, fmt); while (*fmt != '\0') { @@ -106,7 +106,7 @@ lbuf_append_quoted(struct lbuf *lbuf, const char *set, const char *fmt, ...) goto done; while ((cp = strpbrk(s, set)) != NULL) { len = (int)(cp - s); - lbuf_expand(lbuf, len + 2); + sudo_lbuf_expand(lbuf, len + 2); memcpy(lbuf->buf + lbuf->len, s, len); lbuf->len += len; lbuf->buf[lbuf->len++] = '\\'; @@ -115,14 +115,14 @@ lbuf_append_quoted(struct lbuf *lbuf, const char *set, const char *fmt, ...) } if (*s != '\0') { len = strlen(s); - lbuf_expand(lbuf, len); + sudo_lbuf_expand(lbuf, len); memcpy(lbuf->buf + lbuf->len, s, len); lbuf->len += len; } fmt += 2; continue; } - lbuf_expand(lbuf, 2); + sudo_lbuf_expand(lbuf, 2); if (strchr(set, *fmt) != NULL) lbuf->buf[lbuf->len++] = '\\'; lbuf->buf[lbuf->len++] = *fmt++; @@ -139,12 +139,12 @@ done: * Parse the format and append strings, only %s and %% escapes are supported. */ void -lbuf_append(struct lbuf *lbuf, const char *fmt, ...) +sudo_lbuf_append(struct sudo_lbuf *lbuf, const char *fmt, ...) { va_list ap; int len; char *s; - debug_decl(lbuf_append, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_append, SUDO_DEBUG_UTIL) va_start(ap, fmt); while (*fmt != '\0') { @@ -152,13 +152,13 @@ lbuf_append(struct lbuf *lbuf, const char *fmt, ...) if ((s = va_arg(ap, char *)) == NULL) goto done; len = strlen(s); - lbuf_expand(lbuf, len); + sudo_lbuf_expand(lbuf, len); memcpy(lbuf->buf + lbuf->len, s, len); lbuf->len += len; fmt += 2; continue; } - lbuf_expand(lbuf, 1); + sudo_lbuf_expand(lbuf, 1); lbuf->buf[lbuf->len++] = *fmt++; } done: @@ -170,11 +170,11 @@ done: } static void -lbuf_println(struct lbuf *lbuf, char *line, int len) +sudo_lbuf_println(struct sudo_lbuf *lbuf, char *line, int len) { char *cp, save; int i, have, contlen; - debug_decl(lbuf_println, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_println, SUDO_DEBUG_UTIL) contlen = lbuf->continuation ? strlen(lbuf->continuation) : 0; @@ -232,11 +232,11 @@ lbuf_println(struct lbuf *lbuf, char *line, int len) * The lbuf is reset on return. */ void -lbuf_print(struct lbuf *lbuf) +sudo_lbuf_print(struct sudo_lbuf *lbuf) { char *cp, *ep; int len; - debug_decl(lbuf_print, SUDO_DEBUG_UTIL) + debug_decl(sudo_lbuf_print, SUDO_DEBUG_UTIL) if (lbuf->buf == NULL || lbuf->len == 0) goto done; @@ -263,7 +263,7 @@ lbuf_print(struct lbuf *lbuf) if ((ep = memchr(cp, '\n', len)) != NULL) len = (int)(ep - cp); if (len) - lbuf_println(lbuf, cp, len); + sudo_lbuf_println(lbuf, cp, len); cp = ep ? ep + 1 : NULL; } } diff --git a/lib/util/util.exp b/lib/util/util.exp index 8ea777e12..40ead634f 100644 --- a/lib/util/util.exp +++ b/lib/util/util.exp @@ -44,11 +44,6 @@ get_ttysize getprogname initprogname isblank -lbuf_append -lbuf_append_quoted -lbuf_destroy -lbuf_init -lbuf_print sudo_asprintf sudo_clock_gettime sudo_closefrom @@ -113,6 +108,11 @@ sudo_getopt_long_only sudo_glob sudo_globfree sudo_inet_pton +sudo_lbuf_append +sudo_lbuf_append_quoted +sudo_lbuf_destroy +sudo_lbuf_init +sudo_lbuf_print sudo_lock_file sudo_memrchr sudo_memset_s diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index d2b552d38..cc9c5ccc0 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -654,8 +654,8 @@ kerb5.lo: $(authdir)/kerb5.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(authdir)/kerb5.c ldap.lo: $(srcdir)/ldap.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(incdir)/compat/stdbool.h $(incdir)/fatal.h $(incdir)/fileops.h \ - $(incdir)/gettext.h $(incdir)/lbuf.h $(incdir)/missing.h \ - $(incdir)/queue.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ + $(incdir)/gettext.h $(incdir)/missing.h $(incdir)/queue.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ $(srcdir)/sudoers.h $(top_builddir)/config.h \ @@ -720,8 +720,8 @@ pam.lo: $(authdir)/pam.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(authdir)/pam.c parse.lo: $(srcdir)/parse.c $(devdir)/def_data.h $(devdir)/gram.h \ $(incdir)/alloc.h $(incdir)/compat/stdbool.h $(incdir)/fatal.h \ - $(incdir)/fileops.h $(incdir)/gettext.h $(incdir)/lbuf.h \ - $(incdir)/missing.h $(incdir)/queue.h $(incdir)/sudo_debug.h \ + $(incdir)/fileops.h $(incdir)/gettext.h $(incdir)/missing.h \ + $(incdir)/queue.h $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ $(srcdir)/sudoers.h $(top_builddir)/config.h \ @@ -819,8 +819,8 @@ sia.lo: $(authdir)/sia.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(authdir)/sia.c sssd.lo: $(srcdir)/sssd.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(incdir)/compat/stdbool.h $(incdir)/fatal.h $(incdir)/fileops.h \ - $(incdir)/gettext.h $(incdir)/lbuf.h $(incdir)/missing.h \ - $(incdir)/queue.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ + $(incdir)/gettext.h $(incdir)/missing.h $(incdir)/queue.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ $(srcdir)/sudoers.h $(top_builddir)/config.h \ @@ -838,10 +838,11 @@ sudo_auth.lo: $(authdir)/sudo_auth.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(authdir)/sudo_auth.c sudo_nss.lo: $(srcdir)/sudo_nss.c $(devdir)/def_data.h $(incdir)/alloc.h \ $(incdir)/compat/stdbool.h $(incdir)/fatal.h $(incdir)/fileops.h \ - $(incdir)/gettext.h $(incdir)/lbuf.h $(incdir)/missing.h \ - $(incdir)/queue.h $(incdir)/sudo_debug.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h $(top_builddir)/config.h \ + $(incdir)/gettext.h $(incdir)/missing.h $(incdir)/queue.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \ + $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_builddir)/config.h \ $(top_builddir)/pathnames.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/sudo_nss.c sudoers.lo: $(srcdir)/sudoers.c $(devdir)/def_data.h $(incdir)/alloc.h \ @@ -888,12 +889,11 @@ timestr.lo: $(srcdir)/timestr.c $(incdir)/missing.h $(top_builddir)/config.h toke.lo: $(devdir)/toke.c $(devdir)/def_data.h $(devdir)/gram.h \ $(incdir)/alloc.h $(incdir)/compat/sha2.h $(incdir)/compat/stdbool.h \ $(incdir)/fatal.h $(incdir)/fileops.h $(incdir)/gettext.h \ - $(incdir)/lbuf.h $(incdir)/missing.h $(incdir)/queue.h \ - $(incdir)/secure_path.h $(incdir)/sudo_debug.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ - $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ - $(srcdir)/sudoers.h $(srcdir)/toke.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(incdir)/missing.h $(incdir)/queue.h $(incdir)/secure_path.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/logging.h \ + $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/toke.h $(top_builddir)/config.h $(top_builddir)/pathnames.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(devdir)/toke.c toke_util.lo: $(srcdir)/toke_util.c $(devdir)/def_data.h $(devdir)/gram.h \ $(incdir)/alloc.h $(incdir)/compat/stdbool.h $(incdir)/fatal.h \ diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c index c2d04a139..ee048f986 100644 --- a/plugins/sudoers/ldap.c +++ b/plugins/sudoers/ldap.c @@ -68,7 +68,7 @@ #include "sudoers.h" #include "parse.h" -#include "lbuf.h" +#include "sudo_lbuf.h" #include "sudo_dso.h" /* Older Netscape LDAP SDKs don't prototype ldapssl_set_strength() */ @@ -350,11 +350,11 @@ static int sudo_ldap_setdefs(struct sudo_nss *nss); static int sudo_ldap_lookup(struct sudo_nss *nss, int ret, int pwflag); static int sudo_ldap_display_cmnd(struct sudo_nss *nss, struct passwd *pw); static int sudo_ldap_display_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf); + struct sudo_lbuf *lbuf); static int sudo_ldap_display_bound_defaults(struct sudo_nss *nss, - struct passwd *pw, struct lbuf *lbuf); + struct passwd *pw, struct sudo_lbuf *lbuf); static int sudo_ldap_display_privs(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf); + struct sudo_lbuf *lbuf); static struct ldap_result *sudo_ldap_result_get(struct sudo_nss *nss, struct passwd *pw); @@ -1771,7 +1771,7 @@ sudo_ldap_get_first_rdn(LDAP *ld, LDAPMessage *entry) */ static int sudo_ldap_display_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct berval **bv, **p; struct timeval tv, *tvp = NULL; @@ -1805,7 +1805,7 @@ sudo_ldap_display_defaults(struct sudo_nss *nss, struct passwd *pw, else prefix = ", "; for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", prefix, (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", prefix, (*p)->bv_val); prefix = ", "; count++; } @@ -1825,7 +1825,7 @@ done: */ static int sudo_ldap_display_bound_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { debug_decl(sudo_ldap_display_bound_defaults, SUDO_DEBUG_LDAP) debug_return_int(0); @@ -1835,13 +1835,13 @@ sudo_ldap_display_bound_defaults(struct sudo_nss *nss, struct passwd *pw, * Print a record in the short form, ala file sudoers. */ static int -sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) +sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct sudo_lbuf *lbuf) { struct berval **bv, **p; int count = 0; debug_decl(sudo_ldap_display_entry_short, SUDO_DEBUG_LDAP) - lbuf_append(lbuf, " ("); + sudo_lbuf_append(lbuf, " ("); /* get the RunAsUser Values from the entry */ bv = ldap_get_values_len(ld, entry, "sudoRunAsUser"); @@ -1849,22 +1849,22 @@ sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) bv = ldap_get_values_len(ld, entry, "sudoRunAs"); if (bv != NULL) { for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); } ldap_value_free_len(bv); } else - lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "%s", def_runas_default); /* get the RunAsGroup Values from the entry */ bv = ldap_get_values_len(ld, entry, "sudoRunAsGroup"); if (bv != NULL) { - lbuf_append(lbuf, " : "); + sudo_lbuf_append(lbuf, " : "); for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); } ldap_value_free_len(bv); } - lbuf_append(lbuf, ") "); + sudo_lbuf_append(lbuf, ") "); /* get the Option Values from the entry */ bv = ldap_get_values_len(ld, entry, "sudoOption"); @@ -1874,13 +1874,13 @@ sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) if (*cp == '!') cp++; if (strcmp(cp, "authenticate") == 0) - lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? + sudo_lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? "NOPASSWD: " : "PASSWD: "); else if (strcmp(cp, "noexec") == 0) - lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? + sudo_lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? "EXEC: " : "NOEXEC: "); else if (strcmp(cp, "setenv") == 0) - lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? + sudo_lbuf_append(lbuf, (*p)->bv_val[0] == '!' ? "NOSETENV: " : "SETENV: "); } ldap_value_free_len(bv); @@ -1890,12 +1890,12 @@ sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) bv = ldap_get_values_len(ld, entry, "sudoCommand"); if (bv != NULL) { for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); count++; } ldap_value_free_len(bv); } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); debug_return_int(count); } @@ -1904,7 +1904,7 @@ sudo_ldap_display_entry_short(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) * Print a record in the long form. */ static int -sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) +sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct sudo_lbuf *lbuf) { struct berval **bv, **p; char *rdn; @@ -1914,46 +1914,46 @@ sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) /* extract the dn, only show the first rdn */ rdn = sudo_ldap_get_first_rdn(ld, entry); if (rdn != NULL) - lbuf_append(lbuf, _("\nLDAP Role: %s\n"), rdn); + sudo_lbuf_append(lbuf, _("\nLDAP Role: %s\n"), rdn); else - lbuf_append(lbuf, _("\nLDAP Role: UNKNOWN\n")); + sudo_lbuf_append(lbuf, _("\nLDAP Role: UNKNOWN\n")); if (rdn) ldap_memfree(rdn); /* get the RunAsUser Values from the entry */ - lbuf_append(lbuf, " RunAsUsers: "); + sudo_lbuf_append(lbuf, " RunAsUsers: "); bv = ldap_get_values_len(ld, entry, "sudoRunAsUser"); if (bv == NULL) bv = ldap_get_values_len(ld, entry, "sudoRunAs"); if (bv != NULL) { for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); } ldap_value_free_len(bv); } else - lbuf_append(lbuf, "%s", def_runas_default); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "\n"); /* get the RunAsGroup Values from the entry */ bv = ldap_get_values_len(ld, entry, "sudoRunAsGroup"); if (bv != NULL) { - lbuf_append(lbuf, " RunAsGroups: "); + sudo_lbuf_append(lbuf, " RunAsGroups: "); for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); } ldap_value_free_len(bv); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); } /* get the Option Values from the entry */ bv = ldap_get_values_len(ld, entry, "sudoOption"); if (bv != NULL) { - lbuf_append(lbuf, " Options: "); + sudo_lbuf_append(lbuf, " Options: "); for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); + sudo_lbuf_append(lbuf, "%s%s", p != bv ? ", " : "", (*p)->bv_val); } ldap_value_free_len(bv); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); } /* @@ -1963,7 +1963,7 @@ sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) bv = ldap_get_values_len(ld, entry, "sudoOrder"); if (bv != NULL) { if (*bv != NULL) { - lbuf_append(lbuf, _(" Order: %s\n"), (*bv)->bv_val); + sudo_lbuf_append(lbuf, _(" Order: %s\n"), (*bv)->bv_val); } ldap_value_free_len(bv); } @@ -1971,9 +1971,9 @@ sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) /* Get the command values from the entry. */ bv = ldap_get_values_len(ld, entry, "sudoCommand"); if (bv != NULL) { - lbuf_append(lbuf, _(" Commands:\n")); + sudo_lbuf_append(lbuf, _(" Commands:\n")); for (p = bv; *p != NULL; p++) { - lbuf_append(lbuf, "\t%s\n", (*p)->bv_val); + sudo_lbuf_append(lbuf, "\t%s\n", (*p)->bv_val); count++; } ldap_value_free_len(bv); @@ -1987,7 +1987,7 @@ sudo_ldap_display_entry_long(LDAP *ld, LDAPMessage *entry, struct lbuf *lbuf) */ static int sudo_ldap_display_privs(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct sudo_ldap_handle *handle = nss->handle; LDAP *ld; diff --git a/plugins/sudoers/parse.c b/plugins/sudoers/parse.c index d925231fa..8f8108ef3 100644 --- a/plugins/sudoers/parse.c +++ b/plugins/sudoers/parse.c @@ -43,7 +43,7 @@ #include "sudoers.h" #include "parse.h" -#include "lbuf.h" +#include "sudo_lbuf.h" #include /* Characters that must be quoted in sudoers */ @@ -66,9 +66,10 @@ struct sudo_nss sudo_nss_file = { /* * Local prototypes. */ -static int display_bound_defaults(int dtype, struct lbuf *lbuf); -static void print_member(struct lbuf *lbuf, struct member *m, int alias_type); -static void print_member2(struct lbuf *lbuf, struct member *m, +static int display_bound_defaults(int dtype, struct sudo_lbuf *lbuf); +static void print_member(struct sudo_lbuf *lbuf, struct member *m, + int alias_type); +static void print_member2(struct sudo_lbuf *lbuf, struct member *m, const char *separator, int alias_type); int @@ -291,40 +292,40 @@ sudo_file_lookup(struct sudo_nss *nss, int validated, int pwflag) static void sudo_file_append_cmnd(struct cmndspec *cs, struct cmndtag *tags, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { debug_decl(sudo_file_append_cmnd, SUDO_DEBUG_NSS) #ifdef HAVE_PRIV_SET if (cs->privs) - lbuf_append(lbuf, "PRIVS=\"%s\" ", cs->privs); + sudo_lbuf_append(lbuf, "PRIVS=\"%s\" ", cs->privs); if (cs->limitprivs) - lbuf_append(lbuf, "LIMITPRIVS=\"%s\" ", cs->limitprivs); + sudo_lbuf_append(lbuf, "LIMITPRIVS=\"%s\" ", cs->limitprivs); #endif /* HAVE_PRIV_SET */ #ifdef HAVE_SELINUX if (cs->role) - lbuf_append(lbuf, "ROLE=%s ", cs->role); + sudo_lbuf_append(lbuf, "ROLE=%s ", cs->role); if (cs->type) - lbuf_append(lbuf, "TYPE=%s ", cs->type); + sudo_lbuf_append(lbuf, "TYPE=%s ", cs->type); #endif /* HAVE_SELINUX */ if (TAG_CHANGED(setenv)) { - lbuf_append(lbuf, cs->tags.setenv ? "SETENV: " : "NOSETENV: "); + sudo_lbuf_append(lbuf, cs->tags.setenv ? "SETENV: " : "NOSETENV: "); tags->setenv = cs->tags.setenv; } if (TAG_CHANGED(noexec)) { - lbuf_append(lbuf, cs->tags.noexec ? "NOEXEC: " : "EXEC: "); + sudo_lbuf_append(lbuf, cs->tags.noexec ? "NOEXEC: " : "EXEC: "); tags->noexec = cs->tags.noexec; } if (TAG_CHANGED(nopasswd)) { - lbuf_append(lbuf, cs->tags.nopasswd ? "NOPASSWD: " : "PASSWD: "); + sudo_lbuf_append(lbuf, cs->tags.nopasswd ? "NOPASSWD: " : "PASSWD: "); tags->nopasswd = cs->tags.nopasswd; } if (TAG_CHANGED(log_input)) { - lbuf_append(lbuf, cs->tags.log_input ? "LOG_INPUT: " : "NOLOG_INPUT: "); + sudo_lbuf_append(lbuf, cs->tags.log_input ? "LOG_INPUT: " : "NOLOG_INPUT: "); tags->log_input = cs->tags.log_input; } if (TAG_CHANGED(log_output)) { - lbuf_append(lbuf, cs->tags.log_output ? "LOG_OUTPUT: " : "NOLOG_OUTPUT: "); + sudo_lbuf_append(lbuf, cs->tags.log_output ? "LOG_OUTPUT: " : "NOLOG_OUTPUT: "); tags->log_output = cs->tags.log_output; } print_member(lbuf, cs->cmnd, CMNDALIAS); @@ -338,7 +339,7 @@ sudo_file_append_cmnd(struct cmndspec *cs, struct cmndtag *tags, static int sudo_file_display_priv_short(struct passwd *pw, struct userspec *us, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct cmndspec *cs, *prev_cs; struct member *m; @@ -360,41 +361,41 @@ sudo_file_display_priv_short(struct passwd *pw, struct userspec *us, TAILQ_FOREACH(cs, &priv->cmndlist, entries) { if (RUNAS_CHANGED(cs, prev_cs)) { if (cs != TAILQ_FIRST(&priv->cmndlist)) - lbuf_append(lbuf, "\n"); - lbuf_append(lbuf, " ("); + sudo_lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, " ("); if (cs->runasuserlist != NULL) { TAILQ_FOREACH(m, cs->runasuserlist, entries) { if (m != TAILQ_FIRST(cs->runasuserlist)) - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); print_member(lbuf, m, RUNASALIAS); } } else if (cs->runasgrouplist == NULL) { - lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "%s", def_runas_default); } else { - lbuf_append(lbuf, "%s", pw->pw_name); + sudo_lbuf_append(lbuf, "%s", pw->pw_name); } if (cs->runasgrouplist != NULL) { - lbuf_append(lbuf, " : "); + sudo_lbuf_append(lbuf, " : "); TAILQ_FOREACH(m, cs->runasgrouplist, entries) { if (m != TAILQ_FIRST(cs->runasgrouplist)) - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); print_member(lbuf, m, RUNASALIAS); } } - lbuf_append(lbuf, ") "); + sudo_lbuf_append(lbuf, ") "); tags.noexec = UNSPEC; tags.setenv = UNSPEC; tags.nopasswd = UNSPEC; tags.log_input = UNSPEC; tags.log_output = UNSPEC; } else if (cs != TAILQ_FIRST(&priv->cmndlist)) { - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); } sudo_file_append_cmnd(cs, &tags, lbuf); prev_cs = cs; nfound++; } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); } debug_return_int(nfound); } @@ -435,7 +436,7 @@ new_long_entry(struct cmndspec *cs, struct cmndspec *prev_cs) static int sudo_file_display_priv_long(struct passwd *pw, struct userspec *us, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct cmndspec *cs, *prev_cs; struct member *m; @@ -449,64 +450,64 @@ sudo_file_display_priv_long(struct passwd *pw, struct userspec *us, prev_cs = NULL; TAILQ_FOREACH(cs, &priv->cmndlist, entries) { if (new_long_entry(cs, prev_cs)) { - lbuf_append(lbuf, _("\nSudoers entry:\n")); - lbuf_append(lbuf, _(" RunAsUsers: ")); + sudo_lbuf_append(lbuf, _("\nSudoers entry:\n")); + sudo_lbuf_append(lbuf, _(" RunAsUsers: ")); if (cs->runasuserlist != NULL) { TAILQ_FOREACH(m, cs->runasuserlist, entries) { if (m != TAILQ_FIRST(cs->runasuserlist)) - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); print_member(lbuf, m, RUNASALIAS); } } else if (cs->runasgrouplist == NULL) { - lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "%s", def_runas_default); } else { - lbuf_append(lbuf, "%s", pw->pw_name); + sudo_lbuf_append(lbuf, "%s", pw->pw_name); } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); if (cs->runasgrouplist != NULL) { - lbuf_append(lbuf, _(" RunAsGroups: ")); + sudo_lbuf_append(lbuf, _(" RunAsGroups: ")); TAILQ_FOREACH(m, cs->runasgrouplist, entries) { if (m != TAILQ_FIRST(cs->runasgrouplist)) - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); print_member(lbuf, m, RUNASALIAS); } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); } olen = lbuf->len; - lbuf_append(lbuf, _(" Options: ")); + sudo_lbuf_append(lbuf, _(" Options: ")); if (TAG_SET(cs->tags.setenv)) - lbuf_append(lbuf, "%ssetenv, ", cs->tags.setenv ? "" : "!"); + sudo_lbuf_append(lbuf, "%ssetenv, ", cs->tags.setenv ? "" : "!"); if (TAG_SET(cs->tags.noexec)) - lbuf_append(lbuf, "%snoexec, ", cs->tags.noexec ? "" : "!"); + sudo_lbuf_append(lbuf, "%snoexec, ", cs->tags.noexec ? "" : "!"); if (TAG_SET(cs->tags.nopasswd)) - lbuf_append(lbuf, "%sauthenticate, ", cs->tags.nopasswd ? "!" : ""); + sudo_lbuf_append(lbuf, "%sauthenticate, ", cs->tags.nopasswd ? "!" : ""); if (TAG_SET(cs->tags.log_input)) - lbuf_append(lbuf, "%slog_input, ", cs->tags.log_input ? "" : "!"); + sudo_lbuf_append(lbuf, "%slog_input, ", cs->tags.log_input ? "" : "!"); if (TAG_SET(cs->tags.log_output)) - lbuf_append(lbuf, "%slog_output, ", cs->tags.log_output ? "" : "!"); + sudo_lbuf_append(lbuf, "%slog_output, ", cs->tags.log_output ? "" : "!"); if (lbuf->buf[lbuf->len - 2] == ',') { lbuf->len -= 2; /* remove trailing ", " */ - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); } else { lbuf->len = olen; /* no options */ } #ifdef HAVE_PRIV_SET if (cs->privs) - lbuf_append(lbuf, " Privs: %s\n", cs->privs); + sudo_lbuf_append(lbuf, " Privs: %s\n", cs->privs); if (cs->limitprivs) - lbuf_append(lbuf, " Limitprivs: %s\n", cs->limitprivs); + sudo_lbuf_append(lbuf, " Limitprivs: %s\n", cs->limitprivs); #endif /* HAVE_PRIV_SET */ #ifdef HAVE_SELINUX if (cs->role) - lbuf_append(lbuf, " Role: %s\n", cs->role); + sudo_lbuf_append(lbuf, " Role: %s\n", cs->role); if (cs->type) - lbuf_append(lbuf, " Type: %s\n", cs->type); + sudo_lbuf_append(lbuf, " Type: %s\n", cs->type); #endif /* HAVE_SELINUX */ - lbuf_append(lbuf, _(" Commands:\n")); + sudo_lbuf_append(lbuf, _(" Commands:\n")); } - lbuf_append(lbuf, "\t"); + sudo_lbuf_append(lbuf, "\t"); print_member2(lbuf, cs->cmnd, "\n\t", CMNDALIAS); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); prev_cs = cs; nfound++; } @@ -516,7 +517,7 @@ sudo_file_display_priv_long(struct passwd *pw, struct userspec *us, int sudo_file_display_privs(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct userspec *us; int nfound = 0; @@ -543,7 +544,7 @@ done: */ int sudo_file_display_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct defaults *d; char *prefix; @@ -573,16 +574,16 @@ sudo_file_display_defaults(struct sudo_nss *nss, struct passwd *pw, continue; } if (d->val != NULL) { - lbuf_append(lbuf, "%s%s%s", prefix, d->var, + sudo_lbuf_append(lbuf, "%s%s%s", prefix, d->var, d->op == '+' ? "+=" : d->op == '-' ? "-=" : "="); if (strpbrk(d->val, " \t") != NULL) { - lbuf_append(lbuf, "\""); - lbuf_append_quoted(lbuf, "\"", "%s", d->val); - lbuf_append(lbuf, "\""); + sudo_lbuf_append(lbuf, "\""); + sudo_lbuf_append_quoted(lbuf, "\"", "%s", d->val); + sudo_lbuf_append(lbuf, "\""); } else - lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", d->val); + sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", d->val); } else - lbuf_append(lbuf, "%s%s%s", prefix, + sudo_lbuf_append(lbuf, "%s%s%s", prefix, d->op == false ? "!" : "", d->var); prefix = ", "; nfound++; @@ -596,7 +597,7 @@ done: */ int sudo_file_display_bound_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { int nfound = 0; debug_decl(sudo_file_display_bound_defaults, SUDO_DEBUG_NSS) @@ -612,7 +613,7 @@ sudo_file_display_bound_defaults(struct sudo_nss *nss, struct passwd *pw, * Display Defaults entries of the given type. */ static int -display_bound_defaults(int dtype, struct lbuf *lbuf) +display_bound_defaults(int dtype, struct sudo_lbuf *lbuf) { struct defaults *d; struct member_list *binding = NULL; @@ -649,21 +650,21 @@ display_bound_defaults(int dtype, struct lbuf *lbuf) if (binding != d->binding) { binding = d->binding; if (nfound != 1) - lbuf_append(lbuf, "\n"); - lbuf_append(lbuf, " Defaults%s", dsep); + sudo_lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, " Defaults%s", dsep); TAILQ_FOREACH(m, binding, entries) { if (m != TAILQ_FIRST(binding)) - lbuf_append(lbuf, ","); + sudo_lbuf_append(lbuf, ","); print_member(lbuf, m, atype); - lbuf_append(lbuf, " "); + sudo_lbuf_append(lbuf, " "); } } else - lbuf_append(lbuf, ", "); + sudo_lbuf_append(lbuf, ", "); if (d->val != NULL) { - lbuf_append(lbuf, "%s%s%s", d->var, d->op == '+' ? "+=" : + sudo_lbuf_append(lbuf, "%s%s%s", d->var, d->op == '+' ? "+=" : d->op == '-' ? "-=" : "=", d->val); } else - lbuf_append(lbuf, "%s%s", d->op == false ? "!" : "", d->var); + sudo_lbuf_append(lbuf, "%s%s", d->op == false ? "!" : "", d->var); } debug_return_int(nfound); @@ -720,7 +721,7 @@ done: * Print the contents of a struct member to stdout */ static void -_print_member(struct lbuf *lbuf, char *name, int type, int negated, +_print_member(struct sudo_lbuf *lbuf, char *name, int type, int negated, const char *separator, int alias_type) { struct alias *a; @@ -730,26 +731,26 @@ _print_member(struct lbuf *lbuf, char *name, int type, int negated, switch (type) { case ALL: - lbuf_append(lbuf, "%sALL", negated ? "!" : ""); + sudo_lbuf_append(lbuf, "%sALL", negated ? "!" : ""); break; case MYSELF: - lbuf_append(lbuf, "%s%s", negated ? "!" : "", user_name); + sudo_lbuf_append(lbuf, "%s%s", negated ? "!" : "", user_name); break; case COMMAND: c = (struct sudo_command *) name; if (negated) - lbuf_append(lbuf, "!"); - lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->cmnd); + sudo_lbuf_append(lbuf, "!"); + sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->cmnd); if (c->args) { - lbuf_append(lbuf, " "); - lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->args); + sudo_lbuf_append(lbuf, " "); + sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->args); } break; case ALIAS: if ((a = alias_get(name, alias_type)) != NULL) { TAILQ_FOREACH(m, &a->members, entries) { if (m != TAILQ_FIRST(&a->members)) - lbuf_append(lbuf, "%s", separator); + sudo_lbuf_append(lbuf, "%s", separator); _print_member(lbuf, m->name, m->type, negated ? !m->negated : m->negated, separator, alias_type); @@ -759,20 +760,20 @@ _print_member(struct lbuf *lbuf, char *name, int type, int negated, } /* FALLTHROUGH */ default: - lbuf_append(lbuf, "%s%s", negated ? "!" : "", name); + sudo_lbuf_append(lbuf, "%s%s", negated ? "!" : "", name); break; } debug_return; } static void -print_member(struct lbuf *lbuf, struct member *m, int alias_type) +print_member(struct sudo_lbuf *lbuf, struct member *m, int alias_type) { _print_member(lbuf, m->name, m->type, m->negated, ", ", alias_type); } static void -print_member2(struct lbuf *lbuf, struct member *m, const char *separator, +print_member2(struct sudo_lbuf *lbuf, struct member *m, const char *separator, int alias_type) { _print_member(lbuf, m->name, m->type, m->negated, separator, alias_type); diff --git a/plugins/sudoers/sssd.c b/plugins/sudoers/sssd.c index e3e73742a..7a700166a 100644 --- a/plugins/sudoers/sssd.c +++ b/plugins/sudoers/sssd.c @@ -52,7 +52,7 @@ #include "sudoers.h" #include "parse.h" -#include "lbuf.h" +#include "sudo_lbuf.h" #include "sudo_dso.h" #include "sudo_debug.h" @@ -108,13 +108,13 @@ static int sudo_sss_setdefs(struct sudo_nss *nss); static int sudo_sss_lookup(struct sudo_nss *nss, int ret, int pwflag); static int sudo_sss_display_cmnd(struct sudo_nss *nss, struct passwd *pw); static int sudo_sss_display_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf); + struct sudo_lbuf *lbuf); static int sudo_sss_display_bound_defaults(struct sudo_nss *nss, - struct passwd *pw, struct lbuf *lbuf); + struct passwd *pw, struct sudo_lbuf *lbuf); static int sudo_sss_display_privs(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf); + struct sudo_lbuf *sudo_lbuf); static struct sss_sudo_result *sudo_sss_result_get(struct sudo_nss *nss, @@ -1144,7 +1144,7 @@ done: static int sudo_sss_display_defaults(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct sudo_sss_handle *handle = nss->handle; struct sss_sudo_rule *rule; @@ -1196,7 +1196,7 @@ sudo_sss_display_defaults(struct sudo_nss *nss, struct passwd *pw, for (j = 0; val_array[j] != NULL; ++j) { val = val_array[j]; - lbuf_append(lbuf, "%s%s", prefix, val); + sudo_lbuf_append(lbuf, "%s%s", prefix, val); prefix = ", "; count++; } @@ -1213,7 +1213,7 @@ done: // ok static int sudo_sss_display_bound_defaults(struct sudo_nss *nss, - struct passwd *pw, struct lbuf *lbuf) + struct passwd *pw, struct sudo_lbuf *lbuf) { debug_decl(sudo_sss_display_bound_defaults, SUDO_DEBUG_SSSD); debug_return_int(0); @@ -1221,30 +1221,30 @@ sudo_sss_display_bound_defaults(struct sudo_nss *nss, static int sudo_sss_display_entry_long(struct sudo_sss_handle *handle, - struct sss_sudo_rule *rule, struct lbuf *lbuf) + struct sss_sudo_rule *rule, struct sudo_lbuf *lbuf) { char **val_array = NULL; int count = 0, i; debug_decl(sudo_sss_display_entry_long, SUDO_DEBUG_SSSD); /* get the RunAsUser Values from the entry */ - lbuf_append(lbuf, " RunAsUsers: "); + sudo_lbuf_append(lbuf, " RunAsUsers: "); switch (handle->fn_get_values(rule, "sudoRunAsUser", &val_array)) { case 0: for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); break; case ENOENT: switch (handle->fn_get_values(rule, "sudoRunAs", &val_array)) { case 0: for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); break; case ENOENT: sudo_debug_printf(SUDO_DEBUG_INFO, "No result."); - lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "%s", def_runas_default); break; default: sudo_debug_printf(SUDO_DEBUG_INFO, "handle->fn_get_values(sudoRunAs): != 0"); @@ -1255,16 +1255,16 @@ sudo_sss_display_entry_long(struct sudo_sss_handle *handle, sudo_debug_printf(SUDO_DEBUG_INFO, "handle->fn_get_values(sudoRunAsUser): != 0"); debug_return_int(count); } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); /* get the RunAsGroup Values from the entry */ switch (handle->fn_get_values(rule, "sudoRunAsGroup", &val_array)) { case 0: - lbuf_append(lbuf, " RunAsGroups: "); + sudo_lbuf_append(lbuf, " RunAsGroups: "); for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); break; case ENOENT: sudo_debug_printf(SUDO_DEBUG_INFO, "No result."); @@ -1278,11 +1278,11 @@ sudo_sss_display_entry_long(struct sudo_sss_handle *handle, /* get the Option Values from the entry */ switch (handle->fn_get_values(rule, "sudoOption", &val_array)) { case 0: - lbuf_append(lbuf, " Options: "); + sudo_lbuf_append(lbuf, " Options: "); for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); break; case ENOENT: sudo_debug_printf(SUDO_DEBUG_INFO, "No result."); @@ -1295,9 +1295,9 @@ sudo_sss_display_entry_long(struct sudo_sss_handle *handle, /* Get the command values from the entry. */ switch (handle->fn_get_values(rule, "sudoCommand", &val_array)) { case 0: - lbuf_append(lbuf, _(" Commands:\n")); + sudo_lbuf_append(lbuf, _(" Commands:\n")); for (i = 0; val_array[i] != NULL; ++i) { - lbuf_append(lbuf, "\t%s\n", val_array[i]); + sudo_lbuf_append(lbuf, "\t%s\n", val_array[i]); count++; } handle->fn_free_values(val_array); @@ -1316,19 +1316,19 @@ sudo_sss_display_entry_long(struct sudo_sss_handle *handle, static int sudo_sss_display_entry_short(struct sudo_sss_handle *handle, - struct sss_sudo_rule *rule, struct lbuf *lbuf) + struct sss_sudo_rule *rule, struct sudo_lbuf *lbuf) { char **val_array = NULL; int count = 0, i; debug_decl(sudo_sss_display_entry_short, SUDO_DEBUG_SSSD); - lbuf_append(lbuf, " ("); + sudo_lbuf_append(lbuf, " ("); /* get the RunAsUser Values from the entry */ switch (handle->fn_get_values(rule, "sudoRunAsUser", &val_array)) { case 0: for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); break; case ENOENT: @@ -1337,12 +1337,12 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, switch (handle->fn_get_values(rule, "sudoRunAs", &val_array)) { case 0: for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); break; case ENOENT: sudo_debug_printf(SUDO_DEBUG_INFO, "No result."); - lbuf_append(lbuf, "%s", def_runas_default); + sudo_lbuf_append(lbuf, "%s", def_runas_default); break; default: sudo_debug_printf(SUDO_DEBUG_INFO, @@ -1359,9 +1359,9 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, /* get the RunAsGroup Values from the entry */ switch (handle->fn_get_values(rule, "sudoRunAsGroup", &val_array)) { case 0: - lbuf_append(lbuf, " : "); + sudo_lbuf_append(lbuf, " : "); for (i = 0; val_array[i] != NULL; ++i) - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); handle->fn_free_values(val_array); break; case ENOENT: @@ -1372,7 +1372,7 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, debug_return_int(count); } - lbuf_append(lbuf, ") "); + sudo_lbuf_append(lbuf, ") "); /* get the Option Values from the entry */ switch (handle->fn_get_values(rule, "sudoOption", &val_array)) { @@ -1382,13 +1382,13 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, if (*cp == '!') cp++; if (strcmp(cp, "authenticate") == 0) - lbuf_append(lbuf, val_array[i][0] == '!' ? + sudo_lbuf_append(lbuf, val_array[i][0] == '!' ? "NOPASSWD: " : "PASSWD: "); else if (strcmp(cp, "noexec") == 0) - lbuf_append(lbuf, val_array[i][0] == '!' ? + sudo_lbuf_append(lbuf, val_array[i][0] == '!' ? "EXEC: " : "NOEXEC: "); else if (strcmp(cp, "setenv") == 0) - lbuf_append(lbuf, val_array[i][0] == '!' ? + sudo_lbuf_append(lbuf, val_array[i][0] == '!' ? "NOSETENV: " : "SETENV: "); } handle->fn_free_values(val_array); @@ -1406,7 +1406,7 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, switch (handle->fn_get_values(rule, "sudoCommand", &val_array)) { case 0: for (i = 0; val_array[i] != NULL; ++i) { - lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); + sudo_lbuf_append(lbuf, "%s%s", i != 0 ? ", " : "", val_array[i]); count++; } handle->fn_free_values(val_array); @@ -1419,14 +1419,14 @@ sudo_sss_display_entry_short(struct sudo_sss_handle *handle, "handle->fn_get_values(sudoCommand): != 0"); debug_return_int(count); } - lbuf_append(lbuf, "\n"); + sudo_lbuf_append(lbuf, "\n"); debug_return_int(count); } static int sudo_sss_display_privs(struct sudo_nss *nss, struct passwd *pw, - struct lbuf *lbuf) + struct sudo_lbuf *lbuf) { struct sudo_sss_handle *handle = nss->handle; diff --git a/plugins/sudoers/sudo_nss.c b/plugins/sudoers/sudo_nss.c index e5cc41f21..8dfe94b7e 100644 --- a/plugins/sudoers/sudo_nss.c +++ b/plugins/sudoers/sudo_nss.c @@ -42,7 +42,7 @@ #include #include "sudoers.h" -#include "lbuf.h" +#include "sudo_lbuf.h" extern struct sudo_nss sudo_nss_file; #ifdef HAVE_LDAP @@ -270,7 +270,7 @@ void display_privs(struct sudo_nss_list *snl, struct passwd *pw) { struct sudo_nss *nss; - struct lbuf defs, privs; + struct sudo_lbuf defs, privs; struct stat sb; int cols, count, olen; debug_decl(display_privs, SUDO_DEBUG_NSS) @@ -278,36 +278,36 @@ display_privs(struct sudo_nss_list *snl, struct passwd *pw) cols = sudo_user.cols; if (fstat(STDOUT_FILENO, &sb) == 0 && S_ISFIFO(sb.st_mode)) cols = 0; - lbuf_init(&defs, output, 4, NULL, cols); - lbuf_init(&privs, output, 8, NULL, cols); + sudo_lbuf_init(&defs, output, 4, NULL, cols); + sudo_lbuf_init(&privs, output, 8, NULL, cols); /* Display defaults from all sources. */ - lbuf_append(&defs, _("Matching Defaults entries for %s on %s:\n"), + sudo_lbuf_append(&defs, _("Matching Defaults entries for %s on %s:\n"), pw->pw_name, user_srunhost); count = 0; TAILQ_FOREACH(nss, snl, entries) { count += nss->display_defaults(nss, pw, &defs); } if (count) - lbuf_append(&defs, "\n\n"); + sudo_lbuf_append(&defs, "\n\n"); else defs.len = 0; /* Display Runas and Cmnd-specific defaults from all sources. */ olen = defs.len; - lbuf_append(&defs, _("Runas and Command-specific defaults for %s:\n"), + sudo_lbuf_append(&defs, _("Runas and Command-specific defaults for %s:\n"), pw->pw_name); count = 0; TAILQ_FOREACH(nss, snl, entries) { count += nss->display_bound_defaults(nss, pw, &defs); } if (count) - lbuf_append(&defs, "\n\n"); + sudo_lbuf_append(&defs, "\n\n"); else defs.len = olen; /* Display privileges from all sources. */ - lbuf_append(&privs, + sudo_lbuf_append(&privs, _("User %s may run the following commands on %s:\n"), pw->pw_name, user_srunhost); count = 0; @@ -317,14 +317,14 @@ display_privs(struct sudo_nss_list *snl, struct passwd *pw) if (count == 0) { defs.len = 0; privs.len = 0; - lbuf_append(&privs, _("User %s is not allowed to run sudo on %s.\n"), + sudo_lbuf_append(&privs, _("User %s is not allowed to run sudo on %s.\n"), pw->pw_name, user_shost); } - lbuf_print(&defs); - lbuf_print(&privs); + sudo_lbuf_print(&defs); + sudo_lbuf_print(&privs); - lbuf_destroy(&defs); - lbuf_destroy(&privs); + sudo_lbuf_destroy(&defs); + sudo_lbuf_destroy(&privs); debug_return; } diff --git a/plugins/sudoers/sudo_nss.h b/plugins/sudoers/sudo_nss.h index 40c3fa009..5d6aa44ec 100644 --- a/plugins/sudoers/sudo_nss.h +++ b/plugins/sudoers/sudo_nss.h @@ -17,7 +17,7 @@ #ifndef _SUDOERS_NSS_H #define _SUDOERS_NSS_H -struct lbuf; +struct sudo_lbuf; struct passwd; struct sudo_nss { @@ -28,9 +28,9 @@ struct sudo_nss { int (*setdefs)(struct sudo_nss *nss); int (*lookup)(struct sudo_nss *nss, int, int); int (*display_cmnd)(struct sudo_nss *nss, struct passwd *); - int (*display_defaults)(struct sudo_nss *nss, struct passwd *, struct lbuf *); - int (*display_bound_defaults)(struct sudo_nss *nss, struct passwd *, struct lbuf *); - int (*display_privs)(struct sudo_nss *nss, struct passwd *, struct lbuf *); + int (*display_defaults)(struct sudo_nss *nss, struct passwd *, struct sudo_lbuf *); + int (*display_bound_defaults)(struct sudo_nss *nss, struct passwd *, struct sudo_lbuf *); + int (*display_privs)(struct sudo_nss *nss, struct passwd *, struct sudo_lbuf *); void *handle; short ret_if_found; short ret_if_notfound; diff --git a/plugins/sudoers/sudoers.h b/plugins/sudoers/sudoers.h index 59be378b6..6712aa179 100644 --- a/plugins/sudoers/sudoers.h +++ b/plugins/sudoers/sudoers.h @@ -214,7 +214,7 @@ struct sudo_user { #endif #define ROOT_GID 0 -struct lbuf; +struct sudo_lbuf; struct passwd; struct stat; struct timeval; @@ -256,9 +256,9 @@ int sudo_file_setdefs(struct sudo_nss *); int sudo_file_lookup(struct sudo_nss *, int, int); int sudo_file_parse(struct sudo_nss *); int sudo_file_display_cmnd(struct sudo_nss *, struct passwd *); -int sudo_file_display_defaults(struct sudo_nss *, struct passwd *, struct lbuf *); -int sudo_file_display_bound_defaults(struct sudo_nss *, struct passwd *, struct lbuf *); -int sudo_file_display_privs(struct sudo_nss *, struct passwd *, struct lbuf *); +int sudo_file_display_defaults(struct sudo_nss *, struct passwd *, struct sudo_lbuf *); +int sudo_file_display_bound_defaults(struct sudo_nss *, struct passwd *, struct sudo_lbuf *); +int sudo_file_display_privs(struct sudo_nss *, struct passwd *, struct sudo_lbuf *); /* set_perms.c */ bool rewind_perms(void); diff --git a/plugins/sudoers/toke.c b/plugins/sudoers/toke.c index 583d53dc9..a96e38d14 100644 --- a/plugins/sudoers/toke.c +++ b/plugins/sudoers/toke.c @@ -2003,7 +2003,7 @@ char *yytext; #include "parse.h" #include "toke.h" #include -#include "lbuf.h" +#include "sudo_lbuf.h" #include "secure_path.h" #ifdef HAVE_SHA224UPDATE @@ -4380,14 +4380,14 @@ int sudoers_trace_print(const char *msg) { static bool initialized; - static struct lbuf lbuf; + static struct sudo_lbuf lbuf; if (!initialized) { initialized = true; - lbuf_init(&lbuf, NULL, 0, NULL, 0); + sudo_lbuf_init(&lbuf, NULL, 0, NULL, 0); } - lbuf_append(&lbuf, "%s", msg); + sudo_lbuf_append(&lbuf, "%s", msg); /* XXX - assumes a final newline */ if (strchr(msg, '\n') != NULL) { diff --git a/plugins/sudoers/toke.l b/plugins/sudoers/toke.l index 6dc042345..db3b82d26 100644 --- a/plugins/sudoers/toke.l +++ b/plugins/sudoers/toke.l @@ -75,7 +75,7 @@ #include "parse.h" #include "toke.h" #include -#include "lbuf.h" +#include "sudo_lbuf.h" #include "secure_path.h" #ifdef HAVE_SHA224UPDATE @@ -1121,14 +1121,14 @@ int sudoers_trace_print(const char *msg) { static bool initialized; - static struct lbuf lbuf; + static struct sudo_lbuf lbuf; if (!initialized) { initialized = true; - lbuf_init(&lbuf, NULL, 0, NULL, 0); + sudo_lbuf_init(&lbuf, NULL, 0, NULL, 0); } - lbuf_append(&lbuf, "%s", msg); + sudo_lbuf_append(&lbuf, "%s", msg); /* XXX - assumes a final newline */ if (strchr(msg, '\n') != NULL) { diff --git a/src/Makefile.in b/src/Makefile.in index f45d1bf09..fc689633f 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -292,8 +292,8 @@ openbsd.o: $(srcdir)/openbsd.c $(incdir)/alloc.h $(incdir)/compat/stdbool.h \ parse_args.o: $(srcdir)/parse_args.c $(incdir)/alloc.h \ $(incdir)/compat/getopt.h $(incdir)/compat/stdbool.h \ $(incdir)/fatal.h $(incdir)/fileops.h $(incdir)/gettext.h \ - $(incdir)/lbuf.h $(incdir)/missing.h $(incdir)/queue.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/missing.h $(incdir)/queue.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_util.h $(srcdir)/sudo.h $(top_builddir)/config.h \ $(top_builddir)/pathnames.h ./sudo_usage.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/parse_args.c diff --git a/src/parse_args.c b/src/parse_args.c index e1ead7478..3234211c7 100644 --- a/src/parse_args.c +++ b/src/parse_args.c @@ -46,7 +46,7 @@ #include #include "sudo.h" -#include "lbuf.h" +#include "sudo_lbuf.h" #ifdef HAVE_GETOPT_LONG # include @@ -547,7 +547,7 @@ usage_out(const char *buf) void usage(int fatal) { - struct lbuf lbuf; + struct sudo_lbuf lbuf; char *uvec[6]; int i, ulen; @@ -571,13 +571,13 @@ usage(int fatal) * tty width. */ ulen = (int)strlen(getprogname()) + 8; - lbuf_init(&lbuf, fatal ? usage_err : usage_out, ulen, NULL, + sudo_lbuf_init(&lbuf, fatal ? usage_err : usage_out, ulen, NULL, user_details.ts_cols); for (i = 0; uvec[i] != NULL; i++) { - lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]); - lbuf_print(&lbuf); + sudo_lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]); + sudo_lbuf_print(&lbuf); } - lbuf_destroy(&lbuf); + sudo_lbuf_destroy(&lbuf); if (fatal) exit(1); } @@ -597,85 +597,85 @@ usage_excl(int fatal) static void help(void) { - struct lbuf lbuf; + struct sudo_lbuf lbuf; const int indent = 30; const char *pname = getprogname(); debug_decl(help, SUDO_DEBUG_ARGS) - lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols); + sudo_lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols); if (strcmp(pname, "sudoedit") == 0) - lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname); + sudo_lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname); else - lbuf_append(&lbuf, _("%s - execute a command as another user\n\n"), pname); - lbuf_print(&lbuf); + sudo_lbuf_append(&lbuf, _("%s - execute a command as another user\n\n"), pname); + sudo_lbuf_print(&lbuf); usage(0); - lbuf_append(&lbuf, _("\nOptions:\n")); - lbuf_append(&lbuf, " -A, --askpass %s\n", + sudo_lbuf_append(&lbuf, _("\nOptions:\n")); + sudo_lbuf_append(&lbuf, " -A, --askpass %s\n", _("use a helper program for password prompting")); #ifdef HAVE_BSD_AUTH_H - lbuf_append(&lbuf, " -a, --auth-type=type %s\n", + sudo_lbuf_append(&lbuf, " -a, --auth-type=type %s\n", _("use specified BSD authentication type")); #endif - lbuf_append(&lbuf, " -b, --background %s\n", + sudo_lbuf_append(&lbuf, " -b, --background %s\n", _("run command in the background")); - lbuf_append(&lbuf, " -C, --close-from=num %s\n", + sudo_lbuf_append(&lbuf, " -C, --close-from=num %s\n", _("close all file descriptors >= num")); #ifdef HAVE_LOGIN_CAP_H - lbuf_append(&lbuf, " -c, --login-class=class %s\n", + sudo_lbuf_append(&lbuf, " -c, --login-class=class %s\n", _("run command with the specified BSD login class")); #endif - lbuf_append(&lbuf, " -E, --preserve-env %s\n", + sudo_lbuf_append(&lbuf, " -E, --preserve-env %s\n", _("preserve user environment when running command")); - lbuf_append(&lbuf, " -e, --edit %s\n", + sudo_lbuf_append(&lbuf, " -e, --edit %s\n", _("edit files instead of running a command")); - lbuf_append(&lbuf, " -g, --group=group %s\n", + sudo_lbuf_append(&lbuf, " -g, --group=group %s\n", _("run command as the specified group name or ID")); - lbuf_append(&lbuf, " -H, --set-home %s\n", + sudo_lbuf_append(&lbuf, " -H, --set-home %s\n", _("set HOME variable to target user's home dir")); - lbuf_append(&lbuf, " -h, --help %s\n", + sudo_lbuf_append(&lbuf, " -h, --help %s\n", _("display help message and exit")); - lbuf_append(&lbuf, " -h, --host=host %s\n", + sudo_lbuf_append(&lbuf, " -h, --host=host %s\n", _("run command on host (if supported by plugin)")); - lbuf_append(&lbuf, " -i, --login %s\n", + sudo_lbuf_append(&lbuf, " -i, --login %s\n", _("run login shell as the target user; a command may also be specified")); - lbuf_append(&lbuf, " -K, --remove-timestamp %s\n", + sudo_lbuf_append(&lbuf, " -K, --remove-timestamp %s\n", _("remove timestamp file completely")); - lbuf_append(&lbuf, " -k, --reset-timestamp %s\n", + sudo_lbuf_append(&lbuf, " -k, --reset-timestamp %s\n", _("invalidate timestamp file")); - lbuf_append(&lbuf, " -l, --list %s\n", + sudo_lbuf_append(&lbuf, " -l, --list %s\n", _("list user's privileges or check a specific command; use twice for longer format")); - lbuf_append(&lbuf, " -n, --non-interactive %s\n", + sudo_lbuf_append(&lbuf, " -n, --non-interactive %s\n", _("non-interactive mode, no prompts are used")); - lbuf_append(&lbuf, " -P, --preserve-groups %s\n", + sudo_lbuf_append(&lbuf, " -P, --preserve-groups %s\n", _("preserve group vector instead of setting to target's")); - lbuf_append(&lbuf, " -p, --prompt=prompt %s\n", + sudo_lbuf_append(&lbuf, " -p, --prompt=prompt %s\n", _("use the specified password prompt")); #ifdef HAVE_SELINUX - lbuf_append(&lbuf, " -r, --role=role %s\n", + sudo_lbuf_append(&lbuf, " -r, --role=role %s\n", _("create SELinux security context with specified role")); #endif - lbuf_append(&lbuf, " -S, --stdin %s\n", + sudo_lbuf_append(&lbuf, " -S, --stdin %s\n", _("read password from standard input")); - lbuf_append(&lbuf, " -s, --shell %s\n", + sudo_lbuf_append(&lbuf, " -s, --shell %s\n", _("run shell as the target user; a command may also be specified")); #ifdef HAVE_SELINUX - lbuf_append(&lbuf, " -t, --type=type %s\n", + sudo_lbuf_append(&lbuf, " -t, --type=type %s\n", _("create SELinux security context with specified type")); #endif - lbuf_append(&lbuf, " -U, --other-user=user %s\n", + sudo_lbuf_append(&lbuf, " -U, --other-user=user %s\n", _("in list mode, display privileges for user")); - lbuf_append(&lbuf, " -u, --user=user %s\n", + sudo_lbuf_append(&lbuf, " -u, --user=user %s\n", _("run command (or edit file) as specified user name or ID")); - lbuf_append(&lbuf, " -V, --version %s\n", + sudo_lbuf_append(&lbuf, " -V, --version %s\n", _("display version information and exit")); - lbuf_append(&lbuf, " -v, --validate %s\n", + sudo_lbuf_append(&lbuf, " -v, --validate %s\n", _("update user's timestamp without running a command")); - lbuf_append(&lbuf, " -- %s\n", + sudo_lbuf_append(&lbuf, " -- %s\n", _("stop processing command line arguments")); - lbuf_print(&lbuf); - lbuf_destroy(&lbuf); + sudo_lbuf_print(&lbuf); + sudo_lbuf_destroy(&lbuf); sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, 0); exit(0); }