blob: bc82a91e0c8964f591ee44cf2e1a32256e439360 [file] [log] [blame] [view] [edit]
## Security Fuzzers
To build the fuzzers with libFuzzer to perform actual fuzzing, build with:
```shell
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,depend}-fuzzer [-max_len=2048] [CORPUS_DIR]
Where max_len specifies the maximal length of font files to handle.
The smaller the faster.
Note: The `depend` fuzzer requires `-Ddepend_api=true` meson option.
For more details consult the following locations:
- http://llvm.org/docs/LibFuzzer.html
## Depend Closure Parity Test
The `hb-depend-closure-parity` test is distinct from the security fuzzers.
While security fuzzers test robustness against malformed input, the closure
parity test validates correctness by emulating the glyph closure calculation
used for subsetting with one generated from the dependency graph to avoid
implementation divergence. It should only be run on valid fonts.