diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2006-02-05 02:43:36 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2006-02-05 02:43:36 +0000 |
commit | 6974feb0cf30d4201140ae2cf9c311bfdd87a4ff (patch) | |
tree | fdc5002b5d718a7d71504afbd7bb90c0976e051c | |
parent | a81d9199c6d152d4789217f7c45563e9155dd457 (diff) | |
download | android_external_libxml2-6974feb0cf30d4201140ae2cf9c311bfdd87a4ff.tar.gz android_external_libxml2-6974feb0cf30d4201140ae2cf9c311bfdd87a4ff.tar.bz2 android_external_libxml2-6974feb0cf30d4201140ae2cf9c311bfdd87a4ff.zip |
fixed the comment streaming bug raised by Graham Bennett added to the
* parser.c: fixed the comment streaming bug raised by Graham Bennett
* test/badcomment.xml result//badcomment.xml*: added to the regression suite.
Daniel
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | parser.c | 10 | ||||
-rw-r--r-- | result/badcomment.xml | 17 | ||||
-rw-r--r-- | result/badcomment.xml.rde | 21 | ||||
-rw-r--r-- | result/badcomment.xml.rdr | 21 | ||||
-rw-r--r-- | result/badcomment.xml.sax | 24 | ||||
-rw-r--r-- | result/badcomment.xml.sax2 | 24 | ||||
-rw-r--r-- | result/noent/badcomment.xml | 17 | ||||
-rw-r--r-- | test/badcomment.xml | 18 |
9 files changed, 156 insertions, 2 deletions
@@ -1,3 +1,9 @@ +Sun Feb 5 03:41:39 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the comment streaming bug raised by Graham Bennett + * test/badcomment.xml result//badcomment.xml*: added to the regression + suite. + Fri Feb 3 17:36:41 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> * include/libxml/tree.h: Added the xmlDOMWrapCloneNode() to @@ -9838,8 +9838,14 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { } else if ((cur == '<') && (next == '!') && (ctxt->input->cur[2] == '-') && (ctxt->input->cur[3] == '-')) { - if ((!terminate) && - (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0)) + int term; + + if (avail < 4) + goto done; + ctxt->input->cur += 4; + term = xmlParseLookupSequence(ctxt, '-', '-', '>'); + ctxt->input->cur -= 4; + if ((!terminate) && (term < 0)) goto done; xmlParseComment(ctxt); ctxt->instate = XML_PARSER_CONTENT; diff --git a/result/badcomment.xml b/result/badcomment.xml new file mode 100644 index 00000000..6b13c113 --- /dev/null +++ b/result/badcomment.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<foo> +<!-- def='NT-Char'--><!-->Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs>--> +</foo> diff --git a/result/badcomment.xml.rde b/result/badcomment.xml.rde new file mode 100644 index 00000000..29a3cd1c --- /dev/null +++ b/result/badcomment.xml.rde @@ -0,0 +1,21 @@ +0 1 foo 0 0 +1 14 #text 0 1 + +1 8 #comment 0 1 def='NT-Char' +1 8 #comment 0 1 >Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs> +1 14 #text 0 1 + +0 15 foo 0 0 diff --git a/result/badcomment.xml.rdr b/result/badcomment.xml.rdr new file mode 100644 index 00000000..29a3cd1c --- /dev/null +++ b/result/badcomment.xml.rdr @@ -0,0 +1,21 @@ +0 1 foo 0 0 +1 14 #text 0 1 + +1 8 #comment 0 1 def='NT-Char' +1 8 #comment 0 1 >Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs> +1 14 #text 0 1 + +0 15 foo 0 0 diff --git a/result/badcomment.xml.sax b/result/badcomment.xml.sax new file mode 100644 index 00000000..d4093693 --- /dev/null +++ b/result/badcomment.xml.sax @@ -0,0 +1,24 @@ +SAX.setDocumentLocator() +SAX.startDocument() +SAX.startElement(foo) +SAX.characters( +, 1) +SAX.comment( def='NT-Char') +SAX.comment(>Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs>) +SAX.characters( +, 1) +SAX.endElement(foo) +SAX.endDocument() diff --git a/result/badcomment.xml.sax2 b/result/badcomment.xml.sax2 new file mode 100644 index 00000000..08e56221 --- /dev/null +++ b/result/badcomment.xml.sax2 @@ -0,0 +1,24 @@ +SAX.setDocumentLocator() +SAX.startDocument() +SAX.startElementNs(foo, NULL, NULL, 0, 0, 0) +SAX.characters( +, 1) +SAX.comment( def='NT-Char') +SAX.comment(>Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs>) +SAX.characters( +, 1) +SAX.endElementNs(foo, NULL, NULL) +SAX.endDocument() diff --git a/result/noent/badcomment.xml b/result/noent/badcomment.xml new file mode 100644 index 00000000..6b13c113 --- /dev/null +++ b/result/noent/badcomment.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<foo> +<!-- def='NT-Char'--><!-->Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs>--> +</foo> diff --git a/test/badcomment.xml b/test/badcomment.xml new file mode 100644 index 00000000..147414c7 --- /dev/null +++ b/test/badcomment.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<foo> +<!-- def='NT-Char'--><!-->Char</nt>* ']]>' <nt def='NT-Char'>Char</nt>*)) +']]>'</rhs> +<com>CDATA sections</com> +<rhs>| '<!DOCTYPE' +(<nt def="NT-Char">Char</nt> - ('[' | ']'))+ +('[' +<nt def="NT-simpleDTD">simpleDTD</nt>* +']')? '>'</rhs> +<com>doc type declaration</com> +<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs> +<rhs>'<!&como;' +(<nt def='NT-Char'>Char</nt>* - +(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) +'&comc;>'</rhs>--> +</foo> |