mirror of
https://github.com/faye/websocket-driver-ruby.git
synced 2025-11-01 13:59:38 +00:00
68 lines
1.7 KiB
Makefile
68 lines
1.7 KiB
Makefile
CFLAGS := -I../websocket_driver -g -O2 -Wall -Wextra -fstack-protector-all
|
|
|
|
sources := frame.c message.c observer.c parser.c queue.c read_buffer.c
|
|
source_paths := $(sources:%=../websocket_driver/%)
|
|
objects := $(sources:%.c=tmp/%.o)
|
|
afl_objects := $(sources:%.c=afl/tmp/%.o)
|
|
|
|
AFL_CC := ./afl/afl-2*/afl-gcc
|
|
|
|
tests := $(wildcard *.c)
|
|
test_bin := $(tests:%.c=%)
|
|
|
|
.PHONY: clean fuzz test
|
|
|
|
clang_path := third_party/llvm-build/Release+Asserts
|
|
clang := $(clang_path)/bin/clang
|
|
PATH := $(clang_path)/bin:$(PATH)
|
|
|
|
$(clang):
|
|
mkdir TMP_CLANG
|
|
git clone https://chromium.googlesource.com/chromium/src/tools/clang TMP_CLANG/clang
|
|
./TMP_CLANG/clang/scripts/update.py
|
|
|
|
libFuzzer.a: $(clang)
|
|
git clone https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer
|
|
./Fuzzer/build.sh
|
|
|
|
fuzz_target: libFuzzer.a $(source_paths)
|
|
$(clang)++ -fsanitize-coverage=trace-pc-guard \
|
|
-fsanitize=address \
|
|
-I ../websocket_driver \
|
|
$^ \
|
|
fuzz_target.cc \
|
|
-o fuzz_target
|
|
|
|
fuzz: afl afl/in afl_target
|
|
./afl/afl-2*/afl-fuzz -i afl/in -o afl/out ./afl_target
|
|
|
|
afl:
|
|
mkdir -p afl
|
|
wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz -O afl/latest.tgz
|
|
cd afl && tar -zxvf latest.tgz
|
|
cd afl/afl-2* && make
|
|
|
|
afl/in:
|
|
mkdir -p afl/in
|
|
find autobahn -type f -size -1048576c -exec cp {} afl/in \;
|
|
|
|
afl_target: afl_target.c $(afl_objects)
|
|
$(AFL_CC) $(CFLAGS) -o $@ $^
|
|
|
|
afl/tmp/%.o: ../websocket_driver/%.c afl
|
|
@mkdir -p afl/tmp
|
|
$(AFL_CC) $(CFLAGS) -o $@ -c $<
|
|
|
|
test: check_mem
|
|
valgrind --leak-check=full ./$^
|
|
|
|
check_mem: check_mem.c $(objects)
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
tmp/%.o: ../websocket_driver/%.c
|
|
@mkdir -p tmp
|
|
$(CC) $(CFLAGS) -o $@ -c $<
|
|
|
|
clean:
|
|
rm -rf tmp $(test_bin) *.dSYM afl/in afl/out afl/tmp
|