File 0022-fabrics-Duplicate-strings-when-merging-configs.patch of Package libnvme.27881

From: Daniel Wagner <dwagner@suse.de>
Date: Fri, 28 Oct 2022 16:42:21 +0200
Subject: fabrics: Duplicate strings when merging configs
Git-commit d187b21add042f941436f94d5dc75bb566f9fe3d
References: bsc#1205019

We have to use strdup here, because the merged config will be freeing
these pointers eventually. Without it, we are going to double free it.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 src/nvme/fabrics.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c
index 7c2b371140c7..a501f7900c5f 100644
--- a/src/nvme/fabrics.c
+++ b/src/nvme/fabrics.c
@@ -191,13 +191,15 @@ void nvmf_default_config(struct nvme_fabrics_config *cfg)
 
 #define MERGE_CFG_OPTION(c, n, o, d)			\
 	if ((c)->o == d) (c)->o = (n)->o
+#define MERGE_CFG_OPTION_STR(c, n, o, d)		\
+	if ((c)->o == d && (n)->o) (c)->o = strdup((n)->o)
 static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c,
 		const struct nvme_fabrics_config *cfg)
 {
 	struct nvme_fabrics_config *ctrl_cfg = nvme_ctrl_get_config(c);
 
-	MERGE_CFG_OPTION(ctrl_cfg, cfg, host_traddr, NULL);
-	MERGE_CFG_OPTION(ctrl_cfg, cfg, host_iface, NULL);
+	MERGE_CFG_OPTION_STR(ctrl_cfg, cfg, host_traddr, NULL);
+	MERGE_CFG_OPTION_STR(ctrl_cfg, cfg, host_iface, NULL);
 	MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_io_queues, 0);
 	MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_write_queues, 0);
 	MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_poll_queues, 0);
-- 
2.38.1

openSUSE Build Service is sponsored by