summaryrefslogtreecommitdiff
path: root/dbus/dbus-gvalue.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2008-05-27 13:54:11 -0400
committerColin Walters <walters@verbum.org>2008-05-27 13:54:11 -0400
commitd20c90aab3b0eca8715deaa59877f35a7d4e345e (patch)
treed0fd885b93f6ee98855c578ae95c2e296ef536a5 /dbus/dbus-gvalue.c
parentfde77bff42fac9ed95869a69acff4f9daab23e04 (diff)
Bug 12849: Fix use after free (Kimmo Hämäläinen)
Diffstat (limited to 'dbus/dbus-gvalue.c')
-rw-r--r--dbus/dbus-gvalue.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/dbus/dbus-gvalue.c b/dbus/dbus-gvalue.c
index a580725..87e6409 100644
--- a/dbus/dbus-gvalue.c
+++ b/dbus/dbus-gvalue.c
@@ -766,7 +766,6 @@ demarshal_valuearray (DBusGValueMarshalCtx *context,
current_sig = dbus_message_iter_get_signature (&subiter);
elt_type = _dbus_gtype_from_signature (current_sig, TRUE);
- dbus_free (current_sig);
if (elt_type == G_TYPE_INVALID)
{
g_value_array_free (ret);
@@ -774,8 +773,10 @@ demarshal_valuearray (DBusGValueMarshalCtx *context,
DBUS_GERROR,
DBUS_GERROR_INVALID_ARGS,
_("Couldn't demarshal argument with signature \"%s\""), current_sig);
+ dbus_free (current_sig);
return FALSE;
}
+ dbus_free (current_sig);
g_value_init (val, elt_type);