aboutsummaryrefslogtreecommitdiff
path: root/lib/fuse_opt.c
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <mszeredi@suse.cz>2013-02-18 16:24:11 +0100
committerGravatar Miklos Szeredi <mszeredi@suse.cz>2013-02-19 14:14:00 +0100
commita38722be2ba63466431616a0756981697d29fa23 (patch)
treec1ccddf087f0e48c168f5d71f139ed80421659ac /lib/fuse_opt.c
parent4337a329552fdf70ae717e901d25842c22ff9b19 (diff)
fuse_opt_parse(): fix memory leak
when storing a newly allocated string for format "%s", free the previous value stored at that location. Reported by Marco Schuster
Diffstat (limited to 'lib/fuse_opt.c')
-rw-r--r--lib/fuse_opt.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/fuse_opt.c b/lib/fuse_opt.c
index 93efd29..15f9e21 100644
--- a/lib/fuse_opt.c
+++ b/lib/fuse_opt.c
@@ -204,11 +204,13 @@ static int process_opt_param(void *var, const char *format, const char *param,
{
assert(format[0] == '%');
if (format[1] == 's') {
+ char **s = var;
char *copy = strdup(param);
if (!copy)
return alloc_failed();
- *(char **) var = copy;
+ free(*s);
+ *s = copy;
} else {
if (sscanf(param, format, var) != 1) {
fprintf(stderr, "fuse: invalid parameter in option `%s'\n", arg);