From: Winfried Koehler Date: Thu, 10 Mar 2016 11:19:59 +0000 (+0100) Subject: cuse_lowlevel.setup(): fix double free of local variable 'args' X-Git-Tag: fuse-3.0.0pre0~56 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=feed2061ceb2b96b99871338e1a17de35578f24b;p=qemu-gpiodev%2Flibfuse.git cuse_lowlevel.setup(): fix double free of local variable 'args' Signed-off-by: Winfried Koehler --- 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; }