Imported Upstream version 1.8.2
[debian/sudo] / plugins / sudoers / parse.c
index 985c4351afbb65ab8d2d1a27cfa70c1d82974a51..303d13500ab736f15fe8d8e76fc34f5ab8ae4b32 100644 (file)
@@ -112,7 +112,7 @@ sudo_file_parse(struct sudo_nss *nss)
     init_parser(sudoers_file, 0);
     yyin = nss->handle;
     if (yyparse() != 0 || parse_error) {
-       log_error(NO_EXIT, "parse error in %s near line %d",
+       log_error(NO_EXIT, _("parse error in %s near line %d"),
            errorfile, errorlineno);
        return -1;
     }
@@ -266,33 +266,28 @@ sudo_file_append_cmnd(struct cmndspec *cs, struct cmndtag *tags,
 
 #ifdef HAVE_SELINUX
     if (cs->role)
-       lbuf_append(lbuf, "ROLE=", cs->role, " ", NULL);
+       lbuf_append(lbuf, "ROLE=%s ", cs->role);
     if (cs->type)
-       lbuf_append(lbuf, "TYPE=", cs->type, " ", NULL);
+       lbuf_append(lbuf, "TYPE=%s ", cs->type);
 #endif /* HAVE_SELINUX */
     if (TAG_CHANGED(setenv)) {
-       lbuf_append(lbuf, cs->tags.setenv ? "SETENV: " :
-           "NOSETENV: ", NULL);
+       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: ", NULL);
+       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: ", NULL);
+       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: ", NULL);
+       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: ", NULL);
+       lbuf_append(lbuf, cs->tags.log_output ? "LOG_OUTPUT: " : "NOLOG_OUTPUT: ");
        tags->log_output = cs->tags.log_output;
     }
     m = cs->cmnd;
@@ -318,37 +313,37 @@ sudo_file_display_priv_short(struct passwd *pw, struct userspec *us,
        tags.nopasswd = UNSPEC;
        tags.log_input = UNSPEC;
        tags.log_output = UNSPEC;
-       lbuf_append(lbuf, "    ", NULL);
+       lbuf_append(lbuf, "    ");
        tq_foreach_fwd(&priv->cmndlist, cs) {
            if (cs != tq_first(&priv->cmndlist))
-               lbuf_append(lbuf, ", ", NULL);
-           lbuf_append(lbuf, "(", NULL);
+               lbuf_append(lbuf, ", ");
+           lbuf_append(lbuf, "(");
            if (!tq_empty(&cs->runasuserlist)) {
                tq_foreach_fwd(&cs->runasuserlist, m) {
                    if (m != tq_first(&cs->runasuserlist))
-                       lbuf_append(lbuf, ", ", NULL);
+                       lbuf_append(lbuf, ", ");
                    print_member(lbuf, m->name, m->type, m->negated,
                        RUNASALIAS);
                }
            } else if (tq_empty(&cs->runasgrouplist)) {
-               lbuf_append(lbuf, def_runas_default, NULL);
+               lbuf_append(lbuf, "%s", def_runas_default);
            } else {
-               lbuf_append(lbuf, pw->pw_name, NULL);
+               lbuf_append(lbuf, "%s", pw->pw_name);
            }
            if (!tq_empty(&cs->runasgrouplist)) {
-               lbuf_append(lbuf, " : ", NULL);
+               lbuf_append(lbuf, " : ");
                tq_foreach_fwd(&cs->runasgrouplist, m) {
                    if (m != tq_first(&cs->runasgrouplist))
-                       lbuf_append(lbuf, ", ", NULL);
+                       lbuf_append(lbuf, ", ");
                    print_member(lbuf, m->name, m->type, m->negated,
                        RUNASALIAS);
                }
            }
-           lbuf_append(lbuf, ") ", NULL);
+           lbuf_append(lbuf, ") ");
            sudo_file_append_cmnd(cs, &tags, lbuf);
            nfound++;
        }
-       lbuf_append(lbuf, "\n", NULL);
+       lbuf_append(lbuf, "\n");
     }
     return nfound;
 }
@@ -371,35 +366,35 @@ sudo_file_display_priv_long(struct passwd *pw, struct userspec *us,
        tags.nopasswd = UNSPEC;
        tags.log_input = UNSPEC;
        tags.log_output = UNSPEC;
-       lbuf_append(lbuf, "\nSudoers entry:\n", NULL);
+       lbuf_append(lbuf, _("\nSudoers entry:\n"));
        tq_foreach_fwd(&priv->cmndlist, cs) {
-           lbuf_append(lbuf, "    RunAsUsers: ", NULL);
+           lbuf_append(lbuf, _("    RunAsUsers: "));
            if (!tq_empty(&cs->runasuserlist)) {
                tq_foreach_fwd(&cs->runasuserlist, m) {
                    if (m != tq_first(&cs->runasuserlist))
-                       lbuf_append(lbuf, ", ", NULL);
+                       lbuf_append(lbuf, ", ");
                    print_member(lbuf, m->name, m->type, m->negated,
                        RUNASALIAS);
                }
            } else if (tq_empty(&cs->runasgrouplist)) {
-               lbuf_append(lbuf, def_runas_default, NULL);
+               lbuf_append(lbuf, "%s", def_runas_default);
            } else {
-               lbuf_append(lbuf, pw->pw_name, NULL);
+               lbuf_append(lbuf, "%s", pw->pw_name);
            }
-           lbuf_append(lbuf, "\n", NULL);
+           lbuf_append(lbuf, "\n");
            if (!tq_empty(&cs->runasgrouplist)) {
-               lbuf_append(lbuf, "    RunAsGroups: ", NULL);
+               lbuf_append(lbuf, _("    RunAsGroups: "));
                tq_foreach_fwd(&cs->runasgrouplist, m) {
                    if (m != tq_first(&cs->runasgrouplist))
-                       lbuf_append(lbuf, ", ", NULL);
+                       lbuf_append(lbuf, ", ");
                    print_member(lbuf, m->name, m->type, m->negated,
                        RUNASALIAS);
                }
-               lbuf_append(lbuf, "\n", NULL);
+               lbuf_append(lbuf, "\n");
            }
-           lbuf_append(lbuf, "    Commands:\n\t", NULL);
+           lbuf_append(lbuf, _("    Commands:\n\t"));
            sudo_file_append_cmnd(cs, &tags, lbuf);
-           lbuf_append(lbuf, "\n", NULL);
+           lbuf_append(lbuf, "\n");
            nfound++;
        }
     }
@@ -462,18 +457,18 @@ sudo_file_display_defaults(struct sudo_nss *nss, struct passwd *pw,
            case DEFAULTS_CMND:
                continue;
        }
-       lbuf_append(lbuf, prefix, NULL);
        if (d->val != NULL) {
-           lbuf_append(lbuf, d->var, d->op == '+' ? "+=" :
-               d->op == '-' ? "-=" : "=", NULL);
+           lbuf_append(lbuf, "%s%s%s", prefix, d->var,
+               d->op == '+' ? "+=" : d->op == '-' ? "-=" : "=");
            if (strpbrk(d->val, " \t") != NULL) {
-               lbuf_append(lbuf, "\"", NULL);
-               lbuf_append_quoted(lbuf, "\"", d->val, NULL);
-               lbuf_append(lbuf, "\"", NULL);
+               lbuf_append(lbuf, "\"");
+               lbuf_append_quoted(lbuf, "\"", "%s", d->val);
+               lbuf_append(lbuf, "\"");
            } else
-               lbuf_append_quoted(lbuf, SUDOERS_QUOTED, d->val, NULL);
+               lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", d->val);
        } else
-           lbuf_append(lbuf, d->op == FALSE ? "!" : "", d->var, NULL);
+           lbuf_append(lbuf, "%s%s%s", prefix,
+               d->op == FALSE ? "!" : "", d->var);
        prefix = ", ";
        nfound++;
     }
