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,
|
GCancellable *, cancellable,
|
||||||
GError **, error)
|
GError **, error)
|
||||||
{
|
{
|
||||||
if (parameters)
|
if (parameters) {
|
||||||
|
g_variant_ref_sink(parameters);
|
||||||
g_variant_unref(parameters);
|
g_variant_unref(parameters);
|
||||||
|
}
|
||||||
|
|
||||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
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;
|
GVariant *reply = NULL;
|
||||||
g_autoptr(GVariant) params = parameters;
|
g_autoptr(GVariant) params = parameters;
|
||||||
|
|
||||||
|
if (params)
|
||||||
|
g_variant_ref_sink(params);
|
||||||
|
|
||||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||||
|
|
||||||
if (STREQ(bus_name, "org.freedesktop.DBus") &&
|
if (STREQ(bus_name, "org.freedesktop.DBus") &&
|
||||||
|
@ -52,6 +52,9 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
|||||||
GVariant *reply = NULL;
|
GVariant *reply = NULL;
|
||||||
g_autoptr(GVariant) params = parameters;
|
g_autoptr(GVariant) params = parameters;
|
||||||
|
|
||||||
|
if (params)
|
||||||
|
g_variant_ref_sink(params);
|
||||||
|
|
||||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||||
|
|
||||||
if (STREQ(bus_name, "org.freedesktop.PolicyKit1") &&
|
if (STREQ(bus_name, "org.freedesktop.PolicyKit1") &&
|
||||||
|
@ -54,8 +54,10 @@ VIR_MOCK_WRAP_RET_ARGS(g_dbus_connection_call_sync,
|
|||||||
{
|
{
|
||||||
GVariant *reply = NULL;
|
GVariant *reply = NULL;
|
||||||
|
|
||||||
if (parameters)
|
if (parameters) {
|
||||||
|
g_variant_ref_sink(parameters);
|
||||||
g_variant_unref(parameters);
|
g_variant_unref(parameters);
|
||||||
|
}
|
||||||
|
|
||||||
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
VIR_MOCK_REAL_INIT(g_dbus_connection_call_sync);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user