diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2022-10-31 14:22:58 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-11-22 10:15:09 +0000 |
commit | b9ac0a4f88bdb8e9dd2b0fcfe8fa8b01c07d4b7d (patch) | |
tree | f115f409fe33c33484ca8fcb89f1596a72248c5c /src | |
parent | 9e9d54e6c98566ebf56d893de5f6162809f2648a (diff) | |
download | libqmi-b9ac0a4f88bdb8e9dd2b0fcfe8fa8b01c07d4b7d.tar.gz |
libqmi-glib,test: add fuzzer test for qmi_message_new_from_raw()
Diffstat (limited to 'src')
-rw-r--r-- | src/libqmi-glib/test/meson.build | 12 | ||||
-rw-r--r-- | src/libqmi-glib/test/test-message-fuzzer.c | 28 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/libqmi-glib/test/meson.build b/src/libqmi-glib/test/meson.build index 884d2721..eef08214 100644 --- a/src/libqmi-glib/test/meson.build +++ b/src/libqmi-glib/test/meson.build @@ -39,3 +39,15 @@ foreach test_name, test_args: test_units env: test_env, ) endforeach + +if get_option('fuzzer') + fuzzer_name = 'test-message-fuzzer' + exe = executable( + fuzzer_name, + sources: fuzzer_name + '.c', + include_directories: top_inc, + dependencies: libqmi_glib_dep, + c_args: '-DLIBQMI_GLIB_COMPILATION', + link_args : '-fsanitize=fuzzer', + ) +endif diff --git a/src/libqmi-glib/test/test-message-fuzzer.c b/src/libqmi-glib/test/test-message-fuzzer.c new file mode 100644 index 00000000..b344a017 --- /dev/null +++ b/src/libqmi-glib/test/test-message-fuzzer.c @@ -0,0 +1,28 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2022 Google, Inc. + */ + +#include <config.h> +#include <string.h> +#include <stdint.h> +#include <glib.h> + +#include "qmi-message.h" + +int +LLVMFuzzerTestOneInput (const uint8_t *data, + size_t size) +{ + g_autoptr(GByteArray) bytearray = NULL; + g_autoptr(QmiMessage) message = NULL; + g_autoptr(GError) error = NULL; + + if (!size) + return 0; + + bytearray = g_byte_array_append (g_byte_array_sized_new (size), data, size); + message = qmi_message_new_from_raw (bytearray, &error); + return 0; +} |