From 3aecf2e0577b0bb1f49cc6bb58c82d293219a646 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sat, 30 Jan 2016 20:41:27 -0600 Subject: [PATCH] Add afl-fuzz files --- tools/afl-fuzz/Makefile | 12 +++++++ tools/afl-fuzz/deflate_compress/fuzz.c | 40 +++++++++++++++++++++ tools/afl-fuzz/deflate_compress/inputs/0 | Bin 0 -> 500 bytes tools/afl-fuzz/deflate_decompress/fuzz.c | 28 +++++++++++++++ tools/afl-fuzz/deflate_decompress/inputs/0 | 3 ++ tools/afl-fuzz/gzip_decompress/fuzz.c | 28 +++++++++++++++ tools/afl-fuzz/gzip_decompress/inputs/0 | Bin 0 -> 187 bytes tools/afl-fuzz/prepare_for_fuzz.sh | 14 ++++++++ tools/afl-fuzz/zlib_decompress/fuzz.c | 28 +++++++++++++++ tools/afl-fuzz/zlib_decompress/inputs/0 | 3 ++ 10 files changed, 156 insertions(+) create mode 100644 tools/afl-fuzz/Makefile create mode 100644 tools/afl-fuzz/deflate_compress/fuzz.c create mode 100644 tools/afl-fuzz/deflate_compress/inputs/0 create mode 100644 tools/afl-fuzz/deflate_decompress/fuzz.c create mode 100644 tools/afl-fuzz/deflate_decompress/inputs/0 create mode 100644 tools/afl-fuzz/gzip_decompress/fuzz.c create mode 100644 tools/afl-fuzz/gzip_decompress/inputs/0 create mode 100755 tools/afl-fuzz/prepare_for_fuzz.sh create mode 100644 tools/afl-fuzz/zlib_decompress/fuzz.c create mode 100644 tools/afl-fuzz/zlib_decompress/inputs/0 diff --git a/tools/afl-fuzz/Makefile b/tools/afl-fuzz/Makefile new file mode 100644 index 0000000..c819797 --- /dev/null +++ b/tools/afl-fuzz/Makefile @@ -0,0 +1,12 @@ +SRC := $(wildcard */*.c) +EXE := $(SRC:.c=) + +CFLAGS := -O2 -s +LDLIBS := -ldeflate +LDFLAGS := -L../.. +CPPFLAGS := -I../.. + +all:$(EXE) + +clean: + rm -f $(EXE) diff --git a/tools/afl-fuzz/deflate_compress/fuzz.c b/tools/afl-fuzz/deflate_compress/fuzz.c new file mode 100644 index 0000000..970cf51 --- /dev/null +++ b/tools/afl-fuzz/deflate_compress/fuzz.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct deflate_decompressor *d; + struct deflate_compressor *c; + int ret; + int fd = open(argv[1], O_RDONLY); + struct stat stbuf; + assert(fd >= 0); + ret = fstat(fd, &stbuf); + assert(!ret); + + char in[stbuf.st_size]; + ret = read(fd, in, sizeof in); + assert(ret == sizeof in); + + c = deflate_alloc_compressor(6); + d = deflate_alloc_decompressor(); + + char out[sizeof(in)]; + char checkarray[sizeof(in)]; + + size_t csize = deflate_compress(c, in,sizeof in, out, sizeof out); + if (csize) { + enum decompress_result res; + res = deflate_decompress(d, out, csize, checkarray, sizeof in, NULL); + assert(!res); + assert(!memcmp(in, checkarray, sizeof in)); + } + + deflate_free_compressor(c); + deflate_free_decompressor(d); + return 0; +} diff --git a/tools/afl-fuzz/deflate_compress/inputs/0 b/tools/afl-fuzz/deflate_compress/inputs/0 new file mode 100644 index 0000000000000000000000000000000000000000..875bce73adf5f19f8fd08c3a41cb0b50688961c2 GIT binary patch literal 500 zcmZR$CCmT@U!XK2Lp($PL3W5i*pr|%6NABg82dI{%y2%8tt<{v&%|IfAI8>$iy6;n zkcG%|L1{*YC>S#iE)*uJ08y0yr9q~_*el>-hVvn+5ab7_oQMNNjFBM}#uSALu`qmQ z48^ID!vLl+1jf`gg$RK(hRlcYF4@8r!kDk^kQKssH|*gGVN7JFgy3|F6x29IhCmoI W9m$5k`7j>LSfD}}6WNA96dM2@kS(bI literal 0 HcmV?d00001 diff --git a/tools/afl-fuzz/deflate_decompress/fuzz.c b/tools/afl-fuzz/deflate_decompress/fuzz.c new file mode 100644 index 0000000..fcd685f --- /dev/null +++ b/tools/afl-fuzz/deflate_decompress/fuzz.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct deflate_decompressor *d; + int ret; + int fd = open(argv[1], O_RDONLY); + struct stat stbuf; + assert(fd >= 0); + ret = fstat(fd, &stbuf); + assert(!ret); + + char in[stbuf.st_size]; + ret = read(fd, in, sizeof in); + assert(ret == sizeof in); + + char out[sizeof(in) * 3]; + + d = deflate_alloc_decompressor(); + + deflate_decompress(d, in, sizeof in, out, sizeof out, NULL); + deflate_free_decompressor(d); + return 0; +} diff --git a/tools/afl-fuzz/deflate_decompress/inputs/0 b/tools/afl-fuzz/deflate_decompress/inputs/0 new file mode 100644 index 0000000..19e3a34 --- /dev/null +++ b/tools/afl-fuzz/deflate_decompress/inputs/0 @@ -0,0 +1,3 @@ +u1 +@EgBl5 +V6jX{i=l=Οl?tD =G% 2xԇ7eDs[Ukq |R/뮰*FMzv`r1B,lDuYj#0<՞20hE`IW \ No newline at end of file diff --git a/tools/afl-fuzz/gzip_decompress/fuzz.c b/tools/afl-fuzz/gzip_decompress/fuzz.c new file mode 100644 index 0000000..200b611 --- /dev/null +++ b/tools/afl-fuzz/gzip_decompress/fuzz.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct deflate_decompressor *d; + int ret; + int fd = open(argv[1], O_RDONLY); + struct stat stbuf; + assert(fd >= 0); + ret = fstat(fd, &stbuf); + assert(!ret); + + char in[stbuf.st_size]; + ret = read(fd, in, sizeof in); + assert(ret == sizeof in); + + char out[sizeof(in) * 3]; + + d = deflate_alloc_decompressor(); + + gzip_decompress(d, in, sizeof in, out, sizeof out, NULL); + deflate_free_decompressor(d); + return 0; +} diff --git a/tools/afl-fuzz/gzip_decompress/inputs/0 b/tools/afl-fuzz/gzip_decompress/inputs/0 new file mode 100644 index 0000000000000000000000000000000000000000..813c75359a868df30db47c5ca0cae54082fdf475 GIT binary patch literal 187 zcmV;s07U;EiwFP!00000|8^ zkCo^VYy>@k;Le|{(QNbI{GFLUbnVdRy+jS|sPYayuSd}aB@Di)moj+Nhc{*LM7a`E~>#ndW2S%bzdYZg;u$5rY0mt)l&@rm>LK}hi pENnz|S!yFNJjK|pc(003|SSEK*{ literal 0 HcmV?d00001 diff --git a/tools/afl-fuzz/prepare_for_fuzz.sh b/tools/afl-fuzz/prepare_for_fuzz.sh new file mode 100755 index 0000000..06911c1 --- /dev/null +++ b/tools/afl-fuzz/prepare_for_fuzz.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +make -C ../../ clean +make clean +AFL_HARDEN=1 make CC=afl-gcc -C ../../ +AFL_HARDEN=1 make CC=afl-gcc + +for dir in $(find . -mindepth 1 -maxdepth 1 -type d); do + rm -rf /tmp/$dir + cp -va $dir /tmp/$dir + mkdir -p /tmp/$dir/outputs +done diff --git a/tools/afl-fuzz/zlib_decompress/fuzz.c b/tools/afl-fuzz/zlib_decompress/fuzz.c new file mode 100644 index 0000000..db38252 --- /dev/null +++ b/tools/afl-fuzz/zlib_decompress/fuzz.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct deflate_decompressor *d; + int ret; + int fd = open(argv[1], O_RDONLY); + struct stat stbuf; + assert(fd >= 0); + ret = fstat(fd, &stbuf); + assert(!ret); + + char in[stbuf.st_size]; + ret = read(fd, in, sizeof in); + assert(ret == sizeof in); + + char out[sizeof(in) * 3]; + + d = deflate_alloc_decompressor(); + + zlib_decompress(d, in, sizeof in, out, sizeof out, NULL); + deflate_free_decompressor(d); + return 0; +} diff --git a/tools/afl-fuzz/zlib_decompress/inputs/0 b/tools/afl-fuzz/zlib_decompress/inputs/0 new file mode 100644 index 0000000..292e972 --- /dev/null +++ b/tools/afl-fuzz/zlib_decompress/inputs/0 @@ -0,0 +1,3 @@ +xu1 +@EgBl5 +V6jX{i=l=Οl?tD =G% 2xԇ7eDs[Ukq |R/뮰*FMzv`r1B,lDuYj#0<՞20hE`IW- \ No newline at end of file