run_hook(): check the executability of the hook before filling argv
authorStephan Beyer <s-beyer@gmx.net>
Fri, 16 Jan 2009 19:10:01 +0000 (20:10 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 18 Jan 2009 01:16:44 +0000 (17:16 -0800)
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
run-command.c

index 49810a835e8977d8c90a07cc5b965658e87fa0c4..fc54c07a932dbefe39ea98e4cfbb4a15d158b70d 100644 (file)
@@ -352,6 +352,9 @@ int run_hook(const char *index_file, const char *name, ...)
        int ret;
        int i;
 
+       if (access(git_path("hooks/%s", name), X_OK) < 0)
+               return 0;
+
        va_start(args, name);
        argv[0] = git_path("hooks/%s", name);
        i = 0;
@@ -362,9 +365,6 @@ int run_hook(const char *index_file, const char *name, ...)
        } while (argv[i]);
        va_end(args);
 
-       if (access(argv[0], X_OK) < 0)
-               return 0;
-
        memset(&hook, 0, sizeof(hook));
        hook.argv = argv;
        hook.no_stdin = 1;