aboutsummaryrefslogtreecommitdiff
path: root/lib/cuse_lowlevel.c
diff options
context:
space:
mode:
authorGravatar Winfried Koehler <w_scan@gmx-topmail.de>2016-03-10 12:19:59 +0100
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2016-03-11 09:34:05 -0800
commitfeed2061ceb2b96b99871338e1a17de35578f24b (patch)
tree6195cacea974e7b6bc979999b7ff5d0d9023185a /lib/cuse_lowlevel.c
parentb3b452ed7eb075af8b8555b72254e1e3c7cefa78 (diff)
cuse_lowlevel.setup(): fix double free of local variable 'args'
Signed-off-by: Winfried Koehler <w_scan@gmx-topmail.de>
Diffstat (limited to 'lib/cuse_lowlevel.c')
-rw-r--r--lib/cuse_lowlevel.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/cuse_lowlevel.c b/lib/cuse_lowlevel.c
index fbaa873..cef14c6 100644
--- a/lib/cuse_lowlevel.c
+++ b/lib/cuse_lowlevel.c
@@ -281,12 +281,16 @@ struct fuse_session *cuse_lowlevel_setup(int argc, char *argv[],
int res;
res = fuse_parse_cmdline(&args, NULL, multithreaded, &foreground);
- if (res == -1)
- goto err_args;
+ if (res == -1) {
+ fuse_opt_free_args(&args);
+ return NULL;
+ }
res = fuse_opt_parse(&args, NULL, kill_subtype_opts, NULL);
- if (res == -1)
- goto err_args;
+ if (res == -1) {
+ fuse_opt_free_args(&args);
+ return NULL;
+ }
/*
* Make sure file descriptors 0, 1 and 2 are open, otherwise chaos
@@ -301,7 +305,7 @@ struct fuse_session *cuse_lowlevel_setup(int argc, char *argv[],
se = cuse_lowlevel_new(&args, ci, clop, userdata);
fuse_opt_free_args(&args);
if (se == NULL)
- goto err_args;
+ return NULL;
fd = open(devname, O_RDWR);
if (fd == -1) {
@@ -335,8 +339,6 @@ err_sig:
fuse_remove_signal_handlers(se);
err_se:
fuse_session_destroy(se);
-err_args:
- fuse_opt_free_args(&args);
return NULL;
}