From: Todd C. Miller Date: Sat, 3 Feb 2018 13:18:47 +0000 (-0700) Subject: When outputting sudoers, if a word includes spaces, print it in X-Git-Tag: SUDO_1_8_23^2~156 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61b6ae64de194c496be08c5ba3570ab1cdeca890;p=sudo When outputting sudoers, if a word includes spaces, print it in double quotes. Also escape spaces in the command path. --- diff --git a/plugins/sudoers/cvtsudoers.c b/plugins/sudoers/cvtsudoers.c index 877c24783..52223101b 100644 --- a/plugins/sudoers/cvtsudoers.c +++ b/plugins/sudoers/cvtsudoers.c @@ -252,7 +252,7 @@ print_member_sudoers(struct sudo_lbuf *lbuf, struct member *m) c = (struct sudo_command *)m->name; if (m->negated) sudo_lbuf_append(lbuf, "!"); - sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->cmnd); + sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED" \t", "%s", c->cmnd); if (c->args) { sudo_lbuf_append(lbuf, " "); sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->args); @@ -264,8 +264,14 @@ print_member_sudoers(struct sudo_lbuf *lbuf, struct member *m) m->name[strspn(m->name + 1, "0123456789") + 1] == '\0') { sudo_lbuf_append(lbuf, "%s%s", m->negated ? "!" : "", m->name); } else { - sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s%s", - m->negated ? "!" : "", m->name); + if (strpbrk(m->name, " \t") != NULL) { + sudo_lbuf_append(lbuf, "\""); + sudo_lbuf_append_quoted(lbuf, "\"", "%s", m->name); + sudo_lbuf_append(lbuf, "\""); + } else { + sudo_lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s%s", + m->negated ? "!" : "", m->name); + } } break; }