File 0015-fabrics-fix-nvme-discover-segfault-if-sysfs-path-is-.patch of Package nvme-cli.26915

From: Martin George <marting@netapp.com>
Date: Sat, 30 Oct 2021 15:13:22 +0530
Subject: fabrics: fix 'nvme discover' segfault if sysfs path is not available
References: bsc#1191935
Git-commit: 1490c6a86ca8363f3d12a06298e47dbb5a539b70

Avoid dereferencing connect_args strings if the corresponding nvme
sysfs paths are not available.

Signed-off-by: Martin George <marting@netapp.com>
---
 fabrics.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

--- a/fabrics.c
+++ b/fabrics.c
@@ -306,13 +306,14 @@ static bool ctrl_matches_connectargs(cha
 		return found;
 
 	addr = nvme_get_ctrl_attr(path, "address");
-	if (!addr) {
+	cargs.subsysnqn = nvme_get_ctrl_attr(path, "subsysnqn");
+	cargs.transport = nvme_get_ctrl_attr(path, "transport");
+
+	if (!addr || !cargs.subsysnqn || !cargs.transport) {
 		fprintf(stderr, "nvme_get_ctrl_attr failed\n");
-		return found;
+		goto out;
 	}
 
-	cargs.subsysnqn = nvme_get_ctrl_attr(path, "subsysnqn");
-	cargs.transport = nvme_get_ctrl_attr(path, "transport");
 	cargs.traddr = parse_conn_arg(addr, ' ', conarg_traddr);
 	cargs.trsvcid = parse_conn_arg(addr, ' ', conarg_trsvcid);
 	cargs.host_traddr = parse_conn_arg(addr, ' ', conarg_host_traddr);
@@ -350,6 +351,7 @@ static bool ctrl_matches_connectargs(cha
 	     !strcmp(args->host_traddr, "none")))
 		found = true;
 
+out:
 	free(cargs.subsysnqn);
 	free(cargs.transport);
 	free(cargs.traddr);
openSUSE Build Service is sponsored by