Code

test-subprocess: fix segfault without arguments
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>
Tue, 10 Apr 2012 19:07:34 +0000 (21:07 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 10 Apr 2012 19:28:20 +0000 (12:28 -0700)
Check if we even have a parameter before checking its value.  Running
this command without any arguments may not make a lot of sense, but
reacting with a segmentation fault is unduly harsh.

While we're at it, avoid casting argv by declaring it const right away.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
test-subprocess.c

index 8926bc52a9a6e2a16924664372a8af3ee2ed3136..f2d4c0d22bd418836eb47424a03d0e903246d92e 100644 (file)
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "run-command.h"
 
 #include "cache.h"
 #include "run-command.h"
 
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
 {
        struct child_process cp;
        int nogit = 0;
 {
        struct child_process cp;
        int nogit = 0;
@@ -9,12 +9,12 @@ int main(int argc, char **argv)
        setup_git_directory_gently(&nogit);
        if (nogit)
                die("No git repo found");
        setup_git_directory_gently(&nogit);
        if (nogit)
                die("No git repo found");
-       if (!strcmp(argv[1], "--setup-work-tree")) {
+       if (argc > 1 && !strcmp(argv[1], "--setup-work-tree")) {
                setup_work_tree();
                argv++;
        }
        memset(&cp, 0, sizeof(cp));
        cp.git_cmd = 1;
                setup_work_tree();
                argv++;
        }
        memset(&cp, 0, sizeof(cp));
        cp.git_cmd = 1;
-       cp.argv = (const char **)argv+1;
+       cp.argv = argv + 1;
        return run_command(&cp);
 }
        return run_command(&cp);
 }