]> granicus.if.org Git - llvm/commitdiff
[libFuzzer] move common parts of shell scripts into a separate file
authorKostya Serebryany <kcc@google.com>
Fri, 30 Sep 2016 21:12:30 +0000 (21:12 +0000)
committerKostya Serebryany <kcc@google.com>
Fri, 30 Sep 2016 21:12:30 +0000 (21:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282954 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Fuzzer/fuzzer-test-suite/build-and-test.sh [new file with mode: 0755]
lib/Fuzzer/fuzzer-test-suite/c-ares-CVE-2016-5180/build.sh
lib/Fuzzer/fuzzer-test-suite/c-ares-CVE-2016-5180/test.sh
lib/Fuzzer/fuzzer-test-suite/common.sh [new file with mode: 0644]
lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh
lib/Fuzzer/fuzzer-test-suite/openssl-1.0.2d/build.sh
lib/Fuzzer/fuzzer-test-suite/openssl-1.0.2d/test.sh
lib/Fuzzer/fuzzer-test-suite/re2-2014-12-09/build.sh
lib/Fuzzer/fuzzer-test-suite/re2-2014-12-09/test.sh

diff --git a/lib/Fuzzer/fuzzer-test-suite/build-and-test.sh b/lib/Fuzzer/fuzzer-test-suite/build-and-test.sh
new file mode 100755 (executable)
index 0000000..e144fe6
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash
+. $(dirname $0)/common.sh
+BUILD=$SCRIPT_DIR/$1/build.sh
+TEST=$SCRIPT_DIR/$1/test.sh
+
+[ ! -e $BUILD ] && echo "NO SUCH FILE: $BUILD" && exit 1
+[ ! -e $TEST ]  && echo "NO SUCH FILE: $TEST" && exit 1
+
+RUNDIR="RUNDIR-$1"
+mkdir -p $RUNDIR
+cd $RUNDIR
+$BUILD && $TEST
+
index d95eba3c94b1013bf76f3336b46c81d797e9c03b..9c0a0e869a27b5c0338629c33a80c2fd75b83fe8 100755 (executable)
@@ -1,22 +1,11 @@
 #!/bin/bash
-
-[ -e $(basename $0) ] && echo "PLEASE USE THIS SCRIPT FROM ANOTHER DIR" && exit 1
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-LIBFUZZER_SRC=$(dirname $(dirname $SCRIPT_DIR))
-
-FUZZ_CXXFLAGS="-O2 -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-gep,trace-div"
-
-get() {
-  [ ! -e SRC ] && git clone https://github.com/c-ares/c-ares.git SRC && (cd SRC && git reset --hard 51fbb479f7948fca2ace3ff34a15ff27e796afdd)
-}
+. $(dirname $0)/../common.sh
 build_lib() {
   rm -rf BUILD
   cp -rf SRC BUILD
   (cd BUILD && ./buildconf && ./configure CC="clang $FUZZ_CXXFLAGS" &&  make -j)
 }
-
-get
+get_git_revision https://github.com/c-ares/c-ares.git 51fbb479f7948fca2ace3ff34a15ff27e796afdd SRC
 build_lib
-$LIBFUZZER_SRC/build.sh
+build_libfuzzer
 clang++ -g $SCRIPT_DIR/target.cc -I  BUILD BUILD/.libs/libcares.a libFuzzer.a  $FUZZ_CXXFLAGS -o $EXECUTABLE_NAME_BASE
index b40d4af20da85b78bc9aa5482a775cec71be11f7..85da22dd8f506d226771f3801570476e67b1dc58 100755 (executable)
@@ -1,7 +1,5 @@
 #!/bin/bash
+. $(dirname $0)/../common.sh
 set -x
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-CORPUS=CORPUS-$EXECUTABLE_NAME_BASE
 [ -e $EXECUTABLE_NAME_BASE ] && ./$EXECUTABLE_NAME_BASE -max_total_time=10 2>&1 | tee log
 grep -Pzo "(?s)ERROR: AddressSanitizer: heap-buffer-overflow.*WRITE of size 1.*ares_create_query.*is located 0 bytes to the right of" log
diff --git a/lib/Fuzzer/fuzzer-test-suite/common.sh b/lib/Fuzzer/fuzzer-test-suite/common.sh
new file mode 100644 (file)
index 0000000..7fe7ffb
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Don't allow to call these scripts from their directories.
+[ -e $(basename $0) ] && echo "PLEASE USE THIS SCRIPT FROM ANOTHER DIR" && exit 1
+SCRIPT_DIR=$(dirname $0)
+EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
+LIBFUZZER_SRC=$(dirname $(dirname $SCRIPT_DIR))
+FUZZ_CXXFLAGS="-O2 -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-gep,trace-div"
+CORPUS=CORPUS-$EXECUTABLE_NAME_BASE
+JOBS=8
+
+get_git_revision() {
+  GIT_REPO="$1"
+  GIT_REVISION="$2"
+  TO_DIR="$3"
+  [ ! -e $TO_DIR ] && git clone $GIT_REPO $TO_DIR && (cd $TO_DIR && git reset --hard $GIT_REVISION)
+}
+
+get_git_tag() {
+  GIT_REPO="$1"
+  GIT_TAG="$2"
+  TO_DIR="$3"
+  [ ! -e $TO_DIR ] && git clone $GIT_REPO $TO_DIR && (cd $TO_DIR && git checkout $GIT_TAG)
+}
+
+
+build_libfuzzer() {
+  $LIBFUZZER_SRC/build.sh
+}
index 69fa7241b860ca524678b89ddbe97ef9739dff8e..9b7f6aef5e13b5e946caa3743138e06453a170bd 100755 (executable)
@@ -1,25 +1,13 @@
 #!/bin/bash
+. $(dirname $0)/../common.sh
 
-[ -e $(basename $0) ] && echo "PLEASE USE THIS SCRIPT FROM ANOTHER DIR" && exit 1
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-LIBFUZZER_SRC=$(dirname $(dirname $SCRIPT_DIR))
-JOBS=20
-
-# FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=edge"
-FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-div,trace-gep"
-
-get() {
-  [ ! -e SRC ] && git clone https://github.com/openssl/openssl.git SRC && (cd SRC && git checkout OpenSSL_1_0_1f)
-#  [ ! -e SRC ] && wget https://www.openssl.org/source/openssl-1.0.1f.tar.gz && tar xf openssl-1.0.1f.tar.gz && mv openssl-1.0.1f SRC
-}
 build_lib() {
   rm -rf BUILD
   cp -rf SRC BUILD
   (cd BUILD && ./config && make clean && make CC="clang $FUZZ_CXXFLAGS"  -j $JOBS)
 }
 
-get
+get_git_tag https://github.com/openssl/openssl.git OpenSSL_1_0_1f SRC
 build_lib
-$LIBFUZZER_SRC/build.sh
+build_libfuzzer
 clang++ -g $SCRIPT_DIR/target.cc -DCERT_PATH=\"$SCRIPT_DIR/\"  $FUZZ_CXXFLAGS BUILD/libssl.a BUILD/libcrypto.a libFuzzer.a -o $EXECUTABLE_NAME_BASE
index e60818be3ccc686de29e9e25e6a1f852281e9c61..a22ea4e0a28c1bcb640c676cd6e66cbc1fe5dfe5 100755 (executable)
@@ -1,25 +1,13 @@
 #!/bin/bash
+. $(dirname $0)/../common.sh
 
-[ -e $(basename $0) ] && echo "PLEASE USE THIS SCRIPT FROM ANOTHER DIR" && exit 1
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-LIBFUZZER_SRC=$(dirname $(dirname $SCRIPT_DIR))
-JOBS=20
-
-# FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=edge"
-FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-div,trace-gep"
-
-get() {
-  [ ! -e SRC ] && git clone https://github.com/openssl/openssl.git SRC && (cd SRC && git checkout OpenSSL_1_0_2d)
-#  [ ! -e SRC ] && wget https://www.openssl.org/source/openssl-1.0.1f.tar.gz && tar xf openssl-1.0.1f.tar.gz && mv openssl-1.0.1f SRC
-}
 build_lib() {
   rm -rf BUILD
   cp -rf SRC BUILD
   (cd BUILD && ./config && make clean && make CC="clang $FUZZ_CXXFLAGS"  -j $JOBS)
 }
 
-get
+get_git_tag https://github.com/openssl/openssl.git OpenSSL_1_0_2d SRC
 build_lib
-$LIBFUZZER_SRC/build.sh
-echo clang++ -g $SCRIPT_DIR/target.cc -DCERT_PATH=\"$SCRIPT_DIR/\"  $FUZZ_CXXFLAGS BUILD/libssl.a BUILD/libcrypto.a libFuzzer.a -lgcrypt -o $EXECUTABLE_NAME_BASE
+build_libfuzzer
+clang++ -g $SCRIPT_DIR/target.cc -DCERT_PATH=\"$SCRIPT_DIR/\"  $FUZZ_CXXFLAGS BUILD/libssl.a BUILD/libcrypto.a libFuzzer.a -lgcrypt -o $EXECUTABLE_NAME_BASE
index e528b043481c0eb126ca068e7c6577cd06ebf60a..0473c3d246fd6b0b61953c80c0feea42615ac71a 100755 (executable)
@@ -1,9 +1,6 @@
 #!/bin/bash
 set -x
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-CORPUS=CORPUS-$EXECUTABLE_NAME_BASE
-JOBS=8
+. $(dirname $0)/../common.sh
 rm -rf $CORPUS
 mkdir $CORPUS
 [ -e $EXECUTABLE_NAME_BASE ] && ./$EXECUTABLE_NAME_BASE -artifact_prefix=$CORPUS/ -max_len=512  -jobs=$JOBS -workers=$JOBS $CORPUS
index c2533bb0dc34a956ec176c50e875f06262dcf715..7fe0d11a97fa215936e891c0bb41bf34d191cd15 100755 (executable)
@@ -1,22 +1,13 @@
 #!/bin/bash
+. $(dirname $0)/../common.sh
 
-[ -e $(basename $0) ] && echo "PLEASE USE THIS SCRIPT FROM ANOTHER DIR" && exit 1
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-LIBFUZZER_SRC=$(dirname $(dirname $SCRIPT_DIR))
-
-FUZZ_CXXFLAGS="-O2 -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-gep,trace-div"
-
-get() {
-  [ ! -e SRC ] && git clone https://github.com/google/re2.git SRC && (cd SRC && git reset --hard 499ef7eff7455ce9c9fae86111d4a77b6ac335de)
-}
 build_lib() {
   rm -rf BUILD
   cp -rf SRC BUILD
   (cd BUILD && make clean && CXX=clang++ CXXFLAGS="$FUZZ_CXXFLAGS"  make -j)
 }
 
-get
+get_git_revision https://github.com/google/re2.git 499ef7eff7455ce9c9fae86111d4a77b6ac335de SRC
 build_lib
-$LIBFUZZER_SRC/build.sh
+build_libfuzzer
 clang++ -g $SCRIPT_DIR/target.cc -I  BUILD BUILD/obj/libre2.a libFuzzer.a  $FUZZ_CXXFLAGS -o $EXECUTABLE_NAME_BASE
index 3e07a956234829b8dbc419ed18a9be761c251b3d..13b811d6e815e97804edeecbab6b35d26464605d 100755 (executable)
@@ -1,9 +1,6 @@
 #!/bin/bash
+. $(dirname $0)/../common.sh
 set -x
-SCRIPT_DIR=$(dirname $0)
-EXECUTABLE_NAME_BASE=$(basename $SCRIPT_DIR)
-CORPUS=CORPUS-$EXECUTABLE_NAME_BASE
-JOBS=8
 rm -rf $CORPUS
 mkdir $CORPUS
 [ -e $EXECUTABLE_NAME_BASE ] && ./$EXECUTABLE_NAME_BASE -exit_on_src_pos=re2/dfa.cc:474 -exit_on_src_pos=re2/dfa.cc:474  -runs=1000000 -jobs=$JOBS -workers=$JOBS $CORPUS