From 9e4d6e44b4b9324109d5d1aa045a94332109cc96 Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Sun, 14 Sep 2014 05:24:07 +0200 Subject: [PATCH] RSSyl: Do not use g_strsplit_set() to get the ID from message file, since the ID itself can contain < or > characters. Should fix bug #3282. --- src/plugins/rssyl/parse822.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/plugins/rssyl/parse822.c b/src/plugins/rssyl/parse822.c index 846fb6dd5..01a7f7b74 100644 --- a/src/plugins/rssyl/parse822.c +++ b/src/plugins/rssyl/parse822.c @@ -50,7 +50,7 @@ */ FeedItem *rssyl_parse_folder_item_file(gchar *path) { - gchar *contents, **lines, **line, **splid; + gchar *contents, **lines, **line, **splid, *tmp, *tmp2; GError *error = NULL; FeedItem *item; RFeedCtx *ctx; @@ -138,10 +138,15 @@ FeedItem *rssyl_parse_folder_item_file(gchar *path) /* ID */ if( !strcmp(line[0], "Message-ID") ) { - splid = g_strsplit_set(line[1], "<>", 3); - if( strlen(splid[1]) != 0 ) - feed_item_set_id(item, splid[1]); - g_strfreev(splid); + if (line[1][0] != '<' || line[1][strlen(line[1])-1] != '>') { + debug_print("RSSyl: malformed Message-ID, ignoring...\n"); + } else { + /* Get the ID from within < and >. */ + tmp = line[1] + 1; + tmp2 = g_strndup(tmp, strlen(tmp) - 1); + feed_item_set_id(item, tmp2); + g_free(tmp2); + } } /* Feed comments */ -- 2.25.1