mirror of
https://gitlab.gnome.org/GNOME/libsecret.git
synced 2024-12-22 12:48:51 +00:00
secret-file-backend: Fix use-after-free in flatpak
The on_portal_retrieve_secret() can connect a GCancellable, but it doesn't disconnect from it (only when the cancellable is cancelled), which means when the cancellable is cancelled later, when the GTask is gone, the callback is called with already freed data.
This commit is contained in:
parent
eb4f967e9f
commit
523fe32b65
@ -231,6 +231,11 @@ on_portal_response (GDBusConnection *connection,
|
||||
InitClosure *init = g_task_get_task_data (task);
|
||||
guint32 response;
|
||||
|
||||
if (init->cancellable_signal_id) {
|
||||
g_cancellable_disconnect (g_task_get_cancellable (task), init->cancellable_signal_id);
|
||||
init->cancellable_signal_id = 0;
|
||||
}
|
||||
|
||||
g_dbus_connection_signal_unsubscribe (connection,
|
||||
init->portal_signal_id);
|
||||
|
||||
@ -303,6 +308,7 @@ on_portal_cancel (GCancellable *cancellable,
|
||||
task);
|
||||
|
||||
g_cancellable_disconnect (cancellable, init->cancellable_signal_id);
|
||||
init->cancellable_signal_id = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user