mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
ubsan: signed integer multiply overflow
9223371018427387904 * 2 cannot be represented in type 'long', yes, but we don't care. * expr.c (expr): Avoid signed overflow.
This commit is contained in:
parent
ad3d14c47e
commit
487b0ff02d
@ -1959,7 +1959,12 @@ expr (int rankarg, /* Larger # is higher rank. */
|
||||
switch (op_left)
|
||||
{
|
||||
default: goto general;
|
||||
case O_multiply: resultP->X_add_number *= v; break;
|
||||
case O_multiply:
|
||||
/* Do the multiply as unsigned to silence ubsan. The
|
||||
result is of course the same when we throw away high
|
||||
bits of the result. */
|
||||
resultP->X_add_number *= (valueT) v;
|
||||
break;
|
||||
case O_divide: resultP->X_add_number /= v; break;
|
||||
case O_modulus: resultP->X_add_number %= v; break;
|
||||
case O_left_shift:
|
||||
|
Loading…
Reference in New Issue
Block a user