librsvg source for verification 2026-05-22
This commit is contained in:
62
fuzz/README.md
Normal file
62
fuzz/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Fuzzing with cargo-fuzz
|
||||
|
||||
=======================
|
||||
|
||||
* `cargo install cargo-fuzz`
|
||||
|
||||
* `rustup default nightly` - cargo-fuzz requires the nightly compiler,
|
||||
unfortunately.
|
||||
|
||||
* `cargo fuzz run render_document`
|
||||
|
||||
## Configuring fuzzer runs
|
||||
|
||||
To pass options to the fuzzer, do it after `--`, for example:
|
||||
|
||||
```sh
|
||||
cargo fuzz run render_document -- -seed_inputs=corpus1.svg,corpus2.svg,corpus3.svg -only_ascii=1
|
||||
```
|
||||
|
||||
To get a list of available options, `cargo fuzz run render_document -- -help=1`
|
||||
|
||||
### Using dictionaries
|
||||
|
||||
There are existing SVG, XML, and CSS dictionaries that can be used with fuzz
|
||||
targets:
|
||||
|
||||
```sh
|
||||
curl https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/{css,svg,xml}.dict > combined.dict
|
||||
|
||||
cargo fuzz run render_document corpus/ -- -dict=combined.dict
|
||||
```
|
||||
|
||||
## Reproducing a failure
|
||||
|
||||
You can reproduce a failure by supplying a path to the fuzzed data:
|
||||
|
||||
`cargo fuzz run render_document fuzzed.svg`
|
||||
|
||||
Fuzz targets can also be run inside of a debugger for further debugging
|
||||
information:
|
||||
|
||||
```bash
|
||||
FUZZ_TARGET=$(find ./target/*/release/ -type f -name render_document)
|
||||
gdb --args "$FUZZ_TARGET" fuzzed.svg
|
||||
```
|
||||
|
||||
## Suppressing leak reports
|
||||
|
||||
You can suppress spurious leak reports by specifying a suppressions file via the
|
||||
`LSAN_OPTIONS` environment variable:
|
||||
|
||||
```bash
|
||||
LSAN_OPTIONS="suppressions=../tools/lsan.supp" cargo fuzz run render_document fuzzed.svg
|
||||
```
|
||||
|
||||
## Related documents
|
||||
|
||||
See `../afl-fuzz/README.md` for a to-do list for people who want to help with
|
||||
fuzzing.
|
||||
|
||||
See `../devel-docs/oss_fuzz.rst` for an overview of librsvg's integration with
|
||||
OSS-Fuzz.
|
||||
Reference in New Issue
Block a user