]> granicus.if.org Git - sudo/commitdiff
Don't assume argv[0] is set without first checking argc.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 5 Feb 2015 18:17:25 +0000 (11:17 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 5 Feb 2015 18:17:25 +0000 (11:17 -0700)
src/parse_args.c
src/sudo.c

index 3f7e5ccc1e5e7bf531efd7c16d8ef5167008a4f1..0681c5b481fa6b397141feab6ad1bcec697d97f3 100644 (file)
@@ -379,8 +379,10 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
     }
     env_add[nenv] = NULL;
 
-    argc -= optind;
-    argv += optind;
+    if (argc > 0) {
+       argc -= optind;
+       argv += optind;
+    }
 
     if (!mode) {
        /* Defer -k mode setting until we know whether it is a flag or not */
index 77858af2ab9147acd3b95977f508ff7245cc1c43..438a10ab0218cc6cfcd9c03a769571a481d35859 100644 (file)
@@ -183,7 +183,7 @@ main(int argc, char *argv[], char *envp[])
        NULL, NULL, sudo_conf_debug_files(getprogname()));
 
     /* Make sure we are setuid root. */
-    sudo_check_suid(argv[0]);
+    sudo_check_suid(argc > 0 ? argv[0] : "sudo");
 
     /* Reset signal mask, save signal state and make sure fds 0-2 are open. */
     (void) sigemptyset(&mask);