mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-11 23:16:14 +01:00
gio/tests/contenttype: Call g_content_type_guess() with valid data len
g_content_type_guess() requires specifying a valid data length. Fixes a segfault when running the test. Also add an explicit check for this and return XDG_MIME_TYPE_UNKNOWN when data_size is specified as -1, to avoid crashing. https://bugzilla.gnome.org/show_bug.cgi?id=674452
This commit is contained in:
parent
95f29687e1
commit
139c1ce988
@ -330,6 +330,10 @@ g_content_type_guess (const gchar *filename,
|
|||||||
if (result_uncertain)
|
if (result_uncertain)
|
||||||
*result_uncertain = FALSE;
|
*result_uncertain = FALSE;
|
||||||
|
|
||||||
|
/* our test suite and potentially other code used -1 in the past, which is
|
||||||
|
* not documented and not allowed; guard against that */
|
||||||
|
g_return_val_if_fail (data_size != (gsize) -1, g_strdup (XDG_MIME_TYPE_UNKNOWN));
|
||||||
|
|
||||||
if (filename)
|
if (filename)
|
||||||
{
|
{
|
||||||
basename = g_path_get_basename (filename);
|
basename = g_path_get_basename (filename);
|
||||||
@ -906,6 +910,10 @@ g_content_type_guess (const gchar *filename,
|
|||||||
if (result_uncertain)
|
if (result_uncertain)
|
||||||
*result_uncertain = FALSE;
|
*result_uncertain = FALSE;
|
||||||
|
|
||||||
|
/* our test suite and potentially other code used -1 in the past, which is
|
||||||
|
* not documented and not allowed; guard against that */
|
||||||
|
g_return_val_if_fail (data_size != (gsize) -1, g_strdup (XDG_MIME_TYPE_UNKNOWN));
|
||||||
|
|
||||||
G_LOCK (gio_xdgmime);
|
G_LOCK (gio_xdgmime);
|
||||||
|
|
||||||
if (filename)
|
if (filename)
|
||||||
|
@ -55,14 +55,14 @@ test_guess (void)
|
|||||||
g_free (res);
|
g_free (res);
|
||||||
g_free (expected);
|
g_free (expected);
|
||||||
|
|
||||||
res = g_content_type_guess ("test.pot", (guchar *)"ABC abc", -1, &uncertain);
|
res = g_content_type_guess ("test.pot", (guchar *)"ABC abc", 7, &uncertain);
|
||||||
expected = g_content_type_from_mime_type ("application/vnd.ms-powerpoint");
|
expected = g_content_type_from_mime_type ("application/vnd.ms-powerpoint");
|
||||||
g_assert (g_content_type_equals (expected, res));
|
g_assert (g_content_type_equals (expected, res));
|
||||||
g_assert (uncertain);
|
g_assert (uncertain);
|
||||||
g_free (res);
|
g_free (res);
|
||||||
g_free (expected);
|
g_free (expected);
|
||||||
|
|
||||||
res = g_content_type_guess ("test.otf", (guchar *)"OTTO", -1, &uncertain);
|
res = g_content_type_guess ("test.otf", (guchar *)"OTTO", 4, &uncertain);
|
||||||
expected = g_content_type_from_mime_type ("application/x-font-otf");
|
expected = g_content_type_from_mime_type ("application/x-font-otf");
|
||||||
g_assert (g_content_type_equals (expected, res));
|
g_assert (g_content_type_equals (expected, res));
|
||||||
g_assert (!uncertain);
|
g_assert (!uncertain);
|
||||||
|
Loading…
Reference in New Issue
Block a user