1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-27 18:50:07 +03:00

parser: Fix parsing of DTD content

Regressed in 2.11. Fixes #868.
This commit is contained in:
Nick Wellnhofer 2025-03-01 10:25:29 +01:00
parent 02d577715e
commit 1e3fd2677a
11 changed files with 60 additions and 1 deletions

View File

@ -7040,7 +7040,11 @@ xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
xmlParseComment(ctxt);
break;
default:
/* there is an error but it will be detected later */
xmlFatalErr(ctxt,
ctxt->inSubset == 2 ?
XML_ERR_EXT_SUBSET_NOT_FINISHED :
XML_ERR_DOCTYPE_NOT_FINISHED,
NULL);
SKIP(2);
break;
}

View File

@ -16,6 +16,12 @@ Entity: line 1: parser error : ParsePI: PI xDOCTYPEm space expected
Entity: line 1:
<!ENTITY<?xDOCTYPEm~?>
^
./test/errors/759573-2.xml:6: parser error : DOCTYPE improperly terminated
%xx;
^
Entity: line 2:
<![INCLUDE[
^
./test/errors/759573-2.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
%xx;

View File

@ -16,6 +16,12 @@ Entity: line 1: parser error : ParsePI: PI xDOCTYPEm space expected
Entity: line 1:
<!ENTITY<?xDOCTYPEm~?>
^
./test/errors/759573-2.xml:6: parser error : DOCTYPE improperly terminated
%xx;
^
Entity: line 2:
<![INCLUDE[
^
./test/errors/759573-2.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
%xx;

View File

@ -16,6 +16,12 @@ Entity: line 1: parser error : ParsePI: PI xDOCTYPEm space expected
Entity: line 1:
<!ENTITY<?xDOCTYPEm~?>
^
./test/errors/759573-2.xml:6: parser error : DOCTYPE improperly terminated
%xx;
^
Entity: line 2:
<![INCLUDE[
^
./test/errors/759573-2.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
%xx;

View File

@ -11,6 +11,12 @@ LEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : DOCTYPE improperly terminated
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration

View File

@ -11,6 +11,12 @@ LEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : DOCTYPE improperly terminated
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration

View File

@ -11,6 +11,12 @@ LEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : DOCTYPE improperly terminated
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
^
Entity: line 1:
%<![INCLUDE[000%ஸ000%z;
^
./test/errors/759573.xml:1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration

View File

@ -0,0 +1,3 @@
./test/errors/issue868.xml:3: parser error : DOCTYPE improperly terminated
<!]>
^

View File

@ -0,0 +1,3 @@
./test/errors/issue868.xml:3: parser error : DOCTYPE improperly terminated
<!]>
^

View File

@ -0,0 +1,4 @@
./test/errors/issue868.xml:3: parser error : DOCTYPE improperly terminated
<!]>
^
./test/errors/issue868.xml : failed to parse

9
test/errors/issue868.xml Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rss [
<!]>
<rss>
<channel>
<image/>
<title>PP</title>
</channel>
</rss>