]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Do not confuse gcc
authorJes Sorensen <jsorensen@fb.com>
Tue, 29 May 2018 19:52:48 +0000 (15:52 -0400)
committerJes Sorensen <jsorensen@fb.com>
Tue, 29 May 2018 19:52:48 +0000 (15:52 -0400)
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>
super-intel.c

index ce08af4714d187e5f485a4a48d8309d0923ae643..449da1dd83d876df0b42fe36f1864523faf0f082 100644 (file)
@@ -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);