blob: e8906b3188e2dbe91ae8fc6007de0c60799edb98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
DISTFILES = Makefile \
iri.c
include ../../config.mk
CC = afl-clang
COBJS = ${COMPATS:.c=.o}
REG_COMPATS = ${COBJS:%=../../%}
IRI_SRCS = iri.c ../../iri.c ../../utf8.c ../../log.c
IRI_OBJS = ${IRI_SRCS:.c=.o} ${REG_COMPATS}
PROXY_SRCS = proxy.c ../../proxy-proto.c
PROXY_OBJS = ${PROXY_SRCS:.c=.o} ${REG_COMPATS}
.PHONY: all data clean dist
all:
@echo run ${MAKE} fuzz-iri to fuzz the IRI parser
@echo run ${MAKE} fuzz-proxy to fuzz the proxy v1 protocol parser
fuzz-iri: iri
rm -rf in out
mkdir -p in out
echo 'gemini://omarpolo.com/' > in/simple
echo 'https://op:123@omarpolo.com/' > in/auth
echo 'ftp://op@omarpolo.com/a/bb/c' > in/path
echo 'gemini://omarpolo.com/?some=val' > in/query
echo 'gemini://omarpolo.com/b/#xyz' > in/fragment
echo 'gemini://omarpolo.com/b/?x=y#xyz' > in/qf
echo 'ssh://omarpolo.com/%2F/' > in/enc
echo 'http://omarpolo.com/foo/.././' > in/dots
echo 'http://omarpolo.com/////././' > in/slash
afl-fuzz -i in -o out -- ./iri
fuzz-proxy: proxy
rm -rf in out
mkdir -p in out
printf 'PROXY TCP4 255.255.255.255 255.255.255.255 65535 65535\r\n' >in/ipv4
printf 'PROXY TCP6 fe80::1 fd4b:b287:5c6f:1f4::2 65535 65535\r\n' >in/ipv6
printf 'PROXY UNKNOWN\r\n' > in/unknown
afl-fuzz -i in -o out -- ./proxy
iri: ${IRI_OBJS}
${CC} ${IRI_OBJS} -o $@ ${LIBS} ${LDFLAGS}
proxy: ${PROXY_OBJS}
${CC} ${PROXY_OBJS} -o $@ ${LIBS} ${LDFLAGS}
.c.o:
${CC} -I../.. ${CFLAGS} -c $< -o $@
clean:
rm -f *.o iri
|