]> git.proxmox.com Git - mirror_qemu.git/commitdiff
bt: avoid unintended sign extension
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 27 Nov 2015 12:08:25 +0000 (13:08 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Fri, 4 Dec 2015 06:39:55 +0000 (09:39 +0300)
In the case of a 4-byte length, shifting a value by 24 may cause
an unintended sign extension when converting from int to size_t.
Use a uint32_t variable instead.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/bt/sdp.c

index b9bcdcc78d23b86ce8339b830edd4227663599bf..04eaecae6774eec913572e0e57f4a2ec2352d6ee 100644 (file)
@@ -42,7 +42,7 @@ struct bt_l2cap_sdp_state_s {
 
 static ssize_t sdp_datalen(const uint8_t **element, ssize_t *left)
 {
-    size_t len = *(*element) ++ & SDP_DSIZE_MASK;
+    uint32_t len = *(*element) ++ & SDP_DSIZE_MASK;
 
     if (!*left)
         return -1;