From e2d4cda076b7d6c6a5b98f52c05eb1b55e3095ea Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Fri, 14 Mar 2008 11:33:27 +0000 Subject: [PATCH] If the XPath parser returns 'false', it means the XPath is invalid... (XERCESC-1787) git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@637064 13f79535-47bb-0310-9956-ffa450edef68 --- .../schema/identity/XercesXPath.cpp | 4 +++- .../regression/XERCESC-1787/schema.xsd | 20 +++++++++++++++++++ .../src/XSTSHarness/regression/Xerces.testSet | 11 ++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd diff --git a/src/xercesc/validators/schema/identity/XercesXPath.cpp b/src/xercesc/validators/schema/identity/XercesXPath.cpp index b7c301fab..ebd2002e9 100644 --- a/src/xercesc/validators/schema/identity/XercesXPath.cpp +++ b/src/xercesc/validators/schema/identity/XercesXPath.cpp @@ -390,7 +390,9 @@ void XercesXPath::parseExpression(XMLStringPool* const stringPool, ValueVectorOf<int> tokens(16, fMemoryManager); XPathScannerForSchema scanner(stringPool); - scanner.scanExpression(fExpression, 0, length, &tokens); + if(!scanner.scanExpression(fExpression, 0, length, &tokens)) + ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_TokenNotSupported, fMemoryManager); + bool firstTokenOfLocationPath=true; unsigned int tokenCount = tokens.size(); RefVectorOf<XercesStep>* stepsVector = new (fMemoryManager) RefVectorOf<XercesStep>(16, true, fMemoryManager); diff --git a/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd b/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd new file mode 100644 index 000000000..7a7bf8f65 --- /dev/null +++ b/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd @@ -0,0 +1,20 @@ +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> + +<xs:element name="Songs"> + <xs:complexType> + <xs:sequence> + <xs:element name="Song" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="title" use="required"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + + <xs:unique name="Song"> + <xs:selector xpath="*:Song"/> + <xs:field xpath="@title"/> + </xs:unique> +</xs:element> + +</xs:schema> \ No newline at end of file diff --git a/tests/src/XSTSHarness/regression/Xerces.testSet b/tests/src/XSTSHarness/regression/Xerces.testSet index 3555e4295..106e5fafd 100644 --- a/tests/src/XSTSHarness/regression/Xerces.testSet +++ b/tests/src/XSTSHarness/regression/Xerces.testSet @@ -419,4 +419,15 @@ <current status="accepted" date="2008-02-13"/> </schemaTest> </testGroup> + <testGroup name="XERCESC-1787"> + <annotation> + <documentation>Wildcard namespace prefixes in XPath are not reported as errors</documentation> + </annotation> + <documentationReference xlink:href="https://issues.apache.org/jira/browse/XERCESC-1787"/> + <schemaTest name="XERCESC-1787"> + <schemaDocument xlink:href="./XERCESC-1787/schema.xsd"/> + <expected validity="invalid"/> + <current status="accepted" date="2008-03-14"/> + </schemaTest> + </testGroup> </testSet> \ No newline at end of file -- GitLab