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:
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;
}
}
}