[at-spi2-core] Fix various memory leaks when checking D-Bus signatures
- From: Mike Gorse <mgorse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [at-spi2-core] Fix various memory leaks when checking D-Bus signatures
- Date: Sun, 20 Jul 2014 17:48:29 +0000 (UTC)
commit 4c0da161e7af297b34ca7fc31bd44c12baf78636
Author: Mike Gorse <mgorse suse com>
Date: Sat Jul 19 15:35:52 2014 -0500
Fix various memory leaks when checking D-Bus signatures
atspi/atspi-misc.c | 21 ++++++++++++++++-----
atspi/atspi-table-cell.c | 8 +++++++-
2 files changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/atspi/atspi-misc.c b/atspi/atspi-misc.c
index c52fe9f..aa2fb66 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 44ff4d0..f99ac85 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]