aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Bhargava Shastry <bshas3@gmail.com>2018-07-09 21:38:52 +0200
committerGravatar jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com>2018-07-09 12:38:52 -0700
commit85be4d0322806a151e8686ec2e7230c458888cdd (patch)
tree7c28cce48835575d98d9b16ee6f2eee133cb6b68
parent40326f9520138bed35d10707a7038aa1ef86a3de (diff)
[xmlsec] oss-fuzz integration (#1600)
-rw-r--r--projects/xmlsec/Dockerfile23
-rwxr-xr-xprojects/xmlsec/build.sh45
-rw-r--r--projects/xmlsec/project.yaml7
3 files changed, 75 insertions, 0 deletions
diff --git a/projects/xmlsec/Dockerfile b/projects/xmlsec/Dockerfile
new file mode 100644
index 00000000..eb711ab8
--- /dev/null
+++ b/projects/xmlsec/Dockerfile
@@ -0,0 +1,23 @@
+# 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
+COPY build.sh $SRC/
diff --git a/projects/xmlsec/build.sh b/projects/xmlsec/build.sh
new file mode 100755
index 00000000..82bdb0ae
--- /dev/null
+++ b/projects/xmlsec/build.sh
@@ -0,0 +1,45 @@
+#!/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/xmlsec
+autoreconf -vfi
+./configure --with-libxml="$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/libxml2.a -lxslt -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 00000000..48cbf023
--- /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