Blob Blame History Raw
From effd37f3011ab8b6d4f2c593fd2256cf73f626c0 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Mon, 22 Mar 2010 14:19:46 +0000
Subject: [PATCH] about-me: fix use after free when closing window

about_me_destroy() frees the whole data structure and it tries to do the
right thing by setting "me = NULL" afterwards, but "me" in this case is
not the global variable, but the local one which shadows it. So the
global "me" remains non-NULL and when later about_me_focus_out() is
called, it cannot know it should return early.

It only makes sense for about_me_destroy() to operate on the global
"me", so there's no point in passing it as a parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=592348
---
 capplets/about-me/gnome-about-me.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/capplets/about-me/gnome-about-me.c b/capplets/about-me/gnome-about-me.c
index 9551917..755dba8 100644
--- a/capplets/about-me/gnome-about-me.c
+++ b/capplets/about-me/gnome-about-me.c
@@ -163,7 +163,7 @@ about_me_error (GtkWindow *parent, gchar *str)
 
 /********************/
 static void
-about_me_destroy (GnomeAboutMe *me)
+about_me_destroy (void)
 {
 	e_contact_address_free (me->addr1);
 	e_contact_address_free (me->addr2);
@@ -813,7 +813,7 @@ about_me_button_clicked_cb (GtkDialog *dialog, gint response_id, GnomeAboutMe *m
 			about_me_commit (me);
 		}
 
-		about_me_destroy (me);
+		about_me_destroy ();
 		gtk_main_quit ();
 	}
 }
@@ -855,7 +855,7 @@ about_me_setup_dialog (void)
 	gtk_container_add (GTK_CONTAINER (WID ("button-image")), me->image_chooser);
 
 	if (dialog == NULL) {
-		about_me_destroy (me);
+		about_me_destroy ();
 		return -1;
 	}
 
@@ -890,7 +890,7 @@ about_me_setup_dialog (void)
 			about_me_error (NULL, _("There was an error while trying to get the addressbook information\n" \
 						"Evolution Data Server can't handle the protocol"));
 			g_clear_error (&error);
-			about_me_destroy (me);
+			about_me_destroy ();
 			return -1;
 		}
 
-- 
1.7.0.1