From ee69c882e4f8ebdbf8c0a3f4748a6f882e0e979b Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 10 Jun 2022 16:12:48 +0100 Subject: [PATCH] fuzzing: Add fuzz test for g_uuid_string_is_valid() Another public string parsing function which I noticed while looking at unrelated stuff. Signed-off-by: Philip Withnall --- fuzzing/fuzz_uuid_string_is_valid.c | 35 +++++++++++++++++++++++++++++ fuzzing/meson.build | 1 + 2 files changed, 36 insertions(+) create mode 100644 fuzzing/fuzz_uuid_string_is_valid.c diff --git a/fuzzing/fuzz_uuid_string_is_valid.c b/fuzzing/fuzz_uuid_string_is_valid.c new file mode 100644 index 000000000..d45415968 --- /dev/null +++ b/fuzzing/fuzz_uuid_string_is_valid.c @@ -0,0 +1,35 @@ +/* + * Copyright 2022 Endless OS Foundation, LLC + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include "fuzz.h" + +int +LLVMFuzzerTestOneInput (const unsigned char *data, size_t size) +{ + unsigned char *nul_terminated_data = NULL; + + fuzz_set_logging_func (); + + /* ignore @size (the function doesn’t support it); ensure @data is nul-terminated */ + nul_terminated_data = (unsigned char *) g_strndup ((const gchar *) data, size); + (void) g_uuid_string_is_valid ((const gchar *) nul_terminated_data); + g_free (nul_terminated_data); + + return 0; +} diff --git a/fuzzing/meson.build b/fuzzing/meson.build index 36f0feb42..f7d94eac0 100644 --- a/fuzzing/meson.build +++ b/fuzzing/meson.build @@ -33,6 +33,7 @@ fuzz_targets = [ 'fuzz_uri_escape', 'fuzz_uri_parse', 'fuzz_uri_parse_params', + 'fuzz_uuid_string_is_valid', 'fuzz_variant_binary', 'fuzz_variant_text', ]