diff options
author | 2016-05-24 20:55:32 +0000 | |
---|---|---|
committer | 2016-05-24 20:55:32 +0000 | |
commit | aa516fc20a23210e19be33a9a505b4ffddd5de28 (patch) | |
tree | c0657088c686cf86c87433b19183aae3cb95eeca | |
parent | Add missing strdup NULL checks; from Ray Lai. (diff) | |
download | wireguard-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.c | 5 |
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; |