diff options
Diffstat (limited to 'tests/libfuzzer')
-rw-r--r-- | tests/libfuzzer/README | 6 | ||||
-rw-r--r-- | tests/libfuzzer/gui/iccparser/iccparser.pro | 3 | ||||
-rw-r--r-- | tests/libfuzzer/gui/iccparser/main.cpp | 37 |
3 files changed, 43 insertions, 3 deletions
diff --git a/tests/libfuzzer/README b/tests/libfuzzer/README index 7327e76eff..57140cebfb 100644 --- a/tests/libfuzzer/README +++ b/tests/libfuzzer/README @@ -7,7 +7,7 @@ of the test and track the code execution. Should the test crash, libFuzzer will data which triggered the crash. You can then use this to debug and fix the called code. ! Please note: The purpose of fuzz testing is to find unexpected code paths. Running fuzz tests may! -! result in unforeseen bevavior, including loss of data. Consider running the tests in an isolated ! +! result in unforeseen behavior, including loss of data. Consider running the tests in an isolated ! ! environment, e.g. on a virtual machine. You have been warned. ! To run a test with libFuzzer: @@ -21,7 +21,7 @@ To run a test with libFuzzer: to add the needed code coverage instrumentation. Since speed of execution is crucial for fuzz testing, it's recommendable to also use the switches -release -static - It might also make sense to add sanitzers by passing + It might also make sense to add sanitizers by passing -sanitize <...> 4. Build Qt. 5. Build one of the tests using this Qt build. @@ -29,7 +29,7 @@ To run a test with libFuzzer: Depending on the expected input format of the tested function, you will get results faster if you: * provide a set of interesting input data by passing the path of a directory which contains - these data, each in one file. You can find such datasets in the subdirectory "testcases". + these data, each in one file. You can find such data sets in the subdirectory "testcases". * pass a so-called dictionary listing keywords of the input format using -dict=<dictionary file> A couple of such dictionaries are provided by AFL (http://lcamtuf.coredump.cx/afl/) diff --git a/tests/libfuzzer/gui/iccparser/iccparser.pro b/tests/libfuzzer/gui/iccparser/iccparser.pro new file mode 100644 index 0000000000..bf4037eae7 --- /dev/null +++ b/tests/libfuzzer/gui/iccparser/iccparser.pro @@ -0,0 +1,3 @@ +QT += gui +SOURCES += main.cpp +LIBS += -fsanitize=fuzzer diff --git a/tests/libfuzzer/gui/iccparser/main.cpp b/tests/libfuzzer/gui/iccparser/main.cpp new file mode 100644 index 0000000000..ba4f70ef3b --- /dev/null +++ b/tests/libfuzzer/gui/iccparser/main.cpp @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QGuiApplication> +#include <QColorSpace> + +extern "C" int LLVMFuzzerTestOneInput(const char *data, size_t size) { + static int c = 0; + static QGuiApplication a(c, nullptr); + QColorSpace cs = QColorSpace::fromIccProfile(QByteArray(data, size)); + return 0; +} |