summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan <okan@openbsd.org>2016-05-24 20:55:32 +0000
committerokan <okan@openbsd.org>2016-05-24 20:55:32 +0000
commitaa516fc20a23210e19be33a9a505b4ffddd5de28 (patch)
treec0657088c686cf86c87433b19183aae3cb95eeca
parentAdd missing strdup NULL checks; from Ray Lai. (diff)
downloadwireguard-openbsd-aa516fc20a23210e19be33a9a505b4ffddd5de28.tar.xz
wireguard-openbsd-aa516fc20a23210e19be33a9a505b4ffddd5de28.zip
NUL-terminate argv when parsing options, following other
implementations; fixes issue when exec*() is used for fuse_args, notably in sshfs; from Hiltjo Posthuma and reminded by ray. ok mpi@
-rw-r--r--lib/libfuse/fuse_opt.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libfuse/fuse_opt.c b/lib/libfuse/fuse_opt.c
index da7de596fea..bbb2ad38142 100644
--- a/lib/libfuse/fuse_opt.c
+++ b/lib/libfuse/fuse_opt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_opt.c,v 1.15 2015/10/19 17:24:07 tedu Exp $ */
+/* $OpenBSD: fuse_opt.c,v 1.16 2016/05/24 20:55:32 okan Exp $ */
/*
* Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com>
* Copyright (c) 2013 Stefan Sperling <stsp@openbsd.org>
@@ -353,7 +353,7 @@ fuse_opt_insert_arg(struct fuse_args *args, int p, const char *name)
if (p < 0 || p > args->argc)
return (-1);
- av = reallocarray(args->argv, args->argc + 1, sizeof(*av));
+ av = reallocarray(args->argv, args->argc + 2, sizeof(*av));
if (av == NULL)
return (-1);
@@ -365,6 +365,7 @@ fuse_opt_insert_arg(struct fuse_args *args, int p, const char *name)
args->argc++;
args->argv = av;
+ args->argv[args->argc] = NULL;
for (i = p; i < args->argc; i++) {
next_arg = args->argv[i];
args->argv[i] = this_arg;