mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-14 05:16:18 +01:00
b654eb1846
Make `G_URI_FLAGS_PARSE_RELAXED` available instead, for the implementations which need to handle user-provided or incorrect URIs. The default should nudge people towards being compliant with RFC 3986. This required also adding a new `G_URI_PARAMS_PARSE_RELAXED` flag, as previously parsing param strings *always* used relaxed mode and there was no way to control it. Now it defaults to using strict mode, and the new flag allows for relaxed mode to be enabled if needed. Signed-off-by: Philip Withnall <withnall@endlessm.com> Fixes: #2149
39 lines
877 B
C
39 lines
877 B
C
#include "fuzz.h"
|
||
|
||
static void
|
||
test_with_flags (const gchar *data,
|
||
GUriFlags flags)
|
||
{
|
||
GUri *uri = NULL;
|
||
gchar *uri_string = NULL;
|
||
|
||
uri = g_uri_parse (data, flags, NULL);
|
||
|
||
if (uri == NULL)
|
||
return;
|
||
|
||
uri_string = g_uri_to_string (uri);
|
||
g_uri_unref (uri);
|
||
|
||
if (uri_string == NULL)
|
||
return;
|
||
|
||
g_free (uri_string);
|
||
}
|
||
|
||
int
|
||
LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
|
||
{
|
||
unsigned char *nul_terminated_data = NULL;
|
||
|
||
fuzz_set_logging_func ();
|
||
|
||
/* ignore @size (g_uri_parse() doesn’t support it); ensure @data is nul-terminated */
|
||
nul_terminated_data = (unsigned char *) g_strndup ((const gchar *) data, size);
|
||
test_with_flags ((const gchar *) nul_terminated_data, G_URI_FLAGS_NONE);
|
||
test_with_flags ((const gchar *) nul_terminated_data, G_URI_FLAGS_PARSE_RELAXED);
|
||
g_free (nul_terminated_data);
|
||
|
||
return 0;
|
||
}
|