diff --git a/projects/xmlsec/Dockerfile b/projects/xmlsec/Dockerfile new file mode 100644 index 000000000..1fc83ef35 --- /dev/null +++ b/projects/xmlsec/Dockerfile @@ -0,0 +1,24 @@ +# Copyright 2016 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 +RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config \ + libssl-dev libxslt-dev wget + +RUN git clone --depth 1 https://github.com/lsh123/xmlsec +RUN git clone --depth 1 git://git.gnome.org/libxml2 +RUN git clone --depth 1 git://git.gnome.org/libxslt +COPY build.sh $SRC/ diff --git a/projects/xmlsec/build.sh b/projects/xmlsec/build.sh new file mode 100755 index 000000000..99c4296ae --- /dev/null +++ b/projects/xmlsec/build.sh @@ -0,0 +1,51 @@ +#!/bin/bash -eu +# +# Copyright 2016 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. +# +################################################################################ + +# Build dependencies. +export XMLSEC_DEPS_PATH=$SRC/xmlsec_deps +mkdir -p $XMLSEC_DEPS_PATH + +cd $SRC/libxml2 +./autogen.sh +./configure --prefix="$XMLSEC_DEPS_PATH" +make clean +make -j$(nproc) all +make install + +cd $SRC/libxslt +./autogen.sh --prefix="$XMLSEC_DEPS_PATH" +make -j$(nproc) +make install + +cd $SRC/xmlsec +autoreconf -vfi +./configure --with-libxml="$XMLSEC_DEPS_PATH" --with-libxslt="$XMLSEC_DEPS_PATH" +make -j$(nproc) clean +make -j$(nproc) all + +for file in $SRC/xmlsec/tests/oss-fuzz/*_target.c; do + b=$(basename $file _target.c) + $CC $CFLAGS -c $file -I /usr/include/libxml2 -I ./include/ \ + -o $OUT/${b}_target.o + $CXX $CXXFLAGS $OUT/${b}_target.o ./src/.libs/libxmlsec1.a \ + ./src/openssl/.libs/libxmlsec1-openssl.a -lFuzzingEngine \ + "$XMLSEC_DEPS_PATH"/lib/libxslt.a "$XMLSEC_DEPS_PATH"/lib/libxml2.a \ + -lz -o $OUT/${b}_fuzzer +done +cp $SRC/xmlsec/tests/oss-fuzz/config/*.options $OUT/ +wget -O $OUT/xml.dict https://raw.githubusercontent.com/mirrorer/afl/master/dictionaries/xml.dict diff --git a/projects/xmlsec/project.yaml b/projects/xmlsec/project.yaml new file mode 100644 index 000000000..48cbf0238 --- /dev/null +++ b/projects/xmlsec/project.yaml @@ -0,0 +1,7 @@ +homepage: "https://www.aleksey.com/xmlsec/" +primary_contact: "aleksey@aleksey.com" +auto_ccs: + - "alekseysanin@gmail.com" +sanitizers: + - address + - undefined