1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-12 16:58:16 +03:00

Only warn on invalid redeclarations of predefined entities

Downgrade the error message to a warning since the error was ignored,
anyway. Also print the name of redeclared entity. For a proper fix that
also shows filename and line number of the invalid redeclaration, we'd
have to

- pass the parser context to the entity functions somehow, or
- make these functions return distinct error codes.

Partial fix for #308.
This commit is contained in:
Nick Wellnhofer 2022-02-20 16:44:41 +01:00
parent e03590c9ad
commit ce0871e15c
6 changed files with 29 additions and 2 deletions

View File

@ -94,6 +94,23 @@ xmlEntitiesErr(xmlParserErrors code, const char *msg)
__xmlSimpleError(XML_FROM_TREE, code, NULL, msg, NULL); __xmlSimpleError(XML_FROM_TREE, code, NULL, msg, NULL);
} }
/**
* xmlEntitiesWarn:
* @code: the error code
* @msg: the message
*
* Handle an out of memory condition
*/
static void LIBXML_ATTR_FORMAT(2,0)
xmlEntitiesWarn(xmlParserErrors code, const char *msg, const xmlChar *str1)
{
__xmlRaiseError(NULL, NULL, NULL,
NULL, NULL, XML_FROM_TREE, code,
XML_ERR_WARNING, NULL, 0,
(const char *)str1, NULL, NULL, 0, 0,
msg, (const char *)str1, NULL);
}
/* /*
* xmlFreeEntity : clean-up an entity record. * xmlFreeEntity : clean-up an entity record.
*/ */
@ -255,9 +272,9 @@ xmlAddEntity(xmlDtdPtr dtd, const xmlChar *name, int type,
} }
} }
if (!valid) { if (!valid) {
xmlEntitiesErr(XML_ERR_ENTITY_PROCESSING, xmlEntitiesWarn(XML_ERR_ENTITY_PROCESSING,
"xmlAddEntity: invalid redeclaration of predefined" "xmlAddEntity: invalid redeclaration of predefined"
" entity"); " entity '%s'", name);
return(NULL); return(NULL);
} }
} }

View File

@ -0,0 +1,3 @@
<?xml version="1.0"?>
<!DOCTYPE doc>
<doc/>

View File

@ -0,0 +1 @@
warning : xmlAddEntity: invalid redeclaration of predefined entity 'lt'

View File

@ -0,0 +1 @@
warning : xmlAddEntity: invalid redeclaration of predefined entity 'lt'

View File

@ -0,0 +1 @@
warning : xmlAddEntity: invalid redeclaration of predefined entity 'lt'

View File

@ -0,0 +1,4 @@
<!DOCTYPE doc [
<!ENTITY lt '<'>
]>
<doc/>