diff options
author | Alan Modra <amodra@gmail.com> | 2019-12-11 08:52:22 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-12-11 11:41:27 +1030 |
commit | b84f6152ee8bb141acae181b34a51c3e58da8930 (patch) | |
tree | 7c0387be7700f747c43723d3b648666e097d5d19 /opcodes | |
parent | 66152f16685fe63a5b2eb941c2d7057bbff5cfe5 (diff) | |
download | binutils-b84f6152ee8bb141acae181b34a51c3e58da8930.zip binutils-b84f6152ee8bb141acae181b34a51c3e58da8930.tar.gz binutils-b84f6152ee8bb141acae181b34a51c3e58da8930.tar.bz2 |
ubsan: tic6x: shift left of int
* tic6x-dis.c (tic6x_extract_32): Avoid signed overflow.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 4 | ||||
-rw-r--r-- | opcodes/tic6x-dis.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 3ae93c1..3ba885c 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,9 @@ 2019-12-11 Alan Modra <amodra@gmail.com> + * tic6x-dis.c (tic6x_extract_32): Avoid signed overflow. + +2019-12-11 Alan Modra <amodra@gmail.com> + * tic4x-dis.c (tic4x_print_register): Formatting. Don't segfault on NULL registertable entry. (tic4x_hash_opcode): Use unsigned arithmetic. diff --git a/opcodes/tic6x-dis.c b/opcodes/tic6x-dis.c index 36075da..45a1e98 100644 --- a/opcodes/tic6x-dis.c +++ b/opcodes/tic6x-dis.c @@ -163,9 +163,9 @@ static unsigned int tic6x_extract_32 (unsigned char *p, struct disassemble_info *info) { if (info->endian == BFD_ENDIAN_LITTLE) - return (p[0]) | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); + return p[0] | (p[1] << 8) | (p[2] << 16) | ((unsigned) p[3] << 24); else - return (p[3]) | (p[2] << 8) | (p[1] << 16) | (p[0] << 24); + return p[3] | (p[2] << 8) | (p[1] << 16) | ((unsigned) p[0] << 24); } /* Extract a 16-bit value read from the instruction stream. */ |