From 09c4508aee96ca20d084b8a60b4c6603de8bff8b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 25 Nov 2018 13:01:17 +0100 Subject: Add Session Dialog --- doc/Development.asciidoc | 9 ++++++++ doc/Development/Fuzzing.asciidoc | 49 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 doc/Development/Fuzzing.asciidoc (limited to 'doc') diff --git a/doc/Development.asciidoc b/doc/Development.asciidoc index c849d67..1ef2ded 100644 --- a/doc/Development.asciidoc +++ b/doc/Development.asciidoc @@ -15,6 +15,15 @@ extensions. Source code should be kept as platform-agnostic as possible. syntax (SIGNAL/SLOT). This enables compile-time connect checks. * Prefer QVector over QList: http://lists.qt-project.org/pipermail/development/2017-March/029040.html +=== Setting linker +Meson has no environment variable to set the linker (link:https://github.com/mesonbuild/meson/issues/3597[issue]). + +Instead, this can be done using the cpp_link_args: +[source, sh] +---- +build% meson configure -Dcpp_link_args='-fuse-ld=gold' +---- + === clazy You can use https://github.com/KDE/clazy[clazy] to check Qt semantics. diff --git a/doc/Development/Fuzzing.asciidoc b/doc/Development/Fuzzing.asciidoc new file mode 100644 index 0000000..0981f1a --- /dev/null +++ b/doc/Development/Fuzzing.asciidoc @@ -0,0 +1,49 @@ +=== Setup +Required packages: afl + +==== Compiling Qt +This will build an instrumented Qt: + +[source, sh] +---- +export CC=$(which afl-gcc) +export CXX=$(which afl-g++) +./configure ... +make +---- + +=== Running the fuzzer +[source, sh] +---- +cd /sys/devices/system/cpu +su +echo performance | tee cpu*/cpufreq/scaling_governor +exit + +cd $testdir +afl-fuzz -m 512 -t 40 -i $input -o $output -- $testexe @@ + +# see for available scaling_governor values: +cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors + +cd /sys/devices/system/cpu +su +echo powersave | tee cpu*/cpufreq/scaling_governor +exit +---- + +The $input directory contains your reference input files, while the findings of the fuzzers will be written in $output. + +@@ gets replaced by the name of a file generated by AFL, containing the mutated input. + +=== Using ramdisk for tests +[source, sh] +---- +$ mkdir afl +# mount -t tmpfs -o size=1024M tmpfs afl/ +$ cd afl/ +$ afl-fuzz -i inputs -o findings ... +---- + +=== Sources +1. https://www.kdab.com/fuzzing-qt-fun-profit/ -- cgit v1.2.1