From 611aa0defd63ebc3b4e3d16a86c495a9af120728 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 25 Jul 2019 10:10:32 +0200 Subject: add fuzzer test --- tests/fuzzer/CMakeLists.txt | 25 +++++++++++ tests/fuzzer/run_test.sh | 21 +++++++++ tests/fuzzer/testcase.cpp | 37 ++++++++++++++++ tests/fuzzer/testcase_dir/gooddata.txt | 79 ++++++++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+) create mode 100644 tests/fuzzer/CMakeLists.txt create mode 100755 tests/fuzzer/run_test.sh create mode 100644 tests/fuzzer/testcase.cpp create mode 100644 tests/fuzzer/testcase_dir/gooddata.txt (limited to 'tests/fuzzer') diff --git a/tests/fuzzer/CMakeLists.txt b/tests/fuzzer/CMakeLists.txt new file mode 100644 index 0000000..14386dc --- /dev/null +++ b/tests/fuzzer/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.10) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra") +set(CMAKE_AUTOMOC ON) + +find_package(Qt5Core REQUIRED) +find_package(Qt5Gui REQUIRED) +find_package(Qt5Svg REQUIRED) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +#SET (CMAKE_EXE_LINKER_FLAGS "-static") + +add_definitions(-DPAINTER_OP) +set(MODE "cli") + + + +set(fdsource testcase.cpp) + +add_executable(fuzzTestCase ${fdsource} ) + + +target_link_libraries(fuzzTestCase libdiceparser.a Qt5::Core Qt5::Gui Qt5::Svg) +#target_link_libraries(fuzzTestCase ) diff --git a/tests/fuzzer/run_test.sh b/tests/fuzzer/run_test.sh new file mode 100755 index 0000000..16579fd --- /dev/null +++ b/tests/fuzzer/run_test.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +rm -rf build +mkdir build +cd build +CC=afl-gcc CXX=afl-g++ cmake ../ && make +#export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" + + +#./fuzzTestCase ../testcase_dir/gooddata.txt +afl-fuzz -m 2G -i ../testcase_dir -o ../findings_dir ./fuzzTestCase @@ + + + +# as root + +# echo core >/proc/sys/kernel/core_pattern + +# echo performance | tee cpu*/cpufreq/scaling_governor + +# echo ondemand | tee cpu*/cpufreq/scaling_governor diff --git a/tests/fuzzer/testcase.cpp b/tests/fuzzer/testcase.cpp new file mode 100644 index 0000000..2660496 --- /dev/null +++ b/tests/fuzzer/testcase.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +static DiceParser* parser= new DiceParser(); + +void runCommand(const QString& cmd) +{ + if(parser->parseLine(cmd)) + { + // qDebug() << "valide cmd" << cmd; + parser->start(); + } +} + +int main(int argc, char** argv) +{ + // qDebug() << "first"; + QCoreApplication app(argc, argv); + + // qDebug() << "start"; + QFile file(app.arguments().at(1)); + // qDebug() << "file" << app.arguments().at(1); + if(!file.open(QIODevice::ReadOnly)) + return 1; + + auto line= file.readLine(); + while(!line.isEmpty()) + { + // qDebug() << line; + runCommand(QString::fromUtf8(line)); + line= file.readLine(); + } + + return 0; +} diff --git a/tests/fuzzer/testcase_dir/gooddata.txt b/tests/fuzzer/testcase_dir/gooddata.txt new file mode 100644 index 0000000..13f6911 --- /dev/null +++ b/tests/fuzzer/testcase_dir/gooddata.txt @@ -0,0 +1,79 @@ +1L[cheminée,chocolat,épée,arc,chute de pierre] +10d10c[>=6]-@c[=1] +10d10c[>=6]-@c[=1]-@c[=1] +10d10c[>6]+@c[=10] +1+1D10 +3d10c[>=5] +1+(4*3)D10 +2+4/4 +2D10*2D20*8 +1+(4*3)D10 +(4D6)D10 +1D100a[>=95]a[>=96]a[>=97]a[>=98]a[>=99]e[>=100] +3D100 +4k3 +10D10e[>=6]sc[>=6] +10D10e10s +10D10s +15D10e10c[8-10] +10d10e10 +(4+4)^4 +(1d20+20)*7/10 +20*7/10 +1D8+2D6+7 +D25 +1L[tete[10],ventre[50],jambe[40]] +2d6c[%2=0] +D25+D10 +D25;D10 +8+8+8 +1D20-88 +100*1D20*2D6 +2D6 # two 6sided dice +100/28*3 +100/8 +100*3*8 +help +la +10D10c[<2|>7] +10D6c[=2|=4|=6] +10D10e[=1|=10]k4 +1L[tete,bras droit,bras gauche,jambe droite,jambe gauche,ventre[6-7],buste[8-10]] +10+10s +1d6e6;1d4e4mk1 +1d6e6;1d4e4mk1 +400D20/400000 +1d100e[>=95]i[<5]{-1d100e95} +100*3*8 +1d100i[<70]{1d10i[=10]{1d100i[<70]{1d10e10}}} +10d6c[<2|>5] +5-5*5+5 +((3+4)*2)d6 +4d6i[=6]{+1d6} +10d[-8--1] +4d6e6i[=4]{-4}+2 +4d6e6f[!=4]+2 +5d10g10 +4d6p[4:blue]c[>=4];1d6p[1:#FFFFFF]c6-@c1;1d6p[1:#FF0000]c[>=4]+@c6-@c1 +10d[0-9] +1d8e8;1d6e6mk1+2 +3d100g50 +3d100g33 +3d100g5 +3d100g40 +2d10k1+2d10k1+2d10k1 +2d10k1-2d10k1-2d10k1 +(2d10k1)-2d10k1-2d10k1 +2d10k1-(2d10k1)-2d10k1 +2d10k1-2d10k1-(2d10k1) +1d6-2d6e6 +(1)-1d6e6 +(1)-(1d6e6) +8d10o +8d10o2,4 +8d10o2[>2] +8d10ok2 +[100,200,300]k2 +100;200;300;[$1,$2,$3]k2 +0-15;$1|4;$1-($2*4) +0-2;$1+$1;$2i:[<1]{1}{0} -- cgit v1.2.3-70-g09d2 From 55191413186381051a1d83b2d41b65dd5d57dfa1 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 25 Jul 2019 22:33:34 +0200 Subject: Fuzzer script --- tests/fuzzer/run_test.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'tests/fuzzer') diff --git a/tests/fuzzer/run_test.sh b/tests/fuzzer/run_test.sh index 16579fd..00654ab 100755 --- a/tests/fuzzer/run_test.sh +++ b/tests/fuzzer/run_test.sh @@ -3,12 +3,18 @@ rm -rf build mkdir build cd build -CC=afl-gcc CXX=afl-g++ cmake ../ && make +CC=afl-gcc CXX=afl-g++ cmake ../ -DSTATIC_BUILD=ON && make #export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" #./fuzzTestCase ../testcase_dir/gooddata.txt -afl-fuzz -m 2G -i ../testcase_dir -o ../findings_dir ./fuzzTestCase @@ +# afl-fuzz -m 2G -i ../testcase_dir -o ../findings_dir ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -M fuzzer01 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer02 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer03 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer04 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer05 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer06 ./fuzzTestCase @@ -- cgit v1.2.3-70-g09d2 From 5f8a471ec1f403cdf5176af1319babc7edc720f7 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 25 Jul 2019 22:33:52 +0200 Subject: Main for fuzzing DiceParser --- tests/fuzzer/testcase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/fuzzer') diff --git a/tests/fuzzer/testcase.cpp b/tests/fuzzer/testcase.cpp index 2660496..87d1867 100644 --- a/tests/fuzzer/testcase.cpp +++ b/tests/fuzzer/testcase.cpp @@ -7,9 +7,9 @@ static DiceParser* parser= new DiceParser(); void runCommand(const QString& cmd) { + qDebug() << "cmd" << cmd; if(parser->parseLine(cmd)) { - // qDebug() << "valide cmd" << cmd; parser->start(); } } -- cgit v1.2.3-70-g09d2 From 4b939631b48a8ad87f7c327a6197373bc64ea3a6 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 28 Jul 2019 02:50:35 +0200 Subject: add fuzzer test --- tests/fuzzer/CMakeLists.txt | 3 ++- tests/fuzzer/run_test.sh | 12 ++++----- tests/fuzzer/testcase_dir/gooddata.txt | 48 +++++----------------------------- 3 files changed, 15 insertions(+), 48 deletions(-) (limited to 'tests/fuzzer') diff --git a/tests/fuzzer/CMakeLists.txt b/tests/fuzzer/CMakeLists.txt index 14386dc..c6d94ca 100644 --- a/tests/fuzzer/CMakeLists.txt +++ b/tests/fuzzer/CMakeLists.txt @@ -5,6 +5,7 @@ set(CMAKE_AUTOMOC ON) find_package(Qt5Core REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Svg REQUIRED) +find_package(Qt5Concurrent REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) @@ -21,5 +22,5 @@ set(fdsource testcase.cpp) add_executable(fuzzTestCase ${fdsource} ) -target_link_libraries(fuzzTestCase libdiceparser.a Qt5::Core Qt5::Gui Qt5::Svg) +target_link_libraries(fuzzTestCase libdiceparser.a Qt5::Core Qt5::Gui Qt5::Svg Qt5::Concurrent) #target_link_libraries(fuzzTestCase ) diff --git a/tests/fuzzer/run_test.sh b/tests/fuzzer/run_test.sh index 00654ab..9ecdeef 100755 --- a/tests/fuzzer/run_test.sh +++ b/tests/fuzzer/run_test.sh @@ -9,12 +9,12 @@ CC=afl-gcc CXX=afl-g++ cmake ../ -DSTATIC_BUILD=ON && make #./fuzzTestCase ../testcase_dir/gooddata.txt # afl-fuzz -m 2G -i ../testcase_dir -o ../findings_dir ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -M fuzzer01 ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer02 ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer03 ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer04 ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer05 ./fuzzTestCase @@ -afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer06 ./fuzzTestCase @@ +afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -M fuzzer01 ./fuzzTestCase @@ & +screen -S fuzz1 -d -m touch afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer02 ./fuzzTestCase @@ & +screen -S fuzz2 -d -m touch afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer03 ./fuzzTestCase @@ & +screen -S fuzz3 -d -m touch afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer04 ./fuzzTestCase @@ & +screen -S fuzz4 -d -m touch afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer05 ./fuzzTestCase @@ & +screen -S fuzz5 -d -m touch afl-fuzz -m 2G -i ../testcase_dir -o ../sync_dir -S fuzzer06 ./fuzzTestCase @@ diff --git a/tests/fuzzer/testcase_dir/gooddata.txt b/tests/fuzzer/testcase_dir/gooddata.txt index 13f6911..d62c87e 100644 --- a/tests/fuzzer/testcase_dir/gooddata.txt +++ b/tests/fuzzer/testcase_dir/gooddata.txt @@ -1,79 +1,45 @@ -1L[cheminée,chocolat,épée,arc,chute de pierre] +1L[cheminée,chocolat,épée,arc,chute de pierre[40]] 10d10c[>=6]-@c[=1] -10d10c[>=6]-@c[=1]-@c[=1] -10d10c[>6]+@c[=10] 1+1D10 -3d10c[>=5] -1+(4*3)D10 +1+(4*3)D10s 2+4/4 2D10*2D20*8 -1+(4*3)D10 -(4D6)D10 1D100a[>=95]a[>=96]a[>=97]a[>=98]a[>=99]e[>=100] -3D100 -4k3 -10D10e[>=6]sc[>=6] -10D10e10s -10D10s 15D10e10c[8-10] -10d10e10 (4+4)^4 (1d20+20)*7/10 20*7/10 -1D8+2D6+7 -D25 -1L[tete[10],ventre[50],jambe[40]] 2d6c[%2=0] -D25+D10 D25;D10 8+8+8 1D20-88 100*1D20*2D6 -2D6 # two 6sided dice +2D6 # comment 100/28*3 -100/8 -100*3*8 help la 10D10c[<2|>7] 10D6c[=2|=4|=6] 10D10e[=1|=10]k4 -1L[tete,bras droit,bras gauche,jambe droite,jambe gauche,ventre[6-7],buste[8-10]] -10+10s -1d6e6;1d4e4mk1 +1L[t,b,s,r,j,v,i,p[8-10]] 1d6e6;1d4e4mk1 400D20/400000 1d100e[>=95]i[<5]{-1d100e95} -100*3*8 1d100i[<70]{1d10i[=10]{1d100i[<70]{1d10e10}}} -10d6c[<2|>5] 5-5*5+5 ((3+4)*2)d6 4d6i[=6]{+1d6} 10d[-8--1] -4d6e6i[=4]{-4}+2 -4d6e6f[!=4]+2 +4d6e6i[=4]{-4} +4d6e6f[!=4] 5d10g10 -4d6p[4:blue]c[>=4];1d6p[1:#FFFFFF]c6-@c1;1d6p[1:#FF0000]c[>=4]+@c6-@c1 +4d6p[4:blue] 10d[0-9] 1d8e8;1d6e6mk1+2 -3d100g50 -3d100g33 3d100g5 -3d100g40 2d10k1+2d10k1+2d10k1 -2d10k1-2d10k1-2d10k1 -(2d10k1)-2d10k1-2d10k1 -2d10k1-(2d10k1)-2d10k1 -2d10k1-2d10k1-(2d10k1) -1d6-2d6e6 (1)-1d6e6 -(1)-(1d6e6) 8d10o -8d10o2,4 -8d10o2[>2] -8d10ok2 [100,200,300]k2 100;200;300;[$1,$2,$3]k2 -0-15;$1|4;$1-($2*4) 0-2;$1+$1;$2i:[<1]{1}{0} -- cgit v1.2.3-70-g09d2