harfbuzz/test/fuzzing
Behdad Esfahbod 64fa5cd482 [GPOS] Fix assert fail introduced recently
Was introduced in 8708b9e081.

If these lookups are recursed to from (Chain)Context out-of-order,
it was possible that last_base > buffer->idx, in which case we
were attaching marks to a base after them... and an assertion
was failing fortunately.

Fixes https://oss-fuzz.com/testcase-detail/6377756666757120
2023-02-07 15:52:53 -07:00
..
fonts [GPOS] Fix assert fail introduced recently 2023-02-07 15:52:53 -07:00
graphs [repacker] check duplicate() for success. 2023-01-23 18:37:13 -07:00
sets
Makefile.am test/fuzzing: Fix dist 2022-12-22 06:44:04 -07:00
README.md Update test/fuzzing/README 2022-08-03 11:31:34 -06:00
hb-draw-fuzzer.cc More s/hb_font_get_glyph_shape/hb_font_draw_glyph/ 2022-12-23 13:37:59 -07:00
hb-fuzzer.hh
hb-repacker-fuzzer.cc [repacker] use memcpy to avoid alignment issues. 2022-12-05 14:13:47 -07:00
hb-set-fuzzer.cc
hb-shape-fuzzer.cc
hb-subset-fuzzer.cc
main.cc
meson.build [repacker] only build repacker fuzzer when experimental api is enabled. 2022-12-02 00:02:14 +00:00
run-draw-fuzzer-tests.py
run-repacker-fuzzer-tests.py [repacker] add test for repacker fuzzer. 2022-12-01 20:17:40 +00:00
run-shape-fuzzer-tests.py
run-subset-fuzzer-tests.py

README.md

To build the fuzzers with libFuzzer to perform actual fuzzing, build with:

CXX=clang++ CXXFLAGS="-fsanitize=address,fuzzer-no-link" meson fuzzbuild --default-library=static -Dfuzzer_ldflags="-fsanitize=address,fuzzer"

ninja -Cfuzzbuild

Then, run the fuzzer like this:

fuzzbuild/test/fuzzing/hb-{shape,draw,subset,set}-fuzzer [-max_len=2048] [CORPUS_DIR]

Where max_len specifies the maximal length of font files to handle. The smaller the faster.

For more details consult the following locations: