| Index: third_party/libxml/src/xmlschemas.c
|
| diff --git a/third_party/libxml/src/xmlschemas.c b/third_party/libxml/src/xmlschemas.c
|
| index ee22a6da87d42f5fe5a8f0d9d41ced08a1a459b9..e1b3a4f038649c2d55fcae35a9551e6a38f0dbb0 100644
|
| --- a/third_party/libxml/src/xmlschemas.c
|
| +++ b/third_party/libxml/src/xmlschemas.c
|
| @@ -1085,7 +1085,7 @@ xmlSchemaGetUnionSimpleTypeMemberTypes(xmlSchemaTypePtr type);
|
| static void
|
| xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt,
|
| const char *funcName,
|
| - const char *message);
|
| + const char *message) LIBXML_ATTR_FORMAT(3,0);
|
| static int
|
| xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAbstractCtxtPtr ctxt,
|
| xmlSchemaTypePtr type,
|
| @@ -1769,7 +1769,7 @@ xmlSchemaFormatItemForReport(xmlChar **buf,
|
| }
|
| FREE_AND_NULL(str)
|
|
|
| - return (*buf);
|
| + return (xmlEscapeFormatString(buf));
|
| }
|
|
|
| /**
|
| @@ -1889,7 +1889,7 @@ xmlSchemaPErrMemory(xmlSchemaParserCtxtPtr ctxt,
|
| *
|
| * Handle a parser error
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(4,0)
|
| xmlSchemaPErr(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
|
| const char *msg, const xmlChar * str1, const xmlChar * str2)
|
| {
|
| @@ -1922,7 +1922,7 @@ xmlSchemaPErr(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
|
| *
|
| * Handle a parser error
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaPErr2(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
|
| xmlNodePtr child, int error,
|
| const char *msg, const xmlChar * str1, const xmlChar * str2)
|
| @@ -1951,7 +1951,7 @@ xmlSchemaPErr2(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
|
| *
|
| * Handle a parser error
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(7,0)
|
| xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
|
| const xmlChar * strData1, const xmlChar * strData2,
|
| const xmlChar * strData3, const char *msg, const xmlChar * str1,
|
| @@ -2002,7 +2002,7 @@ xmlSchemaVErrMemory(xmlSchemaValidCtxtPtr ctxt,
|
| extra);
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(2,0)
|
| xmlSchemaPSimpleInternalErr(xmlNodePtr node,
|
| const char *msg, const xmlChar *str)
|
| {
|
| @@ -2013,18 +2013,21 @@ xmlSchemaPSimpleInternalErr(xmlNodePtr node,
|
| #define WXS_ERROR_TYPE_ERROR 1
|
| #define WXS_ERROR_TYPE_WARNING 2
|
| /**
|
| - * xmlSchemaErr3:
|
| + * xmlSchemaErr4Line:
|
| * @ctxt: the validation context
|
| - * @node: the context node
|
| + * @errorLevel: the error level
|
| * @error: the error code
|
| + * @node: the context node
|
| + * @line: the line number
|
| * @msg: the error message
|
| * @str1: extra data
|
| * @str2: extra data
|
| * @str3: extra data
|
| + * @str4: extra data
|
| *
|
| * Handle a validation error
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(6,0)
|
| xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
|
| xmlErrorLevel errorLevel,
|
| int error, xmlNodePtr node, int line, const char *msg,
|
| @@ -2139,7 +2142,7 @@ xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
|
| *
|
| * Handle a validation error
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(4,0)
|
| xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt,
|
| int error, xmlNodePtr node, const char *msg,
|
| const xmlChar *str1, const xmlChar *str2, const xmlChar *str3)
|
| @@ -2148,7 +2151,7 @@ xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt,
|
| msg, str1, str2, str3, NULL);
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(4,0)
|
| xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt,
|
| int error, xmlNodePtr node, const char *msg,
|
| const xmlChar *str1, const xmlChar *str2,
|
| @@ -2158,7 +2161,7 @@ xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt,
|
| msg, str1, str2, str3, str4);
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(4,0)
|
| xmlSchemaErr(xmlSchemaAbstractCtxtPtr actxt,
|
| int error, xmlNodePtr node, const char *msg,
|
| const xmlChar *str1, const xmlChar *str2)
|
| @@ -2181,7 +2184,7 @@ xmlSchemaFormatNodeForError(xmlChar ** msg,
|
| /*
|
| * Don't try to format other nodes than element and
|
| * attribute nodes.
|
| - * Play save and return an empty string.
|
| + * Play safe and return an empty string.
|
| */
|
| *msg = xmlStrdup(BAD_CAST "");
|
| return(*msg);
|
| @@ -2246,6 +2249,13 @@ xmlSchemaFormatNodeForError(xmlChar ** msg,
|
| TODO
|
| return (NULL);
|
| }
|
| +
|
| + /*
|
| + * xmlSchemaFormatItemForReport() also returns an escaped format
|
| + * string, so do this before calling it below (in the future).
|
| + */
|
| + xmlEscapeFormatString(msg);
|
| +
|
| /*
|
| * VAL TODO: The output of the given schema component is currently
|
| * disabled.
|
| @@ -2262,7 +2272,7 @@ xmlSchemaFormatNodeForError(xmlChar ** msg,
|
| return (*msg);
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(3,0)
|
| xmlSchemaInternalErr2(xmlSchemaAbstractCtxtPtr actxt,
|
| const char *funcName,
|
| const char *message,
|
| @@ -2273,24 +2283,21 @@ xmlSchemaInternalErr2(xmlSchemaAbstractCtxtPtr actxt,
|
|
|
| if (actxt == NULL)
|
| return;
|
| - msg = xmlStrdup(BAD_CAST "Internal error: ");
|
| - msg = xmlStrcat(msg, BAD_CAST funcName);
|
| - msg = xmlStrcat(msg, BAD_CAST ", ");
|
| + msg = xmlStrdup(BAD_CAST "Internal error: %s, ");
|
| msg = xmlStrcat(msg, BAD_CAST message);
|
| msg = xmlStrcat(msg, BAD_CAST ".\n");
|
|
|
| if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR)
|
| - xmlSchemaErr(actxt, XML_SCHEMAV_INTERNAL, NULL,
|
| - (const char *) msg, str1, str2);
|
| -
|
| + xmlSchemaErr3(actxt, XML_SCHEMAV_INTERNAL, NULL,
|
| + (const char *) msg, (const xmlChar *) funcName, str1, str2);
|
| else if (actxt->type == XML_SCHEMA_CTXT_PARSER)
|
| - xmlSchemaErr(actxt, XML_SCHEMAP_INTERNAL, NULL,
|
| - (const char *) msg, str1, str2);
|
| + xmlSchemaErr3(actxt, XML_SCHEMAP_INTERNAL, NULL,
|
| + (const char *) msg, (const xmlChar *) funcName, str1, str2);
|
|
|
| FREE_AND_NULL(msg)
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(3,0)
|
| xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt,
|
| const char *funcName,
|
| const char *message)
|
| @@ -2299,7 +2306,7 @@ xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt,
|
| }
|
|
|
| #if 0
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(3,0)
|
| xmlSchemaPInternalErr(xmlSchemaParserCtxtPtr pctxt,
|
| const char *funcName,
|
| const char *message,
|
| @@ -2311,7 +2318,7 @@ xmlSchemaPInternalErr(xmlSchemaParserCtxtPtr pctxt,
|
| }
|
| #endif
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaCustomErr4(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -2336,7 +2343,7 @@ xmlSchemaCustomErr4(xmlSchemaAbstractCtxtPtr actxt,
|
| FREE_AND_NULL(msg)
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaCustomErr(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -2351,7 +2358,7 @@ xmlSchemaCustomErr(xmlSchemaAbstractCtxtPtr actxt,
|
|
|
|
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaCustomWarning(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -2376,7 +2383,7 @@ xmlSchemaCustomWarning(xmlSchemaAbstractCtxtPtr actxt,
|
|
|
|
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaKeyrefErr(xmlSchemaValidCtxtPtr vctxt,
|
| xmlParserErrors error,
|
| xmlSchemaPSVIIDCNodePtr idcNode,
|
| @@ -2476,11 +2483,13 @@ xmlSchemaSimpleTypeErr(xmlSchemaAbstractCtxtPtr actxt,
|
| msg = xmlStrcat(msg, BAD_CAST " '");
|
| if (type->builtInType != 0) {
|
| msg = xmlStrcat(msg, BAD_CAST "xs:");
|
| - msg = xmlStrcat(msg, type->name);
|
| - } else
|
| - msg = xmlStrcat(msg,
|
| - xmlSchemaFormatQName(&str,
|
| - type->targetNamespace, type->name));
|
| + str = xmlStrdup(type->name);
|
| + } else {
|
| + const xmlChar *qName = xmlSchemaFormatQName(&str, type->targetNamespace, type->name);
|
| + if (!str)
|
| + str = xmlStrdup(qName);
|
| + }
|
| + msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
|
| msg = xmlStrcat(msg, BAD_CAST "'");
|
| FREE_AND_NULL(str);
|
| }
|
| @@ -2525,7 +2534,7 @@ xmlSchemaIllegalAttrErr(xmlSchemaAbstractCtxtPtr actxt,
|
| FREE_AND_NULL(msg)
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -2617,7 +2626,7 @@ xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt,
|
| str = xmlStrcat(str, BAD_CAST ", ");
|
| }
|
| str = xmlStrcat(str, BAD_CAST " ).\n");
|
| - msg = xmlStrcat(msg, BAD_CAST str);
|
| + msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
|
| FREE_AND_NULL(str)
|
| } else
|
| msg = xmlStrcat(msg, BAD_CAST "\n");
|
| @@ -2625,7 +2634,7 @@ xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlFree(msg);
|
| }
|
|
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(8,0)
|
| xmlSchemaFacetErr(xmlSchemaAbstractCtxtPtr actxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -2916,7 +2925,7 @@ xmlSchemaPIllegalAttrErr(xmlSchemaParserCtxtPtr ctxt,
|
| *
|
| * Reports an error during parsing.
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaPCustomErrExt(xmlSchemaParserCtxtPtr ctxt,
|
| xmlParserErrors error,
|
| xmlSchemaBasicItemPtr item,
|
| @@ -2952,7 +2961,7 @@ xmlSchemaPCustomErrExt(xmlSchemaParserCtxtPtr ctxt,
|
| *
|
| * Reports an error during parsing.
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(5,0)
|
| xmlSchemaPCustomErr(xmlSchemaParserCtxtPtr ctxt,
|
| xmlParserErrors error,
|
| xmlSchemaBasicItemPtr item,
|
| @@ -2977,7 +2986,7 @@ xmlSchemaPCustomErr(xmlSchemaParserCtxtPtr ctxt,
|
| *
|
| * Reports an attribute use error during parsing.
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(6,0)
|
| xmlSchemaPAttrUseErr4(xmlSchemaParserCtxtPtr ctxt,
|
| xmlParserErrors error,
|
| xmlNodePtr node,
|
| @@ -3099,7 +3108,7 @@ xmlSchemaPMutualExclAttrErr(xmlSchemaParserCtxtPtr ctxt,
|
| * Reports a simple type validation error.
|
| * TODO: Should this report the value of an element as well?
|
| */
|
| -static void
|
| +static void LIBXML_ATTR_FORMAT(8,0)
|
| xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
|
| xmlParserErrors error,
|
| xmlSchemaBasicItemPtr ownerItem ATTRIBUTE_UNUSED,
|
| @@ -3141,11 +3150,13 @@ xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
|
| msg = xmlStrcat(msg, BAD_CAST " '");
|
| if (type->builtInType != 0) {
|
| msg = xmlStrcat(msg, BAD_CAST "xs:");
|
| - msg = xmlStrcat(msg, type->name);
|
| - } else
|
| - msg = xmlStrcat(msg,
|
| - xmlSchemaFormatQName(&str,
|
| - type->targetNamespace, type->name));
|
| + str = xmlStrdup(type->name);
|
| + } else {
|
| + const xmlChar *qName = xmlSchemaFormatQName(&str, type->targetNamespace, type->name);
|
| + if (!str)
|
| + str = xmlStrdup(qName);
|
| + }
|
| + msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
|
| msg = xmlStrcat(msg, BAD_CAST "'.");
|
| FREE_AND_NULL(str);
|
| }
|
| @@ -3158,7 +3169,9 @@ xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
|
| }
|
| if (expected) {
|
| msg = xmlStrcat(msg, BAD_CAST " Expected is '");
|
| - msg = xmlStrcat(msg, BAD_CAST expected);
|
| + xmlChar *expectedEscaped = xmlCharStrdup(expected);
|
| + msg = xmlStrcat(msg, xmlEscapeFormatString(&expectedEscaped));
|
| + FREE_AND_NULL(expectedEscaped);
|
| msg = xmlStrcat(msg, BAD_CAST "'.\n");
|
| } else
|
| msg = xmlStrcat(msg, BAD_CAST "\n");
|
|
|