sfeed

Simple RSS and Atom feed parser
git clone https://git.sinitax.com/codemadness/sfeed
Log | Files | Refs | README | LICENSE | Upstream | sfeed.txt

commit 4565334dfe44863c50bdae150e85efca65f9ab18
parent 64f089d0b742dc2347cf671549f31f485b0a8c41
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Tue, 21 Aug 2018 20:11:23 +0200

xml: fix missing first byte when parsing a long incorrect attribute entity

... the entity had to be invalid (start with &) and longer than the buffer
size.

+ tiny style fix.

Diffstat:
Mxml.c | 7++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/xml.c b/xml.c @@ -57,11 +57,12 @@ xml_parseattrs(XMLParser *x) if (valuelen < sizeof(x->data) - 1) x->data[valuelen++] = c; else { - /* TODO: entity too long? this should be very strange. */ + /* entity too long for buffer, handle as normal data */ x->data[valuelen] = '\0'; if (x->xmlattr) x->xmlattr(x, x->tag, x->taglen, x->name, namelen, x->data, valuelen); - valuelen = 0; + x->data[0] = c; + valuelen = 1; break; } if (c == ';') { @@ -100,8 +101,8 @@ xml_parseattrs(XMLParser *x) break; } else if (c == '/') { x->isshorttag = 1; - namelen = 0; x->name[0] = '\0'; + namelen = 0; } } }