@@ -505,34 +500,29 @@ display_bound_defaults(int dtype, struct lbuf *lbuf)
 {
     struct defaults *d;
     struct member *m, *binding = NULL;
-    char *dname, *dsep;
+    char *dsep;
     int atype, nfound = 0;
 
     switch (dtype) {
        case DEFAULTS_HOST:
            atype = HOSTALIAS;
-           dname = "host";
            dsep = "@";
            break;
        case DEFAULTS_USER:
            atype = USERALIAS;
-           dname = "user";
            dsep = ":";
            break;
        case DEFAULTS_RUNAS:
            atype = RUNASALIAS;
-           dname = "runas";
            dsep = ">";
            break;
        case DEFAULTS_CMND:
            atype = CMNDALIAS;
-           dname = "cmnd";
            dsep = "!";
            break;
        default:
            return -1;
     }
-    /* sudo_printf(SUDO_CONV_INFO_MSG, "Per-%s Defaults entries:\n", dname); */
     tq_foreach_fwd(&defaults, d) {
        if (d->type != dtype)
            continue;
@@ -541,21 +531,21 @@ display_bound_defaults(int dtype, struct lbuf *lbuf)
        if (binding != tq_first(&d->binding)) {
            binding = tq_first(&d->binding);
            if (nfound != 1)
-               lbuf_append(lbuf, "\n", NULL);
-           lbuf_append(lbuf, "    Defaults", dsep, NULL);
+               lbuf_append(lbuf, "\n");
+           lbuf_append(lbuf, "    Defaults%s", dsep);
            for (m = binding; m != NULL; m = m->next) {
                if (m != binding)
-                   lbuf_append(lbuf, ",", NULL);
+                   lbuf_append(lbuf, ",");
                print_member(lbuf, m->name, m->type, m->negated, atype);
-               lbuf_append(lbuf, " ", NULL);
+               lbuf_append(lbuf, " ");
            }
        } else
-           lbuf_append(lbuf, ", ", NULL);
+           lbuf_append(lbuf, ", ");
        if (d->val != NULL) {
-           lbuf_append(lbuf, d->var, d->op == '+' ? "+=" :
-               d->op == '-' ? "-=" : "=", d->val, NULL);
+           lbuf_append(lbuf, "%s%s%s", d->var, d->op == '+' ? "+=" :
+               d->op == '-' ? "-=" : "=", d->val);
        } else
-           lbuf_append(lbuf, d->op == FALSE ? "!" : "", d->var, NULL);
+           lbuf_append(lbuf, "%s%s", d->op == FALSE ? "!" : "", d->var);
     }
 
     return nfound;
@@ -619,23 +609,23 @@ _print_member(struct lbuf *lbuf, char *name, int type, int negated,
 
     switch (type) {
        case ALL:
-           lbuf_append(lbuf, negated ? "!ALL" : "ALL", NULL);
+           lbuf_append(lbuf, "%sALL", negated ? "!" : "");
            break;
        case COMMAND:
            c = (struct sudo_command *) name;
            if (negated)
-               lbuf_append(lbuf, "!", NULL);
-           lbuf_append_quoted(lbuf, SUDOERS_QUOTED, c->cmnd, NULL);
+               lbuf_append(lbuf, "!");
+           lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->cmnd);
            if (c->args) {
-               lbuf_append(lbuf, " ", NULL);
-               lbuf_append_quoted(lbuf, SUDOERS_QUOTED, c->args, NULL);
+               lbuf_append(lbuf, " ");
+               lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", c->args);
            }
            break;
        case ALIAS:
            if ((a = alias_find(name, alias_type)) != NULL) {
                tq_foreach_fwd(&a->members, m) {
                    if (m != tq_first(&a->members))
-                       lbuf_append(lbuf, ", ", NULL);
+                       lbuf_append(lbuf, ", ");
                    _print_member(lbuf, m->name, m->type,
                        negated ? !m->negated : m->negated, alias_type);
                }
@@ -643,7 +633,7 @@ _print_member(struct lbuf *lbuf, char *name, int type, int negated,
            }
            /* FALLTHROUGH */
        default:
-           lbuf_append(lbuf, negated ? "!" : "", name, NULL);
+           lbuf_append(lbuf, "%s%s", negated ? "!" : "", name);
            break;
     }
 }