From feed2061ceb2b96b99871338e1a17de35578f24b Mon Sep 17 00:00:00 2001 From: Winfried Koehler Date: Thu, 10 Mar 2016 12:19:59 +0100 Subject: [PATCH] cuse_lowlevel.setup(): fix double free of local variable 'args' Signed-off-by: Winfried Koehler --- lib/cuse_lowlevel.c | 16 +++++++++------- 1 file 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; } -- 2.30.2