• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <hb.h>
2 #include <stddef.h>
3 
4 extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size);
5 
6 #if defined(__GNUC__) && (__GNUC__ >= 4) || (__clang__)
7 #define HB_UNUSED	__attribute__((unused))
8 #else
9 #define HB_UNUSED
10 #endif
11 
12 #ifdef HB_IS_IN_FUZZER
13 
14 /* See src/failing-alloc.c */
15 extern "C" int alloc_state;
16 
17 #else
18 
19 /* Just a dummy global variable */
20 static int HB_UNUSED alloc_state = 0;
21 
22 #endif
23 
24 static inline int
_fuzzing_alloc_state(const uint8_t * data,size_t size)25 _fuzzing_alloc_state (const uint8_t *data, size_t size)
26 {
27   /* https://github.com/harfbuzz/harfbuzz/pull/2764#issuecomment-1172589849 */
28 
29   /* In 50% of the runs, don't fail the allocator. */
30   if (size && data[size - 1] < 0x80)
31     return 0;
32 
33   return size;
34 }
35