diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2001-11-29 16:11:38 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2001-11-29 16:11:38 +0000 |
commit | 1984094c15ab464c56ddc2c898d6b2ab0caf9649 (patch) | |
tree | 1d20b9f402fb874f3a0fc942d2d6d9611d5a615f /parser.c | |
parent | 913d6e090f948cdb3517b346202b2e9580728c91 (diff) | |
download | libxml2-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.c | 31 |
1 files changed, 19 insertions, 12 deletions
@@ -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 |