about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKuan-Wei Chiu <visitorckw@gmail.com>2024-06-14 09:44:36 +0800
committerKuan-Wei Chiu <visitorckw@gmail.com>2024-06-14 09:53:57 +0800
commitb5e0fff6b9ee1260fc3753af0e441606cfe853ff (patch)
treef011aa55e32a02090284c7f7a4943e04ce06f64b
parente7da8b9d6bf20b1cac960b1eccf3beac3fbf7901 (diff)
downloadafl++-b5e0fff6b9ee1260fc3753af0e441606cfe853ff.tar.gz
Fix signed integer overflow in radamsa
When UBSan was enabled and 'make test' was executed, the following
runtime error was observed:

libradamsa.c:26055:29: runtime error: left shift of 16777215 by 8 places cannot be represented in type 'int'

This issue was caused by a left shift operation on a signed integer.
The fix involved changing the integer literal to an unsigned integer by
adding a 'U' suffix, ensuring the left shift operation produces the
correct value without overflow.

Fixes: 8178f4df ("remove radamsa, add radamsa custom mutator")
-rw-r--r--custom_mutators/radamsa/libradamsa.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/custom_mutators/radamsa/libradamsa.c b/custom_mutators/radamsa/libradamsa.c
index e6838752..1dcf91d8 100644
--- a/custom_mutators/radamsa/libradamsa.c
+++ b/custom_mutators/radamsa/libradamsa.c
@@ -3707,7 +3707,7 @@ typedef intptr_t     wdiff;
   1024 * 1024 * 8         /* static malloc'd heap size if used as a library */
 #define FBITS 24             /* bits in fixnum, on the way to 24 and beyond */
 #define FMAX                                                       \
-  ((1 << FBITS) - 1)  /* maximum fixnum (and most negative fixnum) \
+  ((1U << FBITS) - 1)  /* maximum fixnum (and most negative fixnum) \
                        */
 #define MAXOBJ 0xffff                /* max words in tuple including header */
 #define MAXPAYL                                                \