disas/m68k: Avoid unintended sign extension in get_field()
commit2e3883d03df167b15f2acc5345eb9a7e0150a062
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 3 Mar 2017 15:50:30 +0000 (3 15:50 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 7 Mar 2017 14:33:51 +0000 (7 14:33 +0000)
treef279b7f0eb1cea99b6a654100511b70c5938d974
parent3f168b5d353fa68baab55ea0c6ba791f0df027dc
disas/m68k: Avoid unintended sign extension in get_field()

In get_field(), we take an 'unsigned char' value and shift it left,
which implicitly promotes it to 'signed int', before ORing it into an
'unsigned long' type.  If 'unsigned long' is 64 bits then this will
result in a sign extension and the top 32 bits of the result will be
1s.  Add explicit casts to unsigned long before shifting to prevent
this.

(Spotted by Coverity, CID 715697.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-id: 1488556233-31246-4-git-send-email-peter.maydell@linaro.org
disas/m68k.c