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.
This commit is contained in:
Hiltjo Posthuma 2018-08-21 20:11:23 +02:00
parent 64f089d0b7
commit 4565334dfe
1 changed files with 4 additions and 3 deletions

7
xml.c
View File

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