--- evolution-2.6.1.orig/e-util/e-error.c
+++ evolution-2.6.1/e-util/e-error.c
@@ -141,6 +141,51 @@
 	return 3;
 }
 
+static xmlChar *
+get_node_contents_and_escape_quotes(xmlNodePtr node)
+{
+	xmlChar *node_contents;
+	xmlChar *escaped;
+	xmlChar *ch, *ch2;
+	int len;
+
+	node_contents = xmlNodeGetContent(node);
+
+	if (node_contents == NULL)
+		return(NULL);
+
+	len = xmlStrlen(node_contents);
+
+	for (ch = node_contents; *ch != '\0'; ch++)
+	{
+		if (*ch == '"')
+			len += 5;
+	}
+
+	escaped = xmlMalloc(len + 1);
+
+	/* If no memory could be allocated, return the original string */
+	if (escaped == NULL)
+		return(node_contents);
+
+	for (ch = node_contents, ch2 = escaped; *ch != '\0'; ch++, ch2++)
+	{
+		if (*ch == '"')
+		{
+			strcpy(ch2, "&quot;");
+			ch2 += 5;
+		}
+		else
+			*ch2 = *ch;
+	}
+
+	escaped[len] = '\0';
+
+	xmlFree(node_contents);
+
+	return(escaped);
+}
+
 /*
   XML format:
 
@@ -238,17 +283,17 @@
 
 			for (scan = error->children;scan;scan=scan->next) {
 				if (!strcmp(scan->name, "primary")) {
-					if ((tmp = xmlNodeGetContent(scan))) {
+					if ((tmp = get_node_contents_and_escape_quotes(scan))) {
 						e->primary = g_strdup(dgettext(table->translation_domain, tmp));
 						xmlFree(tmp);
 					}
 				} else if (!strcmp(scan->name, "secondary")) {
-					if ((tmp = xmlNodeGetContent(scan))) {
+					if ((tmp = get_node_contents_and_escape_quotes(scan))) {
 						e->secondary = g_strdup(dgettext(table->translation_domain, tmp));
 						xmlFree(tmp);
 					}
 				} else if (!strcmp(scan->name, "title")) {
-					if ((tmp = xmlNodeGetContent(scan))) {
+					if ((tmp = get_node_contents_and_escape_quotes(scan))) {
 						e->title = g_strdup(dgettext(table->translation_domain, tmp));
 						xmlFree(tmp);
 					}
