From 8ad36d3e8950c17e87ec346f1afed9a2eb1a8c6e Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Mon, 3 Aug 2009 13:51:51 +0200 Subject: [PATCH] Fixed NB#128634, cannot open attachments multiple times. Temporary file names that we're using for opening attachments were not properly escaped --- src/modest-utils.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/modest-utils.c b/src/modest-utils.c index 376d797..8507fd5 100644 --- a/src/modest-utils.c +++ b/src/modest-utils.c @@ -106,16 +106,16 @@ modest_utils_folder_writable (const gchar *filename) gboolean modest_utils_file_exists (const gchar *filename) { - GnomeVFSURI *uri = NULL; gboolean result = FALSE; + gchar *escaped; g_return_val_if_fail (filename, FALSE); - uri = gnome_vfs_uri_new (filename); - if (uri) { - result = gnome_vfs_uri_exists (uri); - gnome_vfs_uri_unref (uri); - } + escaped = g_uri_escape_string (filename, NULL, FALSE); + if (g_access (escaped, F_OK) == 0) + result = TRUE; + g_free (escaped); + return result; } @@ -124,7 +124,7 @@ modest_utils_create_temp_stream (const gchar *orig_name, const gchar *hash_base, { gint fd; gchar *filepath = NULL; - gchar *tmpdir; + gchar *tmpdir, *tmp; guint hash_number; /* hmmm... maybe we need a modest_text_utils_validate_file_name? */ @@ -156,15 +156,16 @@ modest_utils_create_temp_stream (const gchar *orig_name, const gchar *hash_base, return NULL; } - filepath = g_strconcat (tmpdir, "/", orig_name, NULL); + tmp = g_uri_escape_string (orig_name, NULL, FALSE); + filepath = g_build_filename (tmpdir, tmp, NULL); + g_free (tmp); /* if file exists, first we try to remove it */ - if (modest_utils_file_exists (filepath)) { + if (g_access (filepath, F_OK) == 0) g_unlink (filepath); - } /* don't overwrite if it already exists, even if it is writable */ - if (modest_utils_file_exists (filepath)) { + if (g_access (filepath, F_OK) == 0) { if (path!=NULL) { *path = filepath; } else { -- 1.7.9.5