xref: /aosp_15_r20/external/AFLplusplus/test/test-floatingpoint.c (revision 08b48e0b10e97b33e7b60c5b6e2243bd915777f2)
1 #include <stdlib.h>
2 #include <unistd.h>
3 #include <limits.h>
4 #include <stdint.h>
5 
6 __AFL_FUZZ_INIT();
7 
main(void)8 int main(void) {
9 
10   ssize_t bytes_read;
11 
12   __AFL_INIT();
13   float *magic = (float *)__AFL_FUZZ_TESTCASE_BUF;
14 
15   while (__AFL_LOOP(INT_MAX)) {
16 
17     int len = __AFL_FUZZ_TESTCASE_LEN;
18     if (len < sizeof(float)) return 1;
19 
20     /* 15 + 1/2                      = 15.5  */
21     /* 15 + 1/2 + 1/8                = 15.625  */
22     /* 15 + 1/2 + 1/8 + 1/32         = 15.65625  */
23     /* 15 + 1/2 + 1/8 + 1/32 + 1/128 = 15.6640625  */
24     if ((*magic >= 15.0 + 0.5 + 0.125 + 0.03125) &&
25         (*magic <= 15.0 + 0.5 + 0.125 + 0.03125 + 0.0078125))
26       abort();
27 
28   }
29 
30   return 0;
31 
32 }
33 
34