summaryrefslogtreecommitdiff
path: root/src/modules/rss/e-rss-parser.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2023-02-15 18:02:42 +0100
committerMilan Crha <mcrha@redhat.com>2023-02-15 18:02:42 +0100
commit1ada82101acd9437a825c11907c4910026c910f9 (patch)
treee6ba54aa3125b4855d08808a3e2ba4c823c0a609 /src/modules/rss/e-rss-parser.c
parent8e117e9c56d52fd013c1d167219dd52603decb52 (diff)
downloadevolution-1ada82101acd9437a825c11907c4910026c910f9.tar.gz
I#2261 - RSS: Read of author depends on element order
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2261
Diffstat (limited to 'src/modules/rss/e-rss-parser.c')
-rw-r--r--src/modules/rss/e-rss-parser.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/rss/e-rss-parser.c b/src/modules/rss/e-rss-parser.c
index 25522f2a0a..54b5a9bfc8 100644
--- a/src/modules/rss/e-rss-parser.c
+++ b/src/modules/rss/e-rss-parser.c
@@ -62,14 +62,16 @@ e_rss_read_feed_person (xmlNodePtr author,
xmlChar **out_email)
{
xmlNodePtr node;
+ gboolean email_set = FALSE;
- for (node = author->children; node && (!*out_name || !*out_email); node = node->next) {
+ for (node = author->children; node && (!*out_name || !email_set); node = node->next) {
if (g_strcmp0 ((const gchar *) node->name, "name") == 0) {
g_clear_pointer (out_name, xmlFree);
*out_name = xmlNodeGetContent (node);
} else if (g_strcmp0 ((const gchar *) node->name, "email") == 0) {
g_clear_pointer (out_email, xmlFree);
*out_email = xmlNodeGetContent (node);
+ email_set = *out_email && **out_email;
} else if (g_strcmp0 ((const gchar *) node->name, "uri") == 0 &&
(!*out_email || !**out_email)) {
g_clear_pointer (out_email, xmlFree);
@@ -82,6 +84,13 @@ e_rss_read_feed_person (xmlNodePtr author,
if (*out_name && !**out_name)
g_clear_pointer (out_name, xmlFree);
}
+
+ if (*out_email && (
+ g_ascii_strncasecmp ((const gchar *) *out_email, "http://", 7) == 0 ||
+ g_ascii_strncasecmp ((const gchar *) *out_email, "https://", 8) == 0)) {
+ /* Do not use URIs as emails */
+ g_clear_pointer (out_email, xmlFree);
+ }
}
static gchar *