Hannes Reinecke 0215ed
From: Takashi Iwai <tiwai@suse.de>
Hannes Reinecke 0215ed
Date: Wed, 11 Mar 2020 09:50:37 +0100
Hannes Reinecke 0215ed
Subject: [PATCH] nvme-fabrics: Use scnprintf() for avoiding potential buffer overflow
Hannes Reinecke 0215ed
Git-commit: 8d8a50e20dc2dc41cb788085968b9024dc36f7a5
Michal Kubecek 66e035
Patch-mainline: v5.7-rc1
Hannes Reinecke 0215ed
References: bsc#1161930
Hannes Reinecke 0215ed
Hannes Reinecke 0215ed
Since snprintf() returns the would-be-output size instead of the
Hannes Reinecke 0215ed
actual output size, the succeeding calls may go beyond the given
Hannes Reinecke 0215ed
buffer limit.  Fix it by replacing with scnprintf().
Hannes Reinecke 0215ed
Hannes Reinecke 0215ed
Reviewed-by: Christoph Hellwig <hch@lst.de>
Hannes Reinecke 0215ed
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Hannes Reinecke 0215ed
Signed-off-by: Keith Busch <kbusch@kernel.org>
Hannes Reinecke 0215ed
Acked-by: Hannes Reinecke <hare@suse.com>
Hannes Reinecke 0215ed
---
Hannes Reinecke 0215ed
 drivers/nvme/host/fabrics.c | 8 ++++----
Hannes Reinecke 0215ed
 1 file changed, 4 insertions(+), 4 deletions(-)
Hannes Reinecke 0215ed
Hannes Reinecke 0215ed
diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
Hannes Reinecke 0215ed
index 74b8818ac9a1..2a6c8190eeb7 100644
Hannes Reinecke 0215ed
--- a/drivers/nvme/host/fabrics.c
Hannes Reinecke 0215ed
+++ b/drivers/nvme/host/fabrics.c
Hannes Reinecke 0215ed
@@ -105,14 +105,14 @@ int nvmf_get_address(struct nvme_ctrl *ctrl, char *buf, int size)
Hannes Reinecke 0215ed
 	int len = 0;
Hannes Reinecke 0215ed
 
Hannes Reinecke 0215ed
 	if (ctrl->opts->mask & NVMF_OPT_TRADDR)
Hannes Reinecke 0215ed
-		len += snprintf(buf, size, "traddr=%s", ctrl->opts->traddr);
Hannes Reinecke 0215ed
+		len += scnprintf(buf, size, "traddr=%s", ctrl->opts->traddr);
Hannes Reinecke 0215ed
 	if (ctrl->opts->mask & NVMF_OPT_TRSVCID)
Hannes Reinecke 0215ed
-		len += snprintf(buf + len, size - len, "%strsvcid=%s",
Hannes Reinecke 0215ed
+		len += scnprintf(buf + len, size - len, "%strsvcid=%s",
Hannes Reinecke 0215ed
 				(len) ? "," : "", ctrl->opts->trsvcid);
Hannes Reinecke 0215ed
 	if (ctrl->opts->mask & NVMF_OPT_HOST_TRADDR)
Hannes Reinecke 0215ed
-		len += snprintf(buf + len, size - len, "%shost_traddr=%s",
Hannes Reinecke 0215ed
+		len += scnprintf(buf + len, size - len, "%shost_traddr=%s",
Hannes Reinecke 0215ed
 				(len) ? "," : "", ctrl->opts->host_traddr);
Hannes Reinecke 0215ed
-	len += snprintf(buf + len, size - len, "\n");
Hannes Reinecke 0215ed
+	len += scnprintf(buf + len, size - len, "\n");
Hannes Reinecke 0215ed
 
Hannes Reinecke 0215ed
 	return len;
Hannes Reinecke 0215ed
 }
Hannes Reinecke 0215ed
-- 
Hannes Reinecke 0215ed
2.16.4
Hannes Reinecke 0215ed