diff options
author | Jan Beulich <jbeulich@suse.com> | 2024-12-13 09:42:55 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2024-12-13 09:42:55 +0100 |
commit | bbe22ca078c02ca248722832fd77e2a6cd2813c5 (patch) | |
tree | 2cc86c652c6f34cd3d0536a6a6e4a4ea01b8f0f2 | |
parent | a21e2f0c20565216fbc560225ba15d8c5c1e1aa8 (diff) | |
download | binutils-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.c | 3 |
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: |