This crate provides basic image processing functions and methods for converting to and from various image formats.
$ sudo docker build -t oss-sydr-fuzz-image-rs .
Unzip Sydr (sydr.zip) in projects/image-rs directory:
$ unzip sydr.zip
Run docker:
$ sudo docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /etc/localtime:/etc/localtime:ro --rm -it -v $PWD:/fuzz oss-sydr-fuzz-image-rs /bin/bash
You could find initial seeds in image repo and copy them to /fuzz/corpus
directory. Example for tiff parser:
# mkdir /fuzz/corpus && find /image -name "*.tiff" -exec cp {} /fuzz/corpus \;
Change directory to /fuzz:
# cd /fuzz
Run hybrid fuzzing:
# sydr-fuzz -c tiff.toml run
Collect coverage:
# sydr-fuzz -c tiff.toml cov-export -- -format=lcov > tiff.lcov
# genhtml --ignore-errors source -o tiff_html tiff.lcov
Image-rs/image project has 12 fuzz targets.
# cd /fuzz
# sydr-fuzz -c bmp.toml run
# cd /fuzz
# sydr-fuzz -c exr.toml run
# cd /fuzz
# sydr-fuzz -c gif.toml run
# cd /fuzz
# sydr-fuzz -c guess.toml run
# cd /fuzz
# sydr-fuzz -c hdr.toml run
# cd /fuzz
# sydr-fuzz -c ico.toml run
# cd /fuzz
# sydr-fuzz -c jpeg.toml run
# cd /fuzz
# sydr-fuzz -c png.toml run
# cd /fuzz
# sydr-fuzz -c pnm.toml run
# cd /fuzz
# sydr-fuzz -c tga.toml run
# cd /fuzz
# sydr-fuzz -c tiff.toml run
# cd /fuzz
# sydr-fuzz -c webp.toml run
# cd /fuzz
# sydr-fuzz -c <name>-afl++.toml run