diff mbox series

[1/1] mdadm/platform-intel: buffer overflow detected

Message ID 20240528084439.23705-1-xni@redhat.com (mailing list archive)
State Accepted
Headers show
Series [1/1] mdadm/platform-intel: buffer overflow detected | expand

Commit Message

Xiao Ni May 28, 2024, 8:44 a.m. UTC
mdadm -CR /dev/md0 -l1 -n2 /dev/nvme0n1 /dev/nvme2n1
*** buffer overflow detected ***: terminated
Aborted (core dumped)

It doesn't happen 100% and it depends on the building environment.
It can be fixed by replacing sprintf with snprintf.

Fixes: d835518b6b53 ('imsm: nvme multipath support')
Reported-by: Guang Wu <guazhang@redhat.com>
Signed-off-by: Xiao Ni <xni@redhat.com>
---
 platform-intel.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Mariusz Tkaczyk May 28, 2024, 3:16 p.m. UTC | #1
On Tue, 28 May 2024 16:44:39 +0800
Xiao Ni <xni@redhat.com> wrote:

> mdadm -CR /dev/md0 -l1 -n2 /dev/nvme0n1 /dev/nvme2n1
> *** buffer overflow detected ***: terminated
> Aborted (core dumped)
> 
> It doesn't happen 100% and it depends on the building environment.
> It can be fixed by replacing sprintf with snprintf.
> 
> Fixes: d835518b6b53 ('imsm: nvme multipath support')
> Reported-by: Guang Wu <guazhang@redhat.com>
> Signed-off-by: Xiao Ni <xni@redhat.com>
> ---

Applied! 

Thanks,
Mariusz
diff mbox series

Patch

diff --git a/platform-intel.c b/platform-intel.c
index 15a9fa5ac160..d6a535335ad1 100644
--- a/platform-intel.c
+++ b/platform-intel.c
@@ -907,14 +907,14 @@  char *get_nvme_multipath_dev_hw_path(const char *dev_path)
 		return NULL;
 
 	for (ent = readdir(dir); ent; ent = readdir(dir)) {
-		char buf[strlen(dev_path) + strlen(ent->d_name) + 1];
+		char buf[PATH_MAX];
 
 		/* Check if dir is a controller, ignore namespaces*/
 		if (!(strncmp(ent->d_name, "nvme", 4) == 0) ||
 		    (strrchr(ent->d_name, 'n') != &ent->d_name[0]))
 			continue;
 
-		sprintf(buf, "%s/%s", dev_path, ent->d_name);
+		snprintf(buf, PATH_MAX, "%s/%s", dev_path, ent->d_name);
 		rp = realpath(buf, NULL);
 		break;
 	}