diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2022-10-28 13:50:59 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2022-11-22 11:00:13 +0000 |
commit | 07389e68b802dbe3de7284afd4642a747712759b (patch) | |
tree | 18ff17c3818203e36a6354bd908b6b3dc4a63ae2 | |
parent | 4c4973bbb2f47196dfed6a9f3f99c0b7a6cdfc76 (diff) | |
download | libmbim-07389e68b802dbe3de7284afd4642a747712759b.tar.gz |
libmbim-glib,test: add fuzzer test for mbim_message_validate()
-rw-r--r-- | meson.build | 3 | ||||
-rw-r--r-- | meson_options.txt | 2 | ||||
-rw-r--r-- | src/libmbim-glib/test/meson.build | 12 | ||||
-rw-r--r-- | src/libmbim-glib/test/test-message-fuzzer.c | 27 |
4 files changed, 44 insertions, 0 deletions
diff --git a/meson.build b/meson.build index f67cd69..5cb0527 100644 --- a/meson.build +++ b/meson.build @@ -192,6 +192,8 @@ if enable_man subdir('docs/man') endif +enable_fuzzer = get_option('fuzzer') + configure_file( output: 'config.h', configuration: config_h, @@ -204,6 +206,7 @@ summary({ 'bash completion': enable_bash_completion, 'gobject introspection': enable_gir, 'man pages': enable_man, + 'fuzzer': enable_fuzzer, }, section: 'Build') summary({ diff --git a/meson_options.txt b/meson_options.txt index e768e39..6ed3634 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -10,3 +10,5 @@ option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to bu option('man', type: 'boolean', value: true, description: 'build man pages using help2man') option('bash_completion', type: 'boolean', value: true, description: 'install bash completion files') + +option('fuzzer', type: 'boolean', value: false, description: 'build fuzzer tests') diff --git a/src/libmbim-glib/test/meson.build b/src/libmbim-glib/test/meson.build index a501cfe..196be64 100644 --- a/src/libmbim-glib/test/meson.build +++ b/src/libmbim-glib/test/meson.build @@ -35,3 +35,15 @@ foreach test_unit: 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: libmbim_glib_core_dep, + c_args: '-DLIBMBIM_GLIB_COMPILATION', + link_args : '-fsanitize=fuzzer', + ) +endif diff --git a/src/libmbim-glib/test/test-message-fuzzer.c b/src/libmbim-glib/test/test-message-fuzzer.c new file mode 100644 index 0000000..867f7b8 --- /dev/null +++ b/src/libmbim-glib/test/test-message-fuzzer.c @@ -0,0 +1,27 @@ +/* -*- 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 "mbim-message.h" + +int +LLVMFuzzerTestOneInput (const uint8_t *data, + size_t size) +{ + g_autoptr(MbimMessage) message = NULL; + g_autoptr(GError) error = NULL; + + if (!size) + return 0; + + message = mbim_message_new (data, size); + mbim_message_validate (message, &error); + return 0; +} |