1
From: Daniel Veillard <veillard@redhat.com>
2
Date: Wed, 22 May 2013 20:56:45 +0000
3
Subject: Fix a parsing bug on non-ascii element and CR/LF usage
5
https://bugzilla.gnome.org/show_bug.cgi?id=698550
7
Somehow the behaviour of the internal parser routine changed
8
slightly when encountering CR/LF, which led to a bug when
9
parsing document with non-ascii Names
12
1 file changed, 5 insertions(+), 1 deletion(-)
14
diff --git a/parser.c b/parser.c
15
index b9df6d8..dd00399 100644
18
@@ -3404,6 +3404,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
22
+ const xmlChar *end; /* needed because CUR_CHAR() can move cur on \r\n */
25
nbParseNCNameComplex++;
26
@@ -3413,6 +3414,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
27
* Handler for more complex cases
30
+ end = ctxt->input->cur;
32
if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
33
(!xmlIsNameStartChar(ctxt, c) || (c == ':'))) {
34
@@ -3434,12 +3436,14 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
38
+ end = ctxt->input->cur;
43
if (ctxt->instate == XML_PARSER_EOF)
45
+ end = ctxt->input->cur;
49
@@ -3448,7 +3452,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
50
xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
53
- return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
54
+ return(xmlDictLookup(ctxt->dict, end - len, len));