Make path-limiting be incremental when possible.
[gitweb.git] / exec_cmd.c
index 55af33bb7eeb4224ea583fce3008a3fb878d0fe6..590e738969ecfdd7ff2f23da36cdac917215313d 100644 (file)
@@ -13,7 +13,7 @@ void git_set_exec_path(const char *exec_path)
 
 
 /* Returns the highest-priority, location to look for git programs. */
-const char *git_exec_path()
+const char *git_exec_path(void)
 {
        const char *env;
 
@@ -29,17 +29,18 @@ const char *git_exec_path()
 }
 
 
-int execv_git_cmd(char **argv)
+int execv_git_cmd(const char **argv)
 {
        char git_command[PATH_MAX + 1];
-       char *tmp;
        int len, err, i;
        const char *paths[] = { current_exec_path,
                                getenv("GIT_EXEC_PATH"),
                                builtin_exec_path };
 
-       for (i = 0; i < sizeof(paths)/sizeof(paths[0]); ++i) {
+       for (i = 0; i < ARRAY_SIZE(paths); ++i) {
                const char *exec_dir = paths[i];
+               const char *tmp;
+
                if (!exec_dir) continue;
 
                if (*exec_dir != '/') {
@@ -82,7 +83,7 @@ int execv_git_cmd(char **argv)
                argv[0] = git_command;
 
                /* execve() can only ever return if it fails */
-               execve(git_command, argv, environ);
+               execve(git_command, (char **)argv, environ);
 
                err = errno;
 
@@ -93,11 +94,11 @@ int execv_git_cmd(char **argv)
 }
 
 
-int execl_git_cmd(char *cmd,...)
+int execl_git_cmd(const char *cmd,...)
 {
        int argc;
-       char *argv[MAX_ARGS + 1];
-       char *arg;
+       const char *argv[MAX_ARGS + 1];
+       const char *arg;
        va_list param;
 
        va_start(param, cmd);