From 4565334dfe44863c50bdae150e85efca65f9ab18 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 21 Aug 2018 20:11:23 +0200 Subject: 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. --- xml.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xml.c b/xml.c index f9fcb05..2efd930 100644 --- 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; } } } -- cgit v1.2.3