From e5a45aa56fdb0c7de880345d67e6065bcacff8c0 Mon Sep 17 00:00:00 2001
From: Khaled Noaman <knoaman@apache.org>
Date: Wed, 15 Jan 2003 19:24:16 +0000
Subject: [PATCH] Check the value of the 'namespace' attribute of wildcards to
 be valid anyURI.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174630 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/validators/schema/TraverseSchema.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 2fa76d5d3..0347fa776 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -1689,6 +1689,7 @@ TraverseSchema::traverseAny(const DOMElement* const elem) {
         ContentSpecNode* firstNode = 0;
         ContentSpecNode* secondNode = 0;
         unsigned int tokensSize = nameSpaceTokens->size();
+        DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI);
 
         for (unsigned int i=0; i < tokensSize; i++) {
 
@@ -1701,6 +1702,12 @@ TraverseSchema::traverseAny(const DOMElement* const elem) {
                     uriIndex = fTargetNSURI;
                 }
                 else {
+                    try {
+                        anyURIDV->validate(tokenElem);
+                    }
+                    catch(const XMLException& excep) {
+                        reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage());
+                    }
                     uriIndex = fURIStringPool->addOrFind(tokenElem);
                 }
             }
@@ -3678,6 +3685,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem)
     else {
 
         XMLStringTokenizer tokenizer(nameSpace);
+        DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI);
 
         attType = XMLAttDef::Any_List;
 
@@ -3692,6 +3700,13 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem)
                 uriIndex = fTargetNSURI;
             }
             else {
+
+                try {
+                    anyURIDV->validate(token);
+                }
+                catch(const XMLException& excep) {
+                    reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage());
+                }
                 uriIndex = fURIStringPool->addOrFind(token);
             }
 
-- 
GitLab