uri: require URI protocol bit to be at least 3 characters to be valid

We want to return FALSE when run on a windows-style file path.

https://bugzilla.gnome.org/show_bug.cgi?id=674296
This commit is contained in:
Tim-Philipp Müller 2012-05-01 19:47:05 +01:00
parent 105fa1ffde
commit d35487e50c
2 changed files with 27 additions and 2 deletions

View file

@ -313,7 +313,7 @@ gst_uri_protocol_is_valid (const gchar * protocol)
gst_uri_protocol_check_internal (protocol, &endptr);
return *endptr == '\0' && endptr != protocol;
return *endptr == '\0' && ((gsize) (endptr - protocol)) >= 3;
}
/**
@ -334,7 +334,7 @@ gst_uri_is_valid (const gchar * uri)
gst_uri_protocol_check_internal (uri, &endptr);
return *endptr == ':';
return *endptr == ':' && ((gsize) (endptr - uri)) >= 3;
}
/**

View file

@ -105,6 +105,30 @@ GST_END_TEST;
#endif /* G_OS_WIN32 */
GST_START_TEST (test_uri_misc)
{
/* require at least three characters for the protocol */
fail_if (gst_uri_is_valid ("B:\\foo.txt"));
fail_if (gst_uri_is_valid ("B:/foo.txt"));
fail_if (gst_uri_is_valid ("B://foo.txt"));
fail_if (gst_uri_is_valid ("B:foo.txt"));
fail_if (gst_uri_is_valid ("AB:\\foo.txt"));
fail_if (gst_uri_is_valid ("AB:/foo.txt"));
fail_if (gst_uri_is_valid ("AB://foo.txt"));
fail_if (gst_uri_is_valid ("AB:foo.txt"));
fail_unless (gst_uri_is_valid ("ABC:/foo.txt"));
fail_unless (gst_uri_is_valid ("ABC://foo.txt"));
fail_unless (gst_uri_is_valid ("ABC:foo.txt"));
fail_unless (gst_uri_is_valid ("ABCD:/foo.txt"));
fail_unless (gst_uri_is_valid ("ABCD://foo.txt"));
fail_unless (gst_uri_is_valid ("ABCD:foo.txt"));
}
GST_END_TEST;
static Suite *
gst_uri_suite (void)
{
@ -116,6 +140,7 @@ gst_uri_suite (void)
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_protocol_case);
tcase_add_test (tc_chain, test_uri_get_location);
tcase_add_test (tc_chain, test_uri_misc);
#ifdef G_OS_WIN32
tcase_add_test (tc_chain, test_win32_uri);
#endif