harfbuzz/test/fuzzing/hb-fuzzer.hh

35 lines
693 B
C++

#include <hb.h>
#include <stddef.h>
extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size);
#if defined(__GNUC__) && (__GNUC__ >= 4) || (__clang__)
#define HB_UNUSED __attribute__((unused))
#else
#define HB_UNUSED
#endif
#ifdef HB_IS_IN_FUZZER
/* See src/failing-alloc.c */
extern "C" int alloc_state;
#else
/* Just a dummy global variable */
static int HB_UNUSED alloc_state = 0;
#endif
static inline int
_fuzzing_alloc_state (const uint8_t *data, size_t size)
{
/* https://github.com/harfbuzz/harfbuzz/pull/2764#issuecomment-1172589849 */
/* In 50% of the runs, don't fail the allocator. */
if (size && data[size - 1] < 0x80)
return 0;
return size;
}