aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2024-12-13 09:42:55 +0100
committerJan Beulich <jbeulich@suse.com>2024-12-13 09:42:55 +0100
commitbbe22ca078c02ca248722832fd77e2a6cd2813c5 (patch)
tree2cc86c652c6f34cd3d0536a6a6e4a4ea01b8f0f2
parenta21e2f0c20565216fbc560225ba15d8c5c1e1aa8 (diff)
downloadbinutils-bbe22ca078c02ca248722832fd77e2a6cd2813c5.zip
binutils-bbe22ca078c02ca248722832fd77e2a6cd2813c5.tar.gz
binutils-bbe22ca078c02ca248722832fd77e2a6cd2813c5.tar.bz2
gas: avoid UB on signed multiplication in resolve_symbol_value()
Commit 487b0ff02dda ("ubsan: signed integer multiply overflow") touched only one of the two affected places (the 3rd, resolve_expression(), is already using valueT type local variables).
-rw-r--r--gas/symbols.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gas/symbols.c b/gas/symbols.c
index fa3aaa37..8401b4e 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -1721,7 +1721,8 @@ resolve_symbol_value (symbolS *symp)
switch (symp->x->value.X_op)
{
- case O_multiply: left *= right; break;
+ /* See expr() for reasons of the use of valueT casts here. */
+ case O_multiply: left *= (valueT) right; break;
case O_divide: left /= right; break;
case O_modulus: left %= right; break;
case O_left_shift: