]> Git Repo - qemu.git/commitdiff
nbd: Fix potential signed overflow issues
authorMax Reitz <[email protected]>
Wed, 25 Feb 2015 18:08:23 +0000 (13:08 -0500)
committerPaolo Bonzini <[email protected]>
Wed, 18 Mar 2015 11:06:56 +0000 (12:06 +0100)
Signed-off-by: Max Reitz <[email protected]>
Message-Id: <1424887718[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
include/block/nbd.h
qemu-nbd.c

index 2c201385886769be82544687d15a846bd60b1aa7..53726e82e907e47870a919de09a7c7a9963ab21c 100644 (file)
@@ -54,8 +54,8 @@ struct nbd_reply {
 /* Reply types. */
 #define NBD_REP_ACK             (1)             /* Data sending finished. */
 #define NBD_REP_SERVER          (2)             /* Export description. */
-#define NBD_REP_ERR_UNSUP       ((1 << 31) | 1) /* Unknown option. */
-#define NBD_REP_ERR_INVALID     ((1 << 31) | 3) /* Invalid length. */
+#define NBD_REP_ERR_UNSUP       ((UINT32_C(1) << 31) | 1) /* Unknown option. */
+#define NBD_REP_ERR_INVALID     ((UINT32_C(1) << 31) | 3) /* Invalid length. */
 
 #define NBD_CMD_MASK_COMMAND   0x0000ffff
 #define NBD_CMD_FLAG_FUA       (1 << 16)
index 0c9e807a1a95d305a6e827d90dbed5636dec0665..a4a9a0cf378262472d53552a58ff46d4520caed3 100644 (file)
@@ -142,8 +142,9 @@ static void read_partition(uint8_t *p, struct partition_record *r)
     r->end_head = p[5];
     r->end_cylinder = p[7] | ((p[6] << 2) & 0x300);
     r->end_sector = p[6] & 0x3f;
-    r->start_sector_abs = p[8] | p[9] << 8 | p[10] << 16 | p[11] << 24;
-    r->nb_sectors_abs = p[12] | p[13] << 8 | p[14] << 16 | p[15] << 24;
+
+    r->start_sector_abs = le32_to_cpup((uint32_t *)(p +  8));
+    r->nb_sectors_abs   = le32_to_cpup((uint32_t *)(p + 12));
 }
 
 static int find_partition(BlockBackend *blk, int partition,
This page took 0.02591 seconds and 4 git commands to generate.