diff options
| author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2025-04-24 09:41:11 -0300 |
|---|---|---|
| committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2025-04-25 17:46:06 -0300 |
| commit | 24d670db3330a82e79337bc4aa0c53847473a6c4 (patch) | |
| tree | a28d6e5859b335facd26bec7b78b1a14202e4d76 | |
| parent | 789fe69a25cdc86c0e9122330b9cedb1dd478caa (diff) | |
| download | glibc-24d670db3330a82e79337bc4aa0c53847473a6c4.tar.xz glibc-24d670db3330a82e79337bc4aa0c53847473a6c4.zip | |
stdio-common: Fix UB on stdio-common/vfprintf-process-arg.c
On i686 debug/tst-sprintf-fortify-unchecked triggers:
UBSAN: Undefined behaviour in vfprintf-process-arg.c:41:57 negation of 9223372036854775808 cannot be represented in type 'long long int'
| -rw-r--r-- | stdio-common/vfprintf-process-arg.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/stdio-common/vfprintf-process-arg.c b/stdio-common/vfprintf-process-arg.c index a41feb2c47..fd23213e7e 100644 --- a/stdio-common/vfprintf-process-arg.c +++ b/stdio-common/vfprintf-process-arg.c @@ -38,7 +38,8 @@ LABEL (form_integer): { long long int signed_number = process_arg_long_long_int (); is_negative = signed_number < 0; - number.longlong = is_negative ? (- signed_number) : signed_number; + number.longlong = is_negative ? (- (unsigned long long) signed_number) + : signed_number; goto LABEL (longlong_number); } |
