summaryrefslogtreecommitdiff
path: root/parser.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2001-11-29 16:11:38 +0000
committerDaniel Veillard <veillard@src.gnome.org>2001-11-29 16:11:38 +0000
commit1984094c15ab464c56ddc2c898d6b2ab0caf9649 (patch)
tree1d20b9f402fb874f3a0fc942d2d6d9611d5a615f /parser.c
parent913d6e090f948cdb3517b346202b2e9580728c91 (diff)
downloadlibxml2-1984094c15ab464c56ddc2c898d6b2ab0caf9649.tar.gz
Robin Berjon <robin@knowscape.com> found a case where non-wellformed XML
* parser.c: Robin Berjon <robin@knowscape.com> found a case where non-wellformed XML declaractions were not detected. Daniel
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/parser.c b/parser.c
index dde6d128..16a54230 100644
--- a/parser.c
+++ b/parser.c
@@ -7316,21 +7316,28 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
SKIP_BLANKS;
/*
- * We should have the VersionInfo here.
+ * We must have the VersionInfo here.
*/
version = xmlParseVersionInfo(ctxt);
- if (version == NULL)
- version = xmlCharStrdup(XML_DEFAULT_VERSION);
- else if (!xmlStrEqual(version, (const xmlChar *) XML_DEFAULT_VERSION)) {
- /*
- * TODO: Blueberry should be detected here
- */
- if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData, "Unsupported version '%s'\n",
- version);
+ if (version == NULL) {
+ if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+ ctxt->sax->error(ctxt->userData,
+ "Malformed declaration expecting version\n");
+ ctxt->wellFormed = 0;
+ ctxt->disableSAX = 1;
+ } else {
+ if (!xmlStrEqual(version, (const xmlChar *) XML_DEFAULT_VERSION)) {
+ /*
+ * TODO: Blueberry should be detected here
+ */
+ if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
+ ctxt->sax->warning(ctxt->userData, "Unsupported version '%s'\n",
+ version);
+ }
+ if (ctxt->version != NULL)
+ xmlFree(ctxt->version);
+ ctxt->version = version;
}
- ctxt->version = xmlStrdup(version);
- xmlFree(version);
/*
* We may have the encoding declaration