From 0ecc411be3e99e9f8f4319b3fa005bdd60618ae4eca6ae35787ff20bdd013255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Fri, 13 Apr 2012 20:25:20 +0000 Subject: [PATCH] Accepting request 113448 from home:behrisch update to most recent version OBS-URL: https://build.opensuse.org/request/show/113448 OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/xerces-c?expand=0&rev=11 --- xerces-c-3.0.1-CVE-2009-1885.patch | 648 ----------------------------- xerces-c-3.0.1-include.patch | 10 - xerces-c-3.0.1.tar.bz2 | 3 - xerces-c-3.1.1.tar.gz | 3 + xerces-c.changes | 19 + xerces-c.spec | 22 +- 6 files changed, 31 insertions(+), 674 deletions(-) delete mode 100644 xerces-c-3.0.1-CVE-2009-1885.patch delete mode 100644 xerces-c-3.0.1-include.patch delete mode 100644 xerces-c-3.0.1.tar.bz2 create mode 100644 xerces-c-3.1.1.tar.gz diff --git a/xerces-c-3.0.1-CVE-2009-1885.patch b/xerces-c-3.0.1-CVE-2009-1885.patch deleted file mode 100644 index 9ac4f0e..0000000 --- a/xerces-c-3.0.1-CVE-2009-1885.patch +++ /dev/null @@ -1,648 +0,0 @@ ---- src/xercesc/validators/DTD/DTDScanner.cpp -+++ src/xercesc/validators/DTD/DTDScanner.cpp -@@ -27,7 +27,9 @@ - #include - #include - #include -+#include - #include -+#include - #include - #include - #include -@@ -39,7 +41,6 @@ - #include - #include - #include --#include - - XERCES_CPP_NAMESPACE_BEGIN - -@@ -1041,338 +1042,354 @@ - // Check for a PE ref here, but don't require spaces - checkForPERef(false, true); - -- // We have to check entity nesting here -- XMLSize_t curReader; -- -+ ValueStackOf* arrNestedDecl=NULL; - // - // We know that the caller just saw an opening parenthesis, so we need -- // to parse until we hit the end of it, recursing for other nested -- // parentheses we see. -+ // to parse until we hit the end of it; if we find several parenthesis, -+ // store them in an array to be processed later. - // - // We have to check for one up front, since it could be something like - // (((a)*)) etc... - // - ContentSpecNode* curNode = 0; -- if (fReaderMgr->skippedChar(chOpenParen)) -+ while(fReaderMgr->skippedChar(chOpenParen)) - { -- curReader = fReaderMgr->getCurrentReaderNum(); -+ // to check entity nesting -+ const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); -+ if(arrNestedDecl==NULL) -+ arrNestedDecl=new (fMemoryManager) ValueStackOf(5, fMemoryManager); -+ arrNestedDecl->push(curReader); - -- // Lets call ourself and get back the resulting node -- curNode = scanChildren(elemDecl, bufToUse); -+ // Check for a PE ref here, but don't require spaces -+ checkForPERef(false, true); -+ } - -- // If that failed, no need to go further, return failure -- if (!curNode) -- return 0; -+ // We must find a leaf node here, either standalone or nested in the parenthesis -+ if (!fReaderMgr->getName(bufToUse)) -+ { -+ fScanner->emitError(XMLErrs::ExpectedElementName); -+ return 0; -+ } -+ -+ // -+ // Create a leaf node for it. If we can find the element id for -+ // this element, then use it. Else, we have to fault in an element -+ // decl, marked as created because of being in a content model. -+ // -+ XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); -+ if (!decl) -+ { -+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl -+ ( -+ bufToUse.getRawBuffer() -+ , fEmptyNamespaceId -+ , DTDElementDecl::Any -+ , fGrammarPoolMemoryManager -+ ); -+ decl->setCreateReason(XMLElementDecl::InContentModel); -+ decl->setExternalElemDeclaration(isReadingExternalEntity()); -+ fDTDGrammar->putElemDecl(decl); -+ } -+ curNode = new (fGrammarPoolMemoryManager) ContentSpecNode -+ ( -+ decl->getElementName() -+ , fGrammarPoolMemoryManager -+ ); -+ -+ // Check for a PE ref here, but don't require spaces -+ const bool gotSpaces = checkForPERef(false, true); - -- if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) -- fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); -+ // Check for a repetition character after the leaf -+ XMLCh repCh = fReaderMgr->peekNextChar(); -+ ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fGrammarPoolMemoryManager); -+ if (tmpNode != curNode) -+ { -+ if (gotSpaces) -+ { -+ if (fScanner->emitErrorWillThrowException(XMLErrs::UnexpectedWhitespace)) -+ { -+ delete tmpNode; -+ } -+ fScanner->emitError(XMLErrs::UnexpectedWhitespace); -+ } -+ fReaderMgr->getNextChar(); -+ curNode = tmpNode; - } -- else -+ -+ while(arrNestedDecl==NULL || !arrNestedDecl->empty()) - { -- // Not a nested paren, so it must be a leaf node -- if (!fReaderMgr->getName(bufToUse)) -+ // Check for a PE ref here, but don't require spaces -+ checkForPERef(false, true); -+ -+ // -+ // Ok, the next character tells us what kind of content this particular -+ // model this particular parentesized section is. Its either a choice if -+ // we see ',', a sequence if we see '|', or a single leaf node if we see -+ // a closing paren. -+ // -+ const XMLCh opCh = fReaderMgr->peekNextChar(); -+ -+ if ((opCh != chComma) -+ && (opCh != chPipe) -+ && (opCh != chCloseParen)) - { -- fScanner->emitError(XMLErrs::ExpectedElementName); -+ // Not a legal char, so delete our node and return failure -+ delete curNode; -+ fScanner->emitError(XMLErrs::ExpectedSeqChoiceLeaf); - return 0; - } - - // -- // Create a leaf node for it. If we can find the element id for -- // this element, then use it. Else, we have to fault in an element -- // decl, marked as created because of being in a content model. -+ // Create the head node of the correct type. We need this to remember -+ // the top of the local tree. If it was a single subexpr, then just -+ // set the head node to the current node. For the others, we'll build -+ // the tree off the second child as we move across. - // -- XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); -- if (!decl) -+ ContentSpecNode* headNode = 0; -+ ContentSpecNode::NodeTypes curType = ContentSpecNode::UnknownType; -+ if (opCh == chComma) - { -- decl = new (fGrammarPoolMemoryManager) DTDElementDecl -+ curType = ContentSpecNode::Sequence; -+ headNode = new (fGrammarPoolMemoryManager) ContentSpecNode - ( -- bufToUse.getRawBuffer() -- , fEmptyNamespaceId -- , DTDElementDecl::Any -+ curType -+ , curNode -+ , 0 -+ , true -+ , true - , fGrammarPoolMemoryManager - ); -- decl->setCreateReason(XMLElementDecl::InContentModel); -- decl->setExternalElemDeclaration(isReadingExternalEntity()); -- fDTDGrammar->putElemDecl(decl); -+ curNode = headNode; - } -- curNode = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- decl->getElementName() -- , fGrammarPoolMemoryManager -- ); -- -- // Check for a PE ref here, but don't require spaces -- const bool gotSpaces = checkForPERef(false, true); -- -- // Check for a repetition character after the leaf -- const XMLCh repCh = fReaderMgr->peekNextChar(); -- ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fGrammarPoolMemoryManager); -- if (tmpNode != curNode) -+ else if (opCh == chPipe) - { -- if (gotSpaces) -- { -- if (fScanner->emitErrorWillThrowException(XMLErrs::UnexpectedWhitespace)) -- { -- delete tmpNode; -- } -- fScanner->emitError(XMLErrs::UnexpectedWhitespace); -- } -+ curType = ContentSpecNode::Choice; -+ headNode = new (fGrammarPoolMemoryManager) ContentSpecNode -+ ( -+ curType -+ , curNode -+ , 0 -+ , true -+ , true -+ , fGrammarPoolMemoryManager -+ ); -+ curNode = headNode; -+ } -+ else -+ { -+ headNode = curNode; - fReaderMgr->getNextChar(); -- curNode = tmpNode; - } -- } -- -- // Check for a PE ref here, but don't require spaces -- checkForPERef(false, true); -- -- // -- // Ok, the next character tells us what kind of content this particular -- // model this particular parentesized section is. Its either a choice if -- // we see ',', a sequence if we see '|', or a single leaf node if we see -- // a closing paren. -- // -- const XMLCh opCh = fReaderMgr->peekNextChar(); -- -- if ((opCh != chComma) -- && (opCh != chPipe) -- && (opCh != chCloseParen)) -- { -- // Not a legal char, so delete our node and return failure -- delete curNode; -- fScanner->emitError(XMLErrs::ExpectedSeqChoiceLeaf); -- return 0; -- } -- -- // -- // Create the head node of the correct type. We need this to remember -- // the top of the local tree. If it was a single subexpr, then just -- // set the head node to the current node. For the others, we'll build -- // the tree off the second child as we move across. -- // -- ContentSpecNode* headNode = 0; -- ContentSpecNode::NodeTypes curType = ContentSpecNode::UnknownType; -- if (opCh == chComma) -- { -- curType = ContentSpecNode::Sequence; -- headNode = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- curType -- , curNode -- , 0 -- , true -- , true -- , fGrammarPoolMemoryManager -- ); -- curNode = headNode; -- } -- else if (opCh == chPipe) -- { -- curType = ContentSpecNode::Choice; -- headNode = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- curType -- , curNode -- , 0 -- , true -- , true -- , fGrammarPoolMemoryManager -- ); -- curNode = headNode; -- } -- else -- { -- headNode = curNode; -- fReaderMgr->getNextChar(); -- } - -- // -- // If it was a sequence or choice, we just loop until we get to the -- // end of our section, adding each new leaf or sub expression to the -- // right child of the current node, and making that new node the current -- // node. -- // -- if ((opCh == chComma) || (opCh == chPipe)) -- { -- ContentSpecNode* lastNode = 0; -- while (true) -+ // -+ // If it was a sequence or choice, we just loop until we get to the -+ // end of our section, adding each new leaf or sub expression to the -+ // right child of the current node, and making that new node the current -+ // node. -+ // -+ if ((opCh == chComma) || (opCh == chPipe)) - { -- // -- // The next thing must either be another | or , character followed -- // by another leaf or subexpression, or a closing parenthesis, or a -- // PE ref. -- // -- if (fReaderMgr->lookingAtChar(chPercent)) -- { -- checkForPERef(false, true); -- } -- else if (fReaderMgr->skippedSpace()) -- { -- // Just skip whitespace -- fReaderMgr->skipPastSpaces(); -- } -- else if (fReaderMgr->skippedChar(chCloseParen)) -+ ContentSpecNode* lastNode = 0; -+ while (true) - { - // -- // We've hit the end of this section, so break out. But, we -- // need to see if we left a partial sequence of choice node -- // without a second node. If so, we have to undo that and -- // put its left child into the right node of the previous -- // node. -+ // The next thing must either be another | or , character followed -+ // by another leaf or subexpression, or a closing parenthesis, or a -+ // PE ref. - // -- if ((curNode->getType() == ContentSpecNode::Choice) -- || (curNode->getType() == ContentSpecNode::Sequence)) -+ if (fReaderMgr->lookingAtChar(chPercent)) -+ { -+ checkForPERef(false, true); -+ } -+ else if (fReaderMgr->skippedSpace()) -+ { -+ // Just skip whitespace -+ fReaderMgr->skipPastSpaces(); -+ } -+ else if (fReaderMgr->skippedChar(chCloseParen)) - { -- if (!curNode->getSecond()) -+ // -+ // We've hit the end of this section, so break out. But, we -+ // need to see if we left a partial sequence of choice node -+ // without a second node. If so, we have to undo that and -+ // put its left child into the right node of the previous -+ // node. -+ // -+ if ((curNode->getType() == ContentSpecNode::Choice) -+ || (curNode->getType() == ContentSpecNode::Sequence)) - { -- ContentSpecNode* saveFirst = curNode->orphanFirst(); -- lastNode->setSecond(saveFirst); -- curNode = lastNode; -+ if (!curNode->getSecond()) -+ { -+ ContentSpecNode* saveFirst = curNode->orphanFirst(); -+ lastNode->setSecond(saveFirst); -+ curNode = lastNode; -+ } - } -+ break; - } -- break; -- } -- else if (fReaderMgr->skippedChar(opCh)) -- { -- // Check for a PE ref here, but don't require spaces -- checkForPERef(false, true); -- -- if (fReaderMgr->skippedChar(chOpenParen)) -+ else if (fReaderMgr->skippedChar(opCh)) - { -- curReader = fReaderMgr->getCurrentReaderNum(); -+ // Check for a PE ref here, but don't require spaces -+ checkForPERef(false, true); - -- // Recurse to handle this new guy -- ContentSpecNode* subNode; -- try { -- subNode = scanChildren(elemDecl, bufToUse); -- } -- catch (const XMLErrs::Codes) -+ if (fReaderMgr->skippedChar(chOpenParen)) - { -- delete headNode; -- throw; -- } -+ const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); - -- // If it failed, we are done, clean up here and return failure -- if (!subNode) -- { -- delete headNode; -- return 0; -+ // Recurse to handle this new guy -+ ContentSpecNode* subNode; -+ try { -+ subNode = scanChildren(elemDecl, bufToUse); -+ } -+ catch (const XMLErrs::Codes) -+ { -+ delete headNode; -+ throw; -+ } -+ -+ // If it failed, we are done, clean up here and return failure -+ if (!subNode) -+ { -+ delete headNode; -+ return 0; -+ } -+ -+ if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) -+ fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); -+ -+ // Else patch it in and make it the new current -+ ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode -+ ( -+ curType -+ , subNode -+ , 0 -+ , true -+ , true -+ , fGrammarPoolMemoryManager -+ ); -+ curNode->setSecond(newCur); -+ lastNode = curNode; -+ curNode = newCur; - } -+ else -+ { -+ // -+ // Got to be a leaf node, so get a name. If we cannot get -+ // one, then clean up and get outa here. -+ // -+ if (!fReaderMgr->getName(bufToUse)) -+ { -+ delete headNode; -+ fScanner->emitError(XMLErrs::ExpectedElementName); -+ return 0; -+ } -+ -+ // -+ // Create a leaf node for it. If we can find the element -+ // id for this element, then use it. Else, we have to -+ // fault in an element decl, marked as created because -+ // of being in a content model. -+ // -+ XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); -+ if (!decl) -+ { -+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl -+ ( -+ bufToUse.getRawBuffer() -+ , fEmptyNamespaceId -+ , DTDElementDecl::Any -+ , fGrammarPoolMemoryManager -+ ); -+ decl->setCreateReason(XMLElementDecl::InContentModel); -+ decl->setExternalElemDeclaration(isReadingExternalEntity()); -+ fDTDGrammar->putElemDecl(decl); -+ } - -- if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) -- fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); -+ ContentSpecNode* tmpLeaf = new (fGrammarPoolMemoryManager) ContentSpecNode -+ ( -+ decl->getElementName() -+ , fGrammarPoolMemoryManager -+ ); - -- // Else patch it in and make it the new current -- ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- curType -- , subNode -- , 0 -- , true -- , true -- , fGrammarPoolMemoryManager -- ); -- curNode->setSecond(newCur); -- lastNode = curNode; -- curNode = newCur; -+ // Check for a repetition character after the leaf -+ const XMLCh repCh = fReaderMgr->peekNextChar(); -+ ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fGrammarPoolMemoryManager); -+ if (tmpLeaf != tmpLeaf2) -+ fReaderMgr->getNextChar(); -+ -+ // -+ // Create a new sequence or choice node, with the leaf -+ // (or rep surrounding it) we just got as its first node. -+ // Make the new node the second node of the current node, -+ // and then make it the current node. -+ // -+ ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode -+ ( -+ curType -+ , tmpLeaf2 -+ , 0 -+ , true -+ , true -+ , fGrammarPoolMemoryManager -+ ); -+ curNode->setSecond(newCur); -+ lastNode = curNode; -+ curNode = newCur; -+ } - } - else - { -- // -- // Got to be a leaf node, so get a name. If we cannot get -- // one, then clean up and get outa here. -- // -- if (!fReaderMgr->getName(bufToUse)) -+ // Cannot be valid -+ delete headNode; // emitError may do a throw so need to clean-up first -+ if (opCh == chComma) - { -- delete headNode; -- fScanner->emitError(XMLErrs::ExpectedElementName); -- return 0; -+ fScanner->emitError(XMLErrs::ExpectedChoiceOrCloseParen); - } -- -- // -- // Create a leaf node for it. If we can find the element -- // id for this element, then use it. Else, we have to -- // fault in an element decl, marked as created because -- // of being in a content model. -- // -- XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); -- if (!decl) -+ else - { -- decl = new (fGrammarPoolMemoryManager) DTDElementDecl -+ fScanner->emitError - ( -- bufToUse.getRawBuffer() -- , fEmptyNamespaceId -- , DTDElementDecl::Any -- , fGrammarPoolMemoryManager -+ XMLErrs::ExpectedSeqOrCloseParen -+ , elemDecl.getFullName() - ); -- decl->setCreateReason(XMLElementDecl::InContentModel); -- decl->setExternalElemDeclaration(isReadingExternalEntity()); -- fDTDGrammar->putElemDecl(decl); -- } -+ } -+ return 0; -+ } -+ } -+ } - -- ContentSpecNode* tmpLeaf = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- decl->getElementName() -- , fGrammarPoolMemoryManager -- ); -+ // -+ // We saw the terminating parenthesis so lets check for any repetition -+ // character, and create a node for that, making the head node the child -+ // of it. -+ // -+ const XMLCh repCh = fReaderMgr->peekNextChar(); -+ curNode = makeRepNode(repCh, headNode, fGrammarPoolMemoryManager); -+ if (curNode != headNode) -+ fReaderMgr->getNextChar(); -+ -+ // prepare for recursion -+ if(arrNestedDecl==NULL) -+ break; -+ else -+ { -+ // If that failed, no need to go further, return failure -+ if (!curNode) -+ return 0; - -- // Check for a repetition character after the leaf -- const XMLCh repCh = fReaderMgr->peekNextChar(); -- ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fGrammarPoolMemoryManager); -- if (tmpLeaf != tmpLeaf2) -- fReaderMgr->getNextChar(); -+ const XMLSize_t curReader = arrNestedDecl->pop(); -+ if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) -+ fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); - -- // -- // Create a new sequence or choice node, with the leaf -- // (or rep surrounding it) we just got as its first node. -- // Make the new node the second node of the current node, -- // and then make it the current node. -- // -- ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode -- ( -- curType -- , tmpLeaf2 -- , 0 -- , true -- , true -- , fGrammarPoolMemoryManager -- ); -- curNode->setSecond(newCur); -- lastNode = curNode; -- curNode = newCur; -- } -- } -- else -+ if(arrNestedDecl->empty()) - { -- // Cannot be valid -- delete headNode; // emitError may do a throw so need to clean-up first -- if (opCh == chComma) -- { -- fScanner->emitError(XMLErrs::ExpectedChoiceOrCloseParen); -- } -- else -- { -- fScanner->emitError -- ( -- XMLErrs::ExpectedSeqOrCloseParen -- , elemDecl.getFullName() -- ); -- } -- return 0; -+ delete arrNestedDecl; -+ arrNestedDecl=NULL; - } - } - } - -- // -- // We saw the terminating parenthesis so lets check for any repetition -- // character, and create a node for that, making the head node the child -- // of it. -- // -- XMLCh repCh = fReaderMgr->peekNextChar(); -- ContentSpecNode* retNode = makeRepNode(repCh, headNode, fGrammarPoolMemoryManager); -- if (retNode != headNode) -- fReaderMgr->getNextChar(); -- -- return retNode; -+ return curNode; - } - - diff --git a/xerces-c-3.0.1-include.patch b/xerces-c-3.0.1-include.patch deleted file mode 100644 index b33d041..0000000 --- a/xerces-c-3.0.1-include.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- src/xercesc/util/RefArrayOf.c -+++ src/xercesc/util/RefArrayOf.c -@@ -25,6 +25,7 @@ - #if defined(XERCES_TMPLSINC) - #include - #endif -+#include - - XERCES_CPP_NAMESPACE_BEGIN - diff --git a/xerces-c-3.0.1.tar.bz2 b/xerces-c-3.0.1.tar.bz2 deleted file mode 100644 index ecff08e..0000000 --- a/xerces-c-3.0.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a36a9030e93adb080dd6c44815d0dda84eadf3ada3e94efaa3e0661272b42932 -size 3252799 diff --git a/xerces-c-3.1.1.tar.gz b/xerces-c-3.1.1.tar.gz new file mode 100644 index 0000000..e2dc7bb --- /dev/null +++ b/xerces-c-3.1.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a42785f71e0b91d5fd273831c87410ce60a73ccfdd207de1b805d26d44968736 +size 5051308 diff --git a/xerces-c.changes b/xerces-c.changes index c0f2efd..b9e4f25 100644 --- a/xerces-c.changes +++ b/xerces-c.changes @@ -1,3 +1,22 @@ +------------------------------------------------------------------- +Fri Apr 13 17:58:48 UTC 2012 - behrisch@users.sourceforge.net + +- updated to 3.1.1 + * Check that we have non-NULL host before trying to connect (XERCESC-1920). + * Recover from the mismatching start/end even count which may happen when we continue parsing an invalid document (XERCESC-1919). + * If the transcoder doesn't process any input, throw an exception (XERCESC-1916). +  * Delay the recursive expansion of includes until the document fragment has been placed in the final location (XERCESC-1918). + * The code formatting a content model was skipping the cardinality indicators (*, +, ?) (XERCESC-1914). + * Fix a few bugs and memory leaks in XInclude code. + * Give proper name to 64-bit PDB file in static build (XERCESC-1907). + * Spelling fixes (XERCESC-1911). + * Don't include cpuid.h if we are using intrin.h (XERCESC-1912). + * Fix socket leak. + * Set scanner object on validation context. Needed during QName validation. Don't re-validate default/fixed values in preContentValidation when called from loadGrammar. This values are already validated in TraverseSchema. + * Remove explicit setting of prefix for cloned elements and attributes since it is done properly by the create*() functions (XERCESC-1913). + * Initializing unitialized variables in TranscodeToStr and TranscodeFromStr (#XERCESC-1858). + * Fixed a bug when transcoding small strings using TranscodeToStr (XERCESC-1858). + ------------------------------------------------------------------- Sat Jan 28 22:15:56 UTC 2012 - jengelh@medozas.de diff --git a/xerces-c.spec b/xerces-c.spec index 99d4645..590a81d 100644 --- a/xerces-c.spec +++ b/xerces-c.spec @@ -21,13 +21,11 @@ Name: xerces-c BuildRequires: gcc-c++ libicu-devel pkgconfig License: Apache-2.0 Group: Productivity/Publishing/XML -Version: 3.0.1 +Version: 3.1.1 Release: 4 Summary: A Validating XML Parser Url: http://xerces.apache.org/xerces-c/ -Source: xerces-c-%{version}.tar.bz2 -Patch0: %{name}-3.0.1-include.patch -Patch1: %{name}-3.0.1-CVE-2009-1885.patch +Source: xerces-c-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -38,13 +36,13 @@ generating, manipulating, and validating XML documents. Xerces-C is faithful to the XML 1.0 recommendation and associated standards ( DOM 1.0, DOM 2.0. SAX 1.0, SAX 2.0, Namespaces). -%package -n libxerces-c-3_0 +%package -n libxerces-c-3_1 Group: Productivity/Publishing/XML Summary: Shared libraries for Xerces-c - a validating XML parser Provides: Xerces-c = %{version} Obsoletes: Xerces-c <= %{version} -%description -n libxerces-c-3_0 +%description -n libxerces-c-3_1 Xerces-C is a validating XML parser written in a portable subset of C++. Xerces-C makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, @@ -55,7 +53,7 @@ faithful to the XML 1.0 recommendation and associated standards ( DOM This package contains just the shared libraries. %package -n libxerces-c-devel -Requires: libxerces-c-3_0 = %{version} +Requires: libxerces-c-3_1 = %{version} Provides: Xerces-c-devel = %{version} Obsoletes: Xerces-c-devel <= %{version} Provides: libXerces-c-devel = %{version} @@ -73,8 +71,6 @@ This package includes files needed for development with Xerces-c %prep %setup -q -n xerces-c-%{version} -%patch0 -%patch1 %build %configure \ @@ -85,18 +81,18 @@ make %{?_smp_mflags} make DESTDIR=$RPM_BUILD_ROOT install rm -f $RPM_BUILD_ROOT%{_libdir}/*.la -%post -n libxerces-c-3_0 -p /sbin/ldconfig +%post -n libxerces-c-3_1 -p /sbin/ldconfig -%postun -n libxerces-c-3_0 -p /sbin/ldconfig +%postun -n libxerces-c-3_1 -p /sbin/ldconfig %files %defattr(-,root,root) %doc CREDITS KEYS LICENSE NOTICE README doc/* %{_bindir}/* -%files -n libxerces-c-3_0 +%files -n libxerces-c-3_1 %defattr(-,root,root) -%{_libdir}/libxerces-c-3.0.so +%{_libdir}/libxerces-c-3.1.so %files -n libxerces-c-devel %defattr(-,root,root)