diff options
author | Jes Sorensen <jsorensen@fb.com> | 2018-05-29 21:52:48 +0200 |
---|---|---|
committer | Jes Sorensen <jsorensen@fb.com> | 2018-05-29 21:52:48 +0200 |
commit | 760365f94409ccccbcb54d55070f0f422bee44a1 (patch) | |
tree | 10ac74e08ff2783be4cf2f7fa34c6189cffc2e3d | |
parent | Fix misspelling of 'alignment' and 'geometry' (diff) | |
download | mdadm-760365f94409ccccbcb54d55070f0f422bee44a1.tar.xz mdadm-760365f94409ccccbcb54d55070f0f422bee44a1.zip |
Do not confuse gcc
gcc-8.1's -Werror=stringop-truncation is easily confused. Rather than
disabling the check, make it explicit we are OK truncating here.
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
-rw-r--r-- | super-intel.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/super-intel.c b/super-intel.c index ce08af47..449da1dd 100644 --- a/super-intel.c +++ b/super-intel.c @@ -5323,6 +5323,7 @@ static int init_super_imsm_volume(struct supertype *st, mdu_array_info_t *info, struct imsm_map *map; int idx = mpb->num_raid_devs; int i; + int namelen; unsigned long long array_blocks; size_t size_old, size_new; unsigned long long num_data_stripes; @@ -5402,7 +5403,12 @@ static int init_super_imsm_volume(struct supertype *st, mdu_array_info_t *info, return 0; dv = xmalloc(sizeof(*dv)); dev = xcalloc(1, sizeof(*dev) + sizeof(__u32) * (info->raid_disks - 1)); - strncpy((char *) dev->volume, name, MAX_RAID_SERIAL_LEN); + /* + * Explicitly allow truncating to not confuse gcc's + * -Werror=stringop-truncation + */ + namelen = min((int) strlen(name), MAX_RAID_SERIAL_LEN); + memcpy(dev->volume, name, namelen); array_blocks = calc_array_size(info->level, info->raid_disks, info->layout, info->chunk_size, s->size * BLOCKS_PER_KB); |