shell-util: Fix a memory leak of a floating variant on error
If `params` is floating when provided by the caller, and if one of the early return paths is taken from this function, the call into GIO never sinks and takes ownership of the `GVariant`, and hence it’s leaked. Always explicitly sink the input variant as soon as the function is called, then it can’t be leaked. Signed-off-by: Philip Withnall <pwithnall@gnome.org> Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3396>
This commit is contained in:
parent
9a1b0a635f
commit
976c99c5e3
@ -619,6 +619,7 @@ shell_util_systemd_call (const char *command,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_autoptr (GTask) task = g_task_new (NULL, cancellable, callback, user_data);
|
||||
g_autoptr (GVariant) params_owned = g_variant_ref_sink (g_steal_pointer (¶ms));
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
g_autoptr (GDBusConnection) connection = NULL;
|
||||
@ -695,7 +696,7 @@ shell_util_systemd_call (const char *command,
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
command,
|
||||
params,
|
||||
params_owned,
|
||||
G_VARIANT_TYPE ("(o)"),
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
-1, cancellable,
|
||||
|
Loading…
x
Reference in New Issue
Block a user