mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-31 12:53:07 +02:00
GVariant parser: fix tuple type checking
Robert Ancell discovered that the GVariant parser messes up pretty badly when the type of a tuple is specified and the tuple in the text being parsed has a different number of elements (but otherwise matching child types). Check that we have the expected number of elements. Closes #644786.
This commit is contained in:
parent
a7fc7909da
commit
d679a7659f
@ -1014,6 +1014,12 @@ tuple_get_value (AST *ast,
|
|||||||
{
|
{
|
||||||
GVariant *child;
|
GVariant *child;
|
||||||
|
|
||||||
|
if (childtype == NULL)
|
||||||
|
{
|
||||||
|
g_variant_builder_clear (&builder);
|
||||||
|
return ast_type_error (ast, type, error);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(child = ast_get_value (tuple->children[i], childtype, error)))
|
if (!(child = ast_get_value (tuple->children[i], childtype, error)))
|
||||||
{
|
{
|
||||||
g_variant_builder_clear (&builder);
|
g_variant_builder_clear (&builder);
|
||||||
@ -1024,6 +1030,12 @@ tuple_get_value (AST *ast,
|
|||||||
childtype = g_variant_type_next (childtype);
|
childtype = g_variant_type_next (childtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (childtype != NULL)
|
||||||
|
{
|
||||||
|
g_variant_builder_clear (&builder);
|
||||||
|
return ast_type_error (ast, type, error);
|
||||||
|
}
|
||||||
|
|
||||||
return g_variant_builder_end (&builder);
|
return g_variant_builder_end (&builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user