summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@suse.com>2014-07-19 15:35:52 -0500
committerMike Gorse <mgorse@suse.com>2014-07-19 15:35:52 -0500
commit4c0da161e7af297b34ca7fc31bd44c12baf78636 (patch)
treeda462726b8ef218a8540930ffdffd7cdb683b45e
parent925201dab4159ddce3ba29615223e6070123160a (diff)
downloadat-spi2-core-4c0da161e7af297b34ca7fc31bd44c12baf78636.tar.gz
Fix various memory leaks when checking D-Bus signatures
-rw-r--r--atspi/atspi-misc.c21
-rw-r--r--atspi/atspi-table-cell.c8
2 files changed, 23 insertions, 6 deletions
diff --git a/atspi/atspi-misc.c b/atspi/atspi-misc.c
index c52fe9fc..aa2fb66e 100644
--- a/atspi/atspi-misc.c
+++ b/atspi/atspi-misc.c
@@ -1359,13 +1359,16 @@ void
_atspi_dbus_set_interfaces (AtspiAccessible *accessible, DBusMessageIter *iter)
{
DBusMessageIter iter_array;
+ char *iter_sig = dbus_message_iter_get_signature (iter);
accessible->interfaces = 0;
- if (strcmp (dbus_message_iter_get_signature (iter), "as") != 0)
+ if (strcmp (iter_sig, "as") != 0)
{
g_warning ("_atspi_dbus_set_interfaces: Passed iterator with invalid signature %s", dbus_message_iter_get_signature (iter));
+ dbus_free (iter_sig);
return;
}
+ dbus_free (iter_sig);
dbus_message_iter_recurse (iter, &iter_array);
while (dbus_message_iter_get_arg_type (&iter_array) != DBUS_TYPE_INVALID)
{
@@ -1721,22 +1724,30 @@ _atspi_dbus_update_cache_from_dict (AtspiAccessible *accessible, DBusMessageIter
}
else if (!strcmp (key, "Attributes"))
{
+ char *iter_sig = dbus_message_iter_get_signature (&iter_variant);
val = g_new0 (GValue, 1);;
g_value_init (val, G_TYPE_HASH_TABLE);
- if (strcmp (dbus_message_iter_get_signature (&iter_variant),
- "a{ss}") != 0)
+ if (strcmp (iter_sig, "a{ss}") != 0)
+ {
+ dbus_free (iter_sig);
break;
+ }
+ dbus_free (iter_sig);
g_value_take_boxed (val, _atspi_dbus_hash_from_iter (&iter_variant));
}
else if (!strcmp (key, "Component.ScreenExtents"))
{
dbus_int32_t d_int;
AtspiRect extents;
+ char *iter_sig = dbus_message_iter_get_signature (&iter_variant);
val = g_new0 (GValue, 1);;
g_value_init (val, ATSPI_TYPE_RECT);
- if (strcmp (dbus_message_iter_get_signature (&iter_variant),
- "(iiii)") != 0)
+ if (strcmp (iter_sig, "(iiii)") != 0)
+ {
+ dbus_free (iter_sig);
break;
+ }
+ dbus_free (iter_sig);
dbus_message_iter_recurse (&iter_variant, &iter_struct);
dbus_message_iter_get_basic (&iter_struct, &d_int);
extents.x = d_int;
diff --git a/atspi/atspi-table-cell.c b/atspi/atspi-table-cell.c
index 44ff4d03..f99ac854 100644
--- a/atspi/atspi-table-cell.c
+++ b/atspi/atspi-table-cell.c
@@ -179,6 +179,7 @@ atspi_table_cell_get_position (AtspiTableCell *obj,
DBusMessage *reply;
DBusMessageIter iter, iter_struct, iter_variant;
dbus_int32_t d_row = -1, d_column = -1;
+ char *iter_sig;
g_return_val_if_fail (obj != NULL, -1);
@@ -193,9 +194,14 @@ atspi_table_cell_get_position (AtspiTableCell *obj,
return FALSE;
dbus_message_iter_recurse (&iter, &iter_variant);
+ iter_sig = dbus_message_iter_get_signature (&iter_variant);
/* TODO: Also report error here */
- if (strcmp (dbus_message_iter_get_signature (&iter_variant), "(ii)") != 0)
+ if (strcmp (iter_sig, "(ii)") != 0)
+ {
+ dbus_free (iter_sig);
return FALSE;
+ }
+ dbus_free (iter_sig);
dbus_message_iter_recurse (&iter_variant, &iter_struct);
dbus_message_iter_get_basic (&iter_struct, &d_row);