Skip to content

Commit ee1a43d

Browse files
committed
parser: Fix parsing of DTD content
Regressed in 2.11. Fixes #868.
1 parent 6645324 commit ee1a43d

File tree

11 files changed

+60
-1
lines changed

11 files changed

+60
-1
lines changed

parser.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7153,7 +7153,11 @@ xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
71537153
xmlParseComment(ctxt);
71547154
break;
71557155
default:
7156-
/* there is an error but it will be detected later */
7156+
xmlFatalErr(ctxt,
7157+
ctxt->inSubset == 2 ?
7158+
XML_ERR_EXT_SUBSET_NOT_FINISHED :
7159+
XML_ERR_INT_SUBSET_NOT_FINISHED,
7160+
NULL);
71577161
SKIP(2);
71587162
break;
71597163
}

result/errors/759573-2.xml.ent

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,11 @@ Entity: line 1:
2020
%xx;
2121
^
2222
Entity: line 2:
23+
<![INCLUDE[
24+
^
25+
./test/errors/759573-2.xml:6: parser error : Content error in the internal subset
26+
%xx;
27+
^
28+
Entity: line 2:
2329
<![INCLUDE[
2430
^

result/errors/759573-2.xml.err

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,11 @@ Entity: line 1:
2020
%xx;
2121
^
2222
Entity: line 2:
23+
<![INCLUDE[
24+
^
25+
./test/errors/759573-2.xml:6: parser error : Content error in the internal subset
26+
%xx;
27+
^
28+
Entity: line 2:
2329
<![INCLUDE[
2430
^

result/errors/759573-2.xml.str

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ Entity: line 1:
2020
%xx;
2121
^
2222
Entity: line 2:
23+
<![INCLUDE[
24+
^
25+
./test/errors/759573-2.xml:6: parser error : Content error in the internal subset
26+
%xx;
27+
^
28+
Entity: line 2:
2329
<![INCLUDE[
2430
^
2531
./test/errors/759573-2.xml : failed to parse

result/errors/759573.xml.ent

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,11 @@ Entity: line 1:
1717
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
1818
^
1919
Entity: line 1:
20+
%<![INCLUDE[000%ஸ000%z;
21+
^
22+
./test/errors/759573.xml:1: parser error : Content error in the internal subset
23+
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
24+
^
25+
Entity: line 1:
2026
%<![INCLUDE[000%ஸ000%z;
2127
^

result/errors/759573.xml.err

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,11 @@ Entity: line 1:
1717
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
1818
^
1919
Entity: line 1:
20+
%<![INCLUDE[000%ஸ000%z;
21+
^
22+
./test/errors/759573.xml:1: parser error : Content error in the internal subset
23+
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
24+
^
25+
Entity: line 1:
2026
%<![INCLUDE[000%ஸ000%z;
2127
^

result/errors/759573.xml.str

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ Entity: line 1:
1717
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
1818
^
1919
Entity: line 1:
20+
%<![INCLUDE[000%ஸ000%z;
21+
^
22+
./test/errors/759573.xml:1: parser error : Content error in the internal subset
23+
T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
24+
^
25+
Entity: line 1:
2026
%<![INCLUDE[000%ஸ000%z;
2127
^
2228
./test/errors/759573.xml : failed to parse

result/errors/issue868.xml.ent

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
./test/errors/issue868.xml:3: parser error : Content error in the internal subset
2+
<!]>
3+
^

result/errors/issue868.xml.err

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
./test/errors/issue868.xml:3: parser error : Content error in the internal subset
2+
<!]>
3+
^

result/errors/issue868.xml.str

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
./test/errors/issue868.xml:3: parser error : Content error in the internal subset
2+
<!]>
3+
^
4+
./test/errors/issue868.xml : failed to parse

0 commit comments

Comments
 (0)