[gtk: 2/3] mountoperation: Free user_widgets list upon dialog destruction
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 2/3] mountoperation: Free user_widgets list upon dialog destruction
- Date: Wed, 3 Aug 2022 11:56:26 +0000 (UTC)
commit 111929593aa995c3286b84ad118280357cfe6bdd
Author: Corey Berla <corey berla me>
Date: Sun Jul 24 20:55:22 2022 -0700
mountoperation: Free user_widgets list upon dialog destruction
There's a list user_widgets that contains all of the entries and
selections during authentication. This is only freed upon
finalizing the GtkMountOperation. It's possible (and true for the
GVFS SMB implementation) that a MountOperation can have the
gtk_mount_operation_ask_password_do_gtk () function called multiple
times (i.e. bad password). The user_widgets list grows with now
invalid pointers to old widgets (causing unexpected behavior and
seg faults).
Free the user_widgets list upon dialog destruction, we don't need it
anymore.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5059
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5058
gtk/gtkmountoperation.c | 4 ++++
1 file changed, 4 insertions(+)
---
diff --git a/gtk/gtkmountoperation.c b/gtk/gtkmountoperation.c
index 87f2647849..90383811a1 100644
--- a/gtk/gtkmountoperation.c
+++ b/gtk/gtkmountoperation.c
@@ -400,6 +400,10 @@ pw_dialog_got_response (GtkDialog *dialog,
else
g_mount_operation_reply (op, G_MOUNT_OPERATION_ABORTED);
+ if (priv->user_widgets)
+ g_list_free (priv->user_widgets);
+
+ priv->user_widgets = NULL;
priv->dialog = NULL;
g_object_notify (G_OBJECT (op), "is-showing");
gtk_window_destroy (GTK_WINDOW (dialog));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]