dcavalca / rpms / mdadm

Forked from rpms/mdadm 3 years ago
Clone

Blame SOURCES/0015-super-intel-Do-not-truncate-last-character-of-volume.patch

59ea72
From ebad3af29b401dec7203e8fa5a77bcf16532f49c Mon Sep 17 00:00:00 2001
59ea72
From: Jes Sorensen <jsorensen@fb.com>
59ea72
Date: Wed, 30 May 2018 12:10:13 -0400
59ea72
Subject: [RHEL7.5 PATCH 15/26] super-intel: Do not truncate last character of
59ea72
 volume name
59ea72
59ea72
Clear up strncpy abuse to avoid gcc-8.1 complaining about truncating
59ea72
the string.
59ea72
59ea72
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
59ea72
---
59ea72
 super-intel.c | 7 ++++---
59ea72
 1 file changed, 4 insertions(+), 3 deletions(-)
59ea72
59ea72
diff --git a/super-intel.c b/super-intel.c
59ea72
index 520d292..aa93a9e 100644
59ea72
--- a/super-intel.c
59ea72
+++ b/super-intel.c
59ea72
@@ -7587,11 +7587,12 @@ static int update_subarray_imsm(struct supertype *st, char *subarray,
59ea72
 			append_metadata_update(st, u, sizeof(*u));
59ea72
 		} else {
59ea72
 			struct imsm_dev *dev;
59ea72
-			int i;
59ea72
+			int i, namelen;
59ea72
 
59ea72
 			dev = get_imsm_dev(super, vol);
59ea72
-			strncpy((char *) dev->volume, name, MAX_RAID_SERIAL_LEN);
59ea72
-			dev->volume[MAX_RAID_SERIAL_LEN-1] = '\0';
59ea72
+			memset(dev->volume, '\0', MAX_RAID_SERIAL_LEN);
59ea72
+			namelen = min((int)strlen(name), MAX_RAID_SERIAL_LEN);
59ea72
+			memcpy(dev->volume, name, namelen);
59ea72
 			for (i = 0; i < mpb->num_raid_devs; i++) {
59ea72
 				dev = get_imsm_dev(super, i);
59ea72
 				handle_missing(super, dev);
59ea72
-- 
59ea72
2.7.4
59ea72