[Commits] [SCM] claws branch, master, updated. 3.10.1-131-g4f09c01
ticho at claws-mail.org
ticho at claws-mail.org
Fri Jul 25 14:46:07 CEST 2014
The branch, master has been updated
via 4f09c01265edb0f7c4cd3f8f205f960277900994 (commit)
from 76d37e0ac4cb6a451e44523f76201d7d57d45799 (commit)
Summary of changes:
src/plugins/rssyl/libfeed/parser_atom10.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
- Log -----------------------------------------------------------------
commit 4f09c01265edb0f7c4cd3f8f205f960277900994
Author: Andrej Kacian <ticho at claws-mail.org>
Date: Fri Jul 25 14:45:11 2014 +0200
RSSyl: Fix Atom parser getting lost within feed/author.
diff --git a/src/plugins/rssyl/libfeed/parser_atom10.c b/src/plugins/rssyl/libfeed/parser_atom10.c
index 64a4ffe..e758425 100644
--- a/src/plugins/rssyl/libfeed/parser_atom10.c
+++ b/src/plugins/rssyl/libfeed/parser_atom10.c
@@ -51,10 +51,13 @@ void feed_parser_atom10_start(void *data, const gchar *el, const gchar **attr)
} else if( ctx->depth == 2 ) {
- /* This should only happen with malformed atom feeds - we're in
- * XML depth 2, but not inside an <entry> block. */
- if (ctx->curitem == NULL)
+ /* Make sure we are in one of known locations within the XML structure.
+ * This condition should never be true on a valid Atom feed. */
+ if (ctx->location != FEED_LOC_ATOM10_AUTHOR &&
+ ctx->location != FEED_LOC_ATOM10_ENTRY) {
+ ctx->depth++;
return;
+ }
if( !strcmp(el, "author") ) {
/* Start of author info for current feed item.
@@ -101,11 +104,13 @@ void feed_parser_atom10_end(void *data, const gchar *el)
else
text = "";
- ctx->depth--;
-
switch( ctx->depth ) {
case 0:
+ /* Just in case. */
+ break;
+
+ case 1:
if( !strcmp(el, "feed") ) {
/* We have finished parsing the feed, reverse the list
@@ -115,7 +120,7 @@ void feed_parser_atom10_end(void *data, const gchar *el)
break;
- case 1:
+ case 2:
/* decide if we just received </entry>, so we can
* add a complete item to feed */
@@ -142,7 +147,7 @@ void feed_parser_atom10_end(void *data, const gchar *el)
break;
- case 2:
+ case 3:
if( ctx->curitem == NULL )
break;
@@ -189,7 +194,7 @@ void feed_parser_atom10_end(void *data, const gchar *el)
break;
- case 3:
+ case 4:
if( ctx->curitem == NULL )
break;
@@ -234,4 +239,6 @@ void feed_parser_atom10_end(void *data, const gchar *el)
ctx->str = NULL;
}
ctx->str = NULL;
+
+ ctx->depth--;
}
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list