[evolution-ews] Properly escape the attachment id when saving an attachment during GetAttachment
- From: Or Goshen <ogosh src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Properly escape the attachment id when saving an attachment during GetAttachment
- Date: Thu, 14 Jul 2011 09:41:00 +0000 (UTC)
commit 9cff1cc6f9b10a9673f301e93e6a56fa392da925
Author: Or Goshen <orx goshen intel com>
Date: Thu Jul 14 12:51:18 2011 +0300
Properly escape the attachment id when saving an attachment during GetAttachment
src/server/e-ews-item.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/src/server/e-ews-item.c b/src/server/e-ews-item.c
index 028612e..9aa7cda 100644
--- a/src/server/e-ews-item.c
+++ b/src/server/e-ews-item.c
@@ -1238,7 +1238,7 @@ e_ews_dump_file_attachment_from_soap_parameter (ESoapParameter *param, const gch
{
ESoapParameter *subparam;
const gchar *param_name;
- gchar *name = NULL, *value, filename[350], *surename, dirname[350], *attach_id = NULL;
+ gchar *name = NULL, *value, filename[350], dirname[350], *attach_id = NULL;
guchar *content = NULL;
gsize data_len = 0;
gchar *tmpdir, *tmpfilename;
@@ -1249,14 +1249,18 @@ e_ews_dump_file_attachment_from_soap_parameter (ESoapParameter *param, const gch
for (subparam = e_soap_parameter_get_first_child(param); subparam != NULL; subparam = e_soap_parameter_get_next_child(subparam)) {
param_name = e_soap_parameter_get_name(subparam);
- if (g_ascii_strcasecmp(param_name, "Name") == 0)
- name = e_soap_parameter_get_string_value(subparam);
- else if (g_ascii_strcasecmp(param_name, "Content") == 0) {
+ if (g_ascii_strcasecmp(param_name, "Name") == 0) {
+ value = e_soap_parameter_get_string_value(subparam);
+ name = g_uri_escape_string(value, "", TRUE);
+ g_free (value);
+ } else if (g_ascii_strcasecmp(param_name, "Content") == 0) {
value = e_soap_parameter_get_string_value (subparam);
content = g_base64_decode (value, &data_len);
g_free (value);
} else if (g_ascii_strcasecmp(param_name, "AttachmentId") == 0) {
- attach_id = e_soap_parameter_get_string_value(subparam);
+ value = e_soap_parameter_get_property (subparam, "Id");
+ attach_id = g_uri_escape_string(value, "", TRUE);
+ g_free (value);
}
}
@@ -1271,15 +1275,17 @@ e_ews_dump_file_attachment_from_soap_parameter (ESoapParameter *param, const gch
tmpfilename = (gchar *) content;
tmpdir = g_strndup(tmpfilename, g_strrstr (tmpfilename, "/") - tmpfilename);
- surename = g_uri_escape_string(name, "", TRUE);
- snprintf(filename, 350, "%s/%s/%s", dirname, attach_id, surename);
+ snprintf (dirname, 350, "%s/%s", tmpdir, attach_id);
+ if (g_mkdir (dirname, 0775) == -1) {
+ g_warning("Failed create directory to place file in [%s]: %s\n", dirname, strerror (errno));
+ }
+ snprintf(filename, 350, "%s/%s", dirname, name);
if (g_rename (tmpfilename, filename) != 0) {
- g_warning("Failed to move attachment cache file");
+ g_warning("Failed to move attachment cache file [%s -> %s]: %s\n", tmpfilename, filename, strerror (errno));
}
g_free(tmpdir);
- g_free(surename);
g_free(name);
g_free(content);
g_free(attach_id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]