mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-27 07:56:14 +01: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;
|
||||
|
||||
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)))
|
||||
{
|
||||
g_variant_builder_clear (&builder);
|
||||
@ -1024,6 +1030,12 @@ tuple_get_value (AST *ast,
|
||||
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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user