mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
tests: fix incorrect free of GVariant in our GLib mock functions
GLib implementation of g_dbus_connection_call_sync() calls g_variant_ref_sink() on the passed @parameters to make sure they have proper reference. If the original reference is floating the g_dbus_connection_call_sync() consumes it, but if it's normal reference it will just add another one. Our mock functions were only freeing the @parameters which is incorrect and doesn't reflect how the real implementation works. Reported-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
44b0895ce5
commit
48622bb563
@ -60,8 +60,10 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
||||
GCancellable *, cancellable,
|
||||
GError **, error)
|
||||
{
|
||||
if (parameters)
|
||||
if (parameters) {
|
||||
g_variant_ref_sink(parameters);
|
||||
g_variant_unref(parameters);
|
||||
}
|
||||
|
||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||
|
||||
|
@ -79,6 +79,9 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
||||
GVariant *reply = NULL;
|
||||
g_autoptr(GVariant) params = parameters;
|
||||
|
||||
if (params)
|
||||
g_variant_ref_sink(params);
|
||||
|
||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||
|
||||
if (STREQ(bus_name, "org.freedesktop.DBus") &&
|
||||
|
@ -52,6 +52,9 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
||||
GVariant *reply = NULL;
|
||||
g_autoptr(GVariant) params = parameters;
|
||||
|
||||
if (params)
|
||||
g_variant_ref_sink(params);
|
||||
|
||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||
|
||||
if (STREQ(bus_name, "org.freedesktop.PolicyKit1") &&
|
||||
|
@ -54,8 +54,10 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
||||
{
|
||||
GVariant *reply = NULL;
|
||||
|
||||
if (parameters)
|
||||
if (parameters) {
|
||||
g_variant_ref_sink(parameters);
|
||||
g_variant_unref(parameters);
|
||||
}
|
||||
|
||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user