diff options
author | Rodrigo Moya <rodrigo@gnome-db.org> | 2010-11-05 15:44:43 +0100 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2010-11-05 15:44:43 +0100 |
commit | 9178b52ae5b26a3018b776878cc9fbdfd2393345 (patch) | |
tree | b447da546105f2105ed6f7fee9004660f9e9fc57 | |
parent | 86a6538977f439ab74c4d9a3e2ba5dd20c7112bd (diff) | |
download | gnome-settings-daemon-9178b52ae5b26a3018b776878cc9fbdfd2393345.tar.gz |
housekeeping: Don't access free'd memory if a volume is unmounted whilst the dialog is displayed
-rw-r--r-- | plugins/housekeeping/gsd-disk-space.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c index 8c4d3787..d47cdf79 100644 --- a/plugins/housekeeping/gsd-disk-space.c +++ b/plugins/housekeeping/gsd-disk-space.c @@ -181,7 +181,7 @@ ldsm_notify_for_mount (LdsmMountInfo *mount, gboolean has_trash; gboolean has_disk_analyzer; gboolean retval = TRUE; - const gchar *path; + gchar *path; /* Don't show a dialog if one is already displayed */ if (dialog) @@ -190,7 +190,7 @@ ldsm_notify_for_mount (LdsmMountInfo *mount, name = g_unix_mount_guess_name (mount->mount); free_space = (gint64) mount->buf.f_frsize * (gint64) mount->buf.f_bavail; has_trash = ldsm_mount_has_trash (mount); - path = g_unix_mount_get_mount_path (mount->mount); + path = g_strdup (g_unix_mount_get_mount_path (mount->mount)); program = g_find_program_in_path (DISK_SPACE_ANALYZER); has_disk_analyzer = (program != NULL); @@ -218,7 +218,7 @@ ldsm_notify_for_mount (LdsmMountInfo *mount, break; case GSD_LDSM_DIALOG_RESPONSE_ANALYZE: retval = FALSE; - ldsm_analyze_path (g_unix_mount_get_mount_path (mount->mount)); + ldsm_analyze_path (path); break; case GSD_LDSM_DIALOG_RESPONSE_EMPTY_TRASH: retval = TRUE; @@ -232,6 +232,8 @@ ldsm_notify_for_mount (LdsmMountInfo *mount, g_assert_not_reached (); } + g_free (path); + return retval; } |