mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
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:
parent
105fa1ffde
commit
d35487e50c
2 changed files with 27 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue