mirror of
https://gitlab.gnome.org/GNOME/libxml2
synced 2025-03-28 21:33:13 +00:00
Fix timeout when handling recursive entities
Abort parsing early to avoid an almost infinite loop in certain error cases involving recursive entities. Found with libFuzzer.
This commit is contained in:
parent
45da175c14
commit
79301d3d5e
1
parser.c
1
parser.c
@ -7158,6 +7158,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
|
||||
ent->checked |= 1;
|
||||
if (ret == XML_ERR_ENTITY_LOOP) {
|
||||
xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
|
||||
xmlHaltParser(ctxt);
|
||||
xmlFreeNodeList(list);
|
||||
return;
|
||||
}
|
||||
|
@ -1,243 +1,123 @@
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Entity 'e' failed to parse
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:2: parser error : chunk is not well balanced
|
||||
|
||||
^
|
||||
./test/errors/rec_ext_ent.xml:4: parser error : Entity 'e' failed to parse
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
test/errors/rec_ext.ent:1: parser error : Detected an entity reference loop
|
||||
<ent>&e; &e; &e; &e;</ent>
|
||||
^
|
||||
./test/errors/rec_ext_ent.xml:4: parser error : Detected an entity reference loop
|
||||
<doc>&e; &e; &e; &e;</doc>
|
||||
^
|
||||
|
Loading…
x
Reference in New Issue
Block a user