aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2003-08-19 23:22:50 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2003-08-19 23:22:50 +0800
commitea129e916bd6b4de8921db9c86a42b27fbc4fd12 (patch)
tree600ddeb67bae2fe0349167b40c61dcb0d3190a0f
parentff6ebb305f3e83e866b85c3126eb7cad79976706 (diff)
downloadgsoc2013-evolution-ea129e916bd6b4de8921db9c86a42b27fbc4fd12.tar.gz
gsoc2013-evolution-ea129e916bd6b4de8921db9c86a42b27fbc4fd12.tar.zst
gsoc2013-evolution-ea129e916bd6b4de8921db9c86a42b27fbc4fd12.zip
Original patch from David Woodhouse, but modified a bit by me.
2003-08-19 Jeffrey Stedfast <fejj@ximian.com> * Original patch from David Woodhouse, but modified a bit by me. * e-msg-composer.c (handle_mailto): Fix insertion of arbitrary headers from mailto: links. Ignore From: and Reply-To: headers. svn path=/trunk/; revision=22285
-rw-r--r--composer/ChangeLog7
-rw-r--r--composer/e-msg-composer.c29
2 files changed, 26 insertions, 10 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog
index 4a51c08109..d077cd9316 100644
--- a/composer/ChangeLog
+++ b/composer/ChangeLog
@@ -1,3 +1,10 @@
+2003-08-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Original patch from David Woodhouse, but modified a bit by me.
+
+ * e-msg-composer.c (handle_mailto): Fix insertion of arbitrary
+ headers from mailto: links. Ignore From: and Reply-To: headers.
+
2003-08-13 Lorenzo Gil Sanchez <lgs@sicem.biz>
* e-msg-composer-hdrs.c (account_removed_cb): fixed an insulting
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index a7021fcba5..5a78a68a02 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -3839,14 +3839,16 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
GList *to = NULL, *cc = NULL, *bcc = NULL;
EDestination **tov, **ccv, **bccv;
char *subject = NULL, *body = NULL;
- const char *p, *header;
+ char *header, *content, *buf;
size_t nread, nwritten;
- char *content;
+ const char *p;
int len, clen;
CamelURL *url;
+ buf = g_strdup (mailto);
+
/* Parse recipients (everything after ':' until '?' or eos). */
- p = mailto + 7;
+ p = buf + 7;
len = strcspn (p, "?");
if (len) {
content = g_strndup (p, len);
@@ -3866,7 +3868,8 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
if (p[len] != '=')
break;
- header = p;
+ header = (char *) p;
+ header[len] = '\0';
p += len + 1;
clen = strcspn (p, "&");
@@ -3874,13 +3877,13 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
content = g_strndup (p, clen);
camel_url_decode (content);
- if (!strncasecmp (header, "to", len)) {
+ if (!strcasecmp (header, "to")) {
to = add_recipients (to, content, FALSE);
- } else if (!strncasecmp (header, "cc", len)) {
+ } else if (!strcasecmp (header, "cc")) {
cc = add_recipients (cc, content, FALSE);
- } else if (!strncasecmp (header, "bcc", len)) {
+ } else if (!strcasecmp (header, "bcc")) {
bcc = add_recipients (bcc, content, FALSE);
- } else if (!strncasecmp (header, "subject", len)) {
+ } else if (!strcasecmp (header, "subject")) {
g_free (subject);
if (g_utf8_validate (content, -1, NULL)) {
subject = content;
@@ -3893,7 +3896,7 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
subject[nwritten] = '\0';
}
}
- } else if (!strncasecmp (header, "body", len)) {
+ } else if (!strcasecmp (header, "body")) {
g_free (body);
if (g_utf8_validate (content, -1, NULL)) {
body = content;
@@ -3906,7 +3909,7 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
body[nwritten] = '\0';
}
}
- } else if (!strncasecmp (header, "attach", len)) {
+ } else if (!strcasecmp (header, "attach")) {
/*Change file url to absolute path*/
if (!strncasecmp (content, "file:", 5)) {
url = camel_url_new (content, NULL);
@@ -3917,6 +3920,10 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
e_msg_composer_attachment_bar_attach (E_MSG_COMPOSER_ATTACHMENT_BAR (composer->attachment_bar),
content);
}
+ } else if (!strcasecmp (header, "from")) {
+ /* Ignore */
+ } else if (!strcasecmp (header, "reply-to")) {
+ /* ignore */
} else {
/* add an arbitrary header? */
e_msg_composer_add_header (composer, header, content);
@@ -3933,6 +3940,8 @@ handle_mailto (EMsgComposer *composer, const char *mailto)
}
}
+ g_free (buf);
+
tov = e_destination_list_to_vector (to);
ccv = e_destination_list_to_vector (cc);
bccv = e_destination_list_to_vector (bcc);