]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: (silicon raid) improve checksum calculation [-Waddress-of-packed-member]
authorKarel Zak <kzak@redhat.com>
Wed, 22 May 2019 15:42:48 +0000 (17:42 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 22 May 2019 15:46:14 +0000 (17:46 +0200)
Let's keep compilers and static analyzers happy. The idea is to use
memcpy() to copy from buffer to variable and use all label as unsigned
char rather than vectorize by uint16_t.

Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/superblocks/silicon_raid.c

index edbefbc09556bd621e26363d98c40f5e3fcf7dec..399eea8c4ec6e49b7715fcf3d4f5d7bd262fd9d1 100644 (file)
@@ -71,11 +71,15 @@ static uint16_t silraid_checksum(struct silicon_metadata *sil)
 {
        int sum = 0;
        unsigned short count = offsetof(struct silicon_metadata, checksum1) / 2;
-       uint16_t *p = (uint16_t *) sil;
+       unsigned char *ptr = (unsigned char *) sil;
 
        while (count--) {
-               uint16_t x = *p++;
-               sum += le16_to_cpu(x);
+               uint16_t val;
+
+               memcpy(&val, ptr, sizeof(uint16_t));
+               sum += le16_to_cpu(val);
+
+               ptr += sizeof(uint16_t);
        }
 
        return (-sum & 0xFFFF);