[dm-devel] [PATCH 2/5] libmultipath: fix memory leak in ble handlers
mwilck at suse.com
mwilck at suse.com
Tue Aug 25 21:24:47 UTC 2020
From: Martin Wilck <mwilck at suse.com>
Since patch "libmultipath fix a memory leak in set_ble_device",
strings are strdup'd in set_ble_device() and store_ble(). The
passed string must therefore be freed in the handlers in dict.c.
Fixes: ("libmultipath fix a memory leak in set_ble_device")
Cc: lixiaokeng <lixiaokeng at huawei.com>
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
libmultipath/dict.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
index be3029c..feabae5 100644
--- a/libmultipath/dict.c
+++ b/libmultipath/dict.c
@@ -1499,7 +1499,8 @@ blacklist_exceptions_handler(struct config *conf, vector strvec)
static int \
ble_ ## option ## _handler (struct config *conf, vector strvec) \
{ \
- char * buff; \
+ char *buff; \
+ int rc; \
\
if (!conf->option) \
return 1; \
@@ -1508,7 +1509,9 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \
if (!buff) \
return 1; \
\
- return store_ble(conf->option, buff, ORIGIN_CONFIG); \
+ rc = store_ble(conf->option, buff, ORIGIN_CONFIG); \
+ free(buff); \
+ return rc; \
}
#define declare_ble_device_handler(name, option, vend, prod) \
@@ -1516,6 +1519,7 @@ static int \
ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
{ \
char * buff; \
+ int rc; \
\
if (!conf->option) \
return 1; \
@@ -1524,7 +1528,9 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
if (!buff) \
return 1; \
\
- return set_ble_device(conf->option, vend, prod, ORIGIN_CONFIG); \
+ rc = set_ble_device(conf->option, vend, prod, ORIGIN_CONFIG); \
+ free(buff); \
+ return rc; \
}
declare_ble_handler(blist_devnode)
--
2.28.0
More information about the dm-devel
mailing list