From: Martin Wilck <mwilck@xxxxxxxx> 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@xxxxxxxxxx> Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> --- 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 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel