diff options
Diffstat (limited to '')
-rw-r--r--source/filter.c7
1 file changed, 4 insertions, 3 deletions
diff --git a/source/filter.c b/source/filter.c
index 6e16537..3ffd077 100644
--- a/source/filter.c
+++ b/source/filter.c
@@ -47,7 +47,8 @@ static int open_exec_filter(struct cgit_filter *base, va_list ap)
// cgit ignores SIGPIPE and the disposition survives exec, so a
// filter that writes to a closed pipe would otherwise carry on.
signal(SIGPIPE, SIG_DFL);
- execvp(filter->cmd, filter->argv);
+ // execvp leaves argv alone, but its prototype predates const.
+ execvp(filter->cmd, (char *const *)filter->argv);
// The child shares the parent's page buffer, cache lock and exit
// handlers, so it must not die through them.
fprintf(stderr, "[cgit] Unable to exec filter %s: %s\n", filter->cmd, strerror(errno));
@@ -95,7 +96,7 @@ static void cleanup_exec_filter(struct cgit_filter *base)
free(filter->argv);
filter->argv = NULL;
- free(filter->cmd);
+ free((char *)filter->cmd);
filter->cmd = NULL;
}
@@ -116,7 +117,7 @@ static struct cgit_filter *new_exec_filter(const char *cmd, int argument_count)
return &filter->base;
}
-void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, char **argv)
+void cgit_exec_filter_init(struct cgit_exec_filter *filter, const char *cmd, const char **argv)
{
memset(filter, 0, sizeof(*filter));
filter->base.open = open_exec_filter;