aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-03-19 19:04:59 +0100
committerGitHub <noreply@github.com>2021-03-19 19:04:59 +0100
commite98cd008222aa3bfea9b696ad756163302437eb3 (patch)
tree56cce5a15206634bd1877c428a5b15c064d7fa53 /test
parent23f7bee81c46ad4f0f65fa56d08064ab5f1e2e6f (diff)
parent2102264acf5c271b7560a82771b3af8136af9354 (diff)
downloadafl++-e98cd008222aa3bfea9b696ad756163302437eb3.tar.gz
Merge pull request #831 from AFLplusplus/dev
Push to stable
Diffstat (limited to 'test')
-rw-r--r--test/test-dlopen.c23
-rwxr-xr-xtest/test-llvm.sh42
-rw-r--r--test/travis/bionic/Dockerfile45
-rw-r--r--test/travis/focal/Dockerfile45
-rw-r--r--test/travis/trusty/Dockerfile49
-rw-r--r--test/travis/xenial/Dockerfile46
6 files changed, 65 insertions, 185 deletions
diff --git a/test/test-dlopen.c b/test/test-dlopen.c
new file mode 100644
index 00000000..d08d9092
--- /dev/null
+++ b/test/test-dlopen.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <errno.h>
+#include <dlfcn.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv) {
+
+ if (!getenv("TEST_DLOPEN_TARGET")) return 1;
+ void *lib = dlopen(getenv("TEST_DLOPEN_TARGET"), RTLD_LAZY);
+ if (!lib) {
+
+ perror(dlerror());
+ return 2;
+
+ }
+
+ int (*func)(int, char **) = dlsym(lib, "main_exported");
+ if (!func) return 3;
+
+ return func(argc, argv);
+
+}
+
diff --git a/test/test-llvm.sh b/test/test-llvm.sh
index aa36af1b..3ef36b37 100755
--- a/test/test-llvm.sh
+++ b/test/test-llvm.sh
@@ -43,6 +43,48 @@ test -e ../afl-clang-fast -a -e ../split-switches-pass.so && {
$ECHO "$RED[!] llvm_mode failed"
CODE=1
}
+ ../afl-clang-fast -DTEST_SHARED_OBJECT=1 -z defs -fPIC -shared -o test-instr.so ../test-instr.c > /dev/null 2>&1
+ test -e test-instr.so && {
+ $ECHO "$GREEN[+] llvm_mode shared object with -z defs compilation succeeded"
+ ../afl-clang-fast -o test-dlopen.plain test-dlopen.c -ldl > /dev/null 2>&1
+ test -e test-dlopen.plain && {
+ $ECHO "$GREEN[+] llvm_mode test-dlopen compilation succeeded"
+ echo 0 | TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ./test-dlopen.plain > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ $ECHO "$RED[!] llvm_mode test-dlopen exits with an error"
+ CODE=1
+ fi
+ echo 0 | TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.0 -r -- ./test-dlopen.plain > /dev/null 2>&1
+ TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.1 -r -- ./test-dlopen.plain < /dev/null > /dev/null 2>&1
+ test -e test-dlopen.plain.0 -a -e test-dlopen.plain.1 && {
+ diff test-dlopen.plain.0 test-dlopen.plain.1 > /dev/null 2>&1 && {
+ $ECHO "$RED[!] llvm_mode test-dlopen instrumentation should be different on different input but is not"
+ CODE=1
+ } || {
+ $ECHO "$GREEN[+] llvm_mode test-dlopen instrumentation present and working correctly"
+ TUPLES=`echo 0|TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o /dev/null -- ./test-dlopen.plain 2>&1 | grep Captur | awk '{print$3}'`
+ test "$TUPLES" -gt 3 -a "$TUPLES" -lt 12 && {
+ $ECHO "$GREEN[+] llvm_mode test-dlopen run reported $TUPLES instrumented locations which is fine"
+ } || {
+ $ECHO "$RED[!] llvm_mode test-dlopen instrumentation produces weird numbers: $TUPLES"
+ CODE=1
+ }
+ test "$TUPLES" -lt 3 && SKIP=1
+ true
+ }
+ } || {
+ $ECHO "$RED[!] llvm_mode test-dlopen instrumentation failed"
+ CODE=1
+ }
+ } || {
+ $ECHO "$RED[!] llvm_mode test-dlopen compilation failed"
+ CODE=1
+ }
+ rm -f test-dlopen.plain test-dlopen.plain.0 test-dlopen.plain.1 test-instr.so
+ } || {
+ $ECHO "$RED[!] llvm_mode shared object with -z defs compilation failed"
+ CODE=1
+ }
test -e test-compcov.harden && test_compcov_binary_functionality ./test-compcov.harden && {
grep -Eq$GREPAOPTION 'stack_chk_fail|fstack-protector-all|fortified' test-compcov.harden > /dev/null 2>&1 && {
$ECHO "$GREEN[+] llvm_mode hardened mode succeeded and is working"
diff --git a/test/travis/bionic/Dockerfile b/test/travis/bionic/Dockerfile
deleted file mode 100644
index 00ab96f9..00000000
--- a/test/travis/bionic/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-# This is the Dockerfile for testing problems in Travis build
-# configuration #1.
-# This needs not to be rebuild everytime, most of the time it needs just to
-# be build once and then started when debugging issues and execute:
-# cd /AFLplusplus/
-# git pull
-# make distrib
-#
-FROM ubuntu:bionic
-LABEL "about"="travis image 1"
-RUN apt-get update && apt-get -y install \
- automake \
- bison \
- build-essential \
- clang \
- flex \
- git \
- python3.7 python3.7-dev \
- python3-setuptools \
- libtool libtool-bin \
- libglib2.0-dev \
- python-setuptools \
- wget \
- ca-certificates \
- libpixman-1-dev \
- gcc-7 gcc-7-plugin-dev libc++-7-dev \
- findutils \
- libcmocka-dev \
- joe nano vim locate \
- && rm -rf /var/lib/apt/lists/*
-
-ENV AFL_NO_UI=1
-ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
-ENV LLVM_CONFIG=llvm-config-6.0
-
-RUN cd / && \
- git clone https://github.com/AFLplusplus/AFLplusplus && \
- cd AFLplusplus && \
- git checkout dev && \
- cd qemu_mode && wget http://download.qemu-project.org/qemu-3.1.1.tar.xz && \
- cd ../unicorn_mode && git submodule init && git submodule update || true && \
- cd /AFLplusplus && ASAN_BUILD=1 make source-only || true
-
-WORKDIR /AFLplusplus
-CMD ["/bin/bash"]
diff --git a/test/travis/focal/Dockerfile b/test/travis/focal/Dockerfile
deleted file mode 100644
index 27d994f2..00000000
--- a/test/travis/focal/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-# This is the Dockerfile for testing problems in Travis build
-# configuration #1.
-# This needs not to be rebuild everytime, most of the time it needs just to
-# be build once and then started when debugging issues and execute:
-# cd /AFLplusplus/
-# git pull
-# make distrib
-#
-FROM ubuntu:focal
-LABEL "about"="travis image 4"
-ARG DEBIAN_FRONTEND=noninteractive
-RUN apt-get update && apt-get -y install \
- automake \
- bison \
- build-essential \
- clang \
- flex \
- git \
- python3 python3-dev \
- python3-setuptools \
- libtool libtool-bin \
- libglib2.0-dev \
- python-setuptools \
- wget \
- ca-certificates \
- libpixman-1-dev \
- gcc-9 gcc-9-plugin-dev libc++-9-dev \
- findutils \
- libcmocka-dev \
- joe nano vim locate \
- && rm -rf /var/lib/apt/lists/*
-
-ENV AFL_NO_UI=1
-ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
-
-RUN cd / && \
- git clone https://github.com/AFLplusplus/AFLplusplus && \
- cd AFLplusplus && \
- git checkout dev && \
- cd qemu_mode && wget http://download.qemu-project.org/qemu-3.1.1.tar.xz && \
- cd ../unicorn_mode && git submodule init && git submodule update || true && \
- cd /AFLplusplus && ASAN_BUILD=1 make source-only || true
-
-WORKDIR /AFLplusplus
-CMD ["/bin/bash"]
diff --git a/test/travis/trusty/Dockerfile b/test/travis/trusty/Dockerfile
deleted file mode 100644
index 0a6f1804..00000000
--- a/test/travis/trusty/Dockerfile
+++ /dev/null
@@ -1,49 +0,0 @@
-# This is the Dockerfile for testing problems in Travis builds
-# configuration #3.
-# This needs not to be rebuild everytime, most of the time it needs just to
-# be build once and then started when debugging issues and execute:
-# cd /AFLplusplus/
-# git pull
-# make distrib
-#
-FROM ubuntu:trusty
-LABEL "about"="travis image 3"
-RUN apt-get update && apt-get -y install \
- automake \
- bison \
- build-essential \
- clang \
- flex \
- git \
- python2.7 python2.7-dev \
- python3-setuptools \
- libtool \
- libglib2.0-dev \
- python-setuptools \
- wget \
- ca-certificates \
- libpixman-1-dev \
- gcc-4.8 gcc-4.8-plugin-dev \
- libc++-dev \
- findutils \
- libcmocka-dev \
- joe nano vim locate \
- && rm -rf /var/lib/apt/lists/*
-
-ENV TERM linux
-ENV DEBIAN_FRONTEND noninteractive
-ENV LLVM_CONFIG=llvm-config-3.4
-ENV AFL_NO_UI=1
-ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
-
-RUN cd / && \
- git clone https://github.com/AFLplusplus/AFLplusplus && \
- cd AFLplusplus && \
- git checkout dev && \
- cd qemu_mode && wget http://download.qemu-project.org/qemu-3.1.1.tar.xz && \
- cd ../unicorn_mode && git submodule init && git submodule update || true && \
- cd /AFLplusplus && ASAN_BUILD=1 make source-only || true
-
-WORKDIR /AFLplusplus
-CMD ["/bin/bash"]
-
diff --git a/test/travis/xenial/Dockerfile b/test/travis/xenial/Dockerfile
deleted file mode 100644
index 6aa4b1d1..00000000
--- a/test/travis/xenial/Dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-# This is the Dockerfile for testing problems in Travis builds
-# configuration #2.
-# This needs not to be rebuild everytime, most of the time it needs just to
-# be build once and then started when debugging issues and execute:
-# cd /AFLplusplus/
-# git pull
-# make distrib
-#
-FROM ubuntu:xenial
-LABEL "about"="travis image 2"
-RUN apt-get update && apt-get -y install \
- automake \
- bison \
- build-essential \
- clang-6.0 \
- flex \
- git \
- python3 python3-dev \
- python3-setuptools \
- libtool libtool-bin \
- libglib2.0-dev \
- python-setuptools \
- wget \
- ca-certificates \
- libpixman-1-dev \
- gcc-5 gcc-5-plugin-dev \
- libc++-dev \
- findutils \
- libcmocka-dev \
- joe nano vim locate \
- && rm -rf /var/lib/apt/lists/*
-
-ENV LLVM_CONFIG=llvm-config-6.0
-ENV AFL_NO_UI=1
-ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
-
-RUN cd / && \
- git clone https://github.com/AFLplusplus/AFLplusplus && \
- cd AFLplusplus && \
- git checkout dev && \
- cd qemu_mode && wget http://download.qemu-project.org/qemu-3.1.1.tar.xz && \
- cd ../unicorn_mode && git submodule init && git submodule update || true && \
- cd /AFLplusplus && ASAN_BUILD=1 make source-only || true
-
-WORKDIR /AFLplusplus
-CMD ["/bin/bash"]