glib/fuzzing/fuzz_uri_parse.c
Philip Withnall b2a6a9a434 fuzzing: Ensure input to g_uri_parse() is nul-terminated
The fuzzer will produce arbitrary binary blobs, which might not be
nul-terminated. `g_uri_parse()` has no length argument, so relies on
receiving a nul-terminated string as input. Guarantee that.

This should fix fuzzing build failures like
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23750.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-06-29 11:52:40 +01:00

31 lines
691 B
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "fuzz.h"
int
LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
{
unsigned char *nul_terminated_data = NULL;
GUri *uri = NULL;
gchar *uri_string = NULL;
const GUriFlags flags = G_URI_FLAGS_NONE;
fuzz_set_logging_func ();
/* ignore @size (g_uri_parse() doesnt support it); ensure @data is nul-terminated */
nul_terminated_data = (unsigned char *) g_strndup ((const gchar *) data, size);
uri = g_uri_parse ((const gchar *) data, flags, NULL);
g_free (nul_terminated_data);
if (uri == NULL)
return 0;
uri_string = g_uri_to_string (uri);
g_uri_unref (uri);
if (uri_string == NULL)
return 0;
g_free (uri_string);
return 0;
}