diff --git a/projects/libpcap/Dockerfile b/projects/libpcap/Dockerfile new file mode 100644 index 000000000..91d870e75 --- /dev/null +++ b/projects/libpcap/Dockerfile @@ -0,0 +1,24 @@ +# Copyright 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +FROM gcr.io/oss-fuzz-base/base-builder +MAINTAINER security@tcpdump.org +RUN apt-get update && apt-get install -y make cmake flex bison +RUN git clone --depth 1 https://github.com/the-tcpdump-group/libpcap.git libpcap +# for corpus as wireshark +RUN git clone --depth=1 https://github.com/the-tcpdump-group/tcpdump.git tcpdump +WORKDIR $SRC +COPY build.sh $SRC/ diff --git a/projects/libpcap/build.sh b/projects/libpcap/build.sh new file mode 100755 index 000000000..97cf4aa55 --- /dev/null +++ b/projects/libpcap/build.sh @@ -0,0 +1,44 @@ +#!/bin/bash -eu +# Copyright 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +cd libpcap +# build project +mkdir build +cd build +cmake .. +make + + +# build fuzz targets +for target in pcap filter both +do + $CC $CFLAGS -I.. -c ../testprogs/fuzz/fuzz_$target.c -o fuzz_$target.o + $CXX $CXXFLAGS fuzz_$target.o -o $OUT/fuzz_$target libpcap.a -lFuzzingEngine +done + +# export other associated stuff +cd .. +cp testprogs/fuzz/fuzz_*.options $OUT/ +# builds corpus +cd $SRC/tcpdump/ +zip -r fuzz_pcap_seed_corpus.zip tests/ +cp fuzz_pcap_seed_corpus.zip $OUT/ +cd $SRC/libpcap/testprogs/BPF +mkdir corpus +ls *.txt | while read i; do tail -1 $i > corpus/$i; done +zip -r fuzz_filter_seed_corpus.zip corpus/ +cp fuzz_filter_seed_corpus.zip $OUT/ diff --git a/projects/libpcap/project.yaml b/projects/libpcap/project.yaml new file mode 100644 index 000000000..3333315d1 --- /dev/null +++ b/projects/libpcap/project.yaml @@ -0,0 +1,8 @@ +homepage: "https://www.tcpdump.org" +primary_contact: "security@tcpdump.org" +auto_ccs : "p.antoine@catenacyber.fr" + +sanitizers: +- address +- memory +- undefined