gdbus-serialization: Don't leak string containing first serialization

We format the message into a string twice, once for each byte-order,
but only return the one corresponding to the last byte-order to the
caller. This means we need to free the first one.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
Simon McVittie 2021-01-28 21:24:50 +00:00
parent fdc192f460
commit de87bcf7ff

View File

@ -524,6 +524,7 @@ get_and_check_serialization (GVariant *value)
GDBusMessage *recovered_message;
GError *error;
DBusError dbus_error;
gchar *last_serialization = NULL;
gchar *s = NULL;
guint n;
@ -617,11 +618,19 @@ get_and_check_serialization (GVariant *value)
}
g_object_unref (recovered_message);
g_free (blob);
if (last_serialization != NULL)
{
g_assert_cmpstr (last_serialization, ==, s);
g_free (last_serialization);
}
last_serialization = g_steal_pointer (&s);
}
g_object_unref (message);
return g_steal_pointer (&s);
return g_steal_pointer (&last_serialization);
}
/* If @value is floating, this assumes ownership. */