1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-26 00:37:43 +03:00

an XML-1.0 document can't load an 1.1 entity when using entities make sure

* parser.c include/libxml/xmlerror.h: an XML-1.0 document can't load
  an 1.1 entity
* runxmlconf.c: when using entities make sure we load them
Daniel

svn path=/trunk/; revision=3759
This commit is contained in:
Daniel Veillard
2008-07-30 12:35:40 +00:00
parent 051d52cb61
commit 40ec29a56f
4 changed files with 23 additions and 9 deletions

View File

@@ -1,3 +1,9 @@
Wed Jul 30 14:33:33 CEST 2008 Daniel Veillard <daniel@veillard.com>
* parser.c include/libxml/xmlerror.h: an XML-1.0 document can't load
an 1.1 entity
* runxmlconf.c: when using entities make sure we load them
Tue Jul 29 18:43:07 CEST 2008 Daniel Veillard <daniel@veillard.com>
* parser.c: fix a bug not detecting cross entity comments probably

View File

@@ -204,6 +204,7 @@ typedef enum {
XML_WAR_NS_COLUMN, /* 106 */
XML_WAR_ENTITY_REDEFINED, /* 107 */
XML_ERR_UNKNOWN_VERSION, /* 108 */
XML_ERR_VERSION_MISMATCH, /* 109 */
XML_NS_ERR_XML_NAMESPACE = 200,
XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */
XML_NS_ERR_QNAME, /* 202 */

View File

@@ -6208,8 +6208,6 @@ xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
* parse an XML declaration header for external entities
*
* [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
*
* Question: Seems that EncodingDecl is mandatory ? Is that a typo ?
*/
void
@@ -11747,6 +11745,14 @@ xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx, const xmlChar *URL,
*/
if ((CMP5(CUR_PTR, '<', '?', 'x', 'm', 'l')) && (IS_BLANK_CH(NXT(5)))) {
xmlParseTextDecl(ctxt);
/*
* An XML-1.0 document can't reference an entity not XML-1.0
*/
if ((xmlStrEqual(ctx->version, BAD_CAST "1.0")) &&
(!xmlStrEqual(ctxt->input->version, BAD_CAST "1.0"))) {
xmlFatalErrMsg(ctxt, XML_ERR_VERSION_MISMATCH,
"Version mismatch between document and entity\n");
}
}
/*

View File

@@ -322,6 +322,7 @@ xmlconfTestItem(xmlDocPtr doc, xmlNodePtr cur) {
entities = xmlGetProp(cur, BAD_CAST "ENTITIES");
if (!xmlStrEqual(entities, BAD_CAST "none")) {
options |= XML_PARSE_DTDLOAD;
options |= XML_PARSE_NOENT;
}
rec = xmlGetProp(cur, BAD_CAST "RECOMMENDATION");
if ((rec == NULL) ||