]> granicus.if.org Git - sudo/commitdiff
Prevent "testsudoers -d username" from trying to malloc(0).
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 7 Nov 2011 13:44:05 +0000 (08:44 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 7 Nov 2011 13:44:05 +0000 (08:44 -0500)
plugins/sudoers/testsudoers.c

index d58e3538a917ec18b0df795dc25a89ce6f25ce6a..a2021a58aad330c181c803906523b50b736465ef 100644 (file)
@@ -190,11 +190,12 @@ main(int argc, char *argv[])
     if (argc < 2) {
        if (!dflag)
            usage();
-       user_name = "root";
+       user_name = argc ? *argv++ : "root";
        user_cmnd = user_base = "true";
+       argc = 0;
     } else {
-       user_name = *argv;
-       user_cmnd = *++argv;
+       user_name = *argv++;
+       user_cmnd = *argv++;
        if ((p = strrchr(user_cmnd, '/')) != NULL)
            user_base = p + 1;
        else
@@ -223,11 +224,11 @@ main(int argc, char *argv[])
        char *to, **from;
        size_t size, n;
 
-       for (size = 0, from = argv + 1; *from; from++)
+       for (size = 0, from = argv; *from; from++)
            size += strlen(*from) + 1;
 
        user_args = (char *) emalloc(size);
-       for (to = user_args, from = argv + 1; *from; from++) {
+       for (to = user_args, from = argv; *from; from++) {
            n = strlcpy(to, *from, size - (to - user_args));
            if (n >= size - (to - user_args))
                    errorx(1, _("internal error, init_vars() overflow"));