summaryrefslogtreecommitdiffstats
path: root/fdisks/sfdisk.c
diff options
context:
space:
mode:
authorMike Frysinger2012-10-10 06:29:54 +0200
committerKarel Zak2012-10-10 11:23:25 +0200
commit2d609d9945b119dfa9ad7d9d73a38068a35fa5f0 (patch)
tree27d4c1f7673733abe7a36cf8338c4a54903249a5 /fdisks/sfdisk.c
parentmd5: fix strict aliasing warnings (diff)
downloadkernel-qcow2-util-linux-2d609d9945b119dfa9ad7d9d73a38068a35fa5f0.tar.gz
kernel-qcow2-util-linux-2d609d9945b119dfa9ad7d9d73a38068a35fa5f0.tar.xz
kernel-qcow2-util-linux-2d609d9945b119dfa9ad7d9d73a38068a35fa5f0.zip
sfdisk: fix aliasing warnings
Compiles down to the same code. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'fdisks/sfdisk.c')
-rw-r--r--fdisks/sfdisk.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fdisks/sfdisk.c b/fdisks/sfdisk.c
index 3450f5208..e59d52a2b 100644
--- a/fdisks/sfdisk.c
+++ b/fdisks/sfdisk.c
@@ -1561,12 +1561,14 @@ msdos_partition(char *dev, int fd, unsigned long start, struct disk_desc *z) {
return 0;
}
- unsigned int sig = *(unsigned short *)(s->data + 2);
- if (sig <= 0x1ae
- && *(unsigned short *)(s->data + sig) == 0x55aa
- && (1 & *(unsigned char *)(s->data + sig + 2))) {
+ unsigned short sig, magic;
+ memcpy(&sig, s->data + 2, sizeof(sig));
+ if (sig <= 0x1ae) {
+ memcpy(&magic, s->data + sig, sizeof(magic));
+ if (magic == 0x55aa && (1 & *(unsigned char *)(s->data + sig + 2))) {
warnx(_("DM6 signature found - giving up\n"));
return 0;
+ }
}
for (pno = 0; pno < 4; pno++, cp += sizeof(struct partition)) {