From cf0a60f13f10da4f73a364841e899f4eac8f5fb9 Mon Sep 17 00:00:00 2001 From: Tinny Ng <tng@apache.org> Date: Fri, 27 Sep 2002 19:18:40 +0000 Subject: [PATCH] DOM L3 fix: check null string first before assigning baseURI git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174255 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/dom/impl/DOMDocumentImpl.cpp | 10 +++++++--- src/xercesc/dom/impl/DOMEntityImpl.cpp | 10 +++++++--- src/xercesc/dom/impl/DOMNotationImpl.cpp | 10 +++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/xercesc/dom/impl/DOMDocumentImpl.cpp b/src/xercesc/dom/impl/DOMDocumentImpl.cpp index 7bb87e5bd..cd265113b 100644 --- a/src/xercesc/dom/impl/DOMDocumentImpl.cpp +++ b/src/xercesc/dom/impl/DOMDocumentImpl.cpp @@ -903,9 +903,13 @@ const XMLCh* DOMDocumentImpl::getDocumentURI() const } void DOMDocumentImpl::setDocumentURI(const XMLCh* documentURI){ - XMLCh* temp = (XMLCh*) this->allocate((XMLString::stringLen(documentURI) + 9)*sizeof(XMLCh)); - XMLString::fixURI(documentURI, temp); - fDocumentURI = temp; + if (documentURI && *documentURI) { + XMLCh* temp = (XMLCh*) this->allocate((XMLString::stringLen(documentURI) + 9)*sizeof(XMLCh)); + XMLString::fixURI(documentURI, temp); + fDocumentURI = temp; + } + else + fDocumentURI = 0; } bool DOMDocumentImpl::getStrictErrorChecking() const { diff --git a/src/xercesc/dom/impl/DOMEntityImpl.cpp b/src/xercesc/dom/impl/DOMEntityImpl.cpp index 53780306d..9774b30b4 100644 --- a/src/xercesc/dom/impl/DOMEntityImpl.cpp +++ b/src/xercesc/dom/impl/DOMEntityImpl.cpp @@ -176,9 +176,13 @@ void DOMEntityImpl::setSystemId(const XMLCh *arg) void DOMEntityImpl::setBaseURI(const XMLCh* baseURI) { - XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); - XMLString::fixURI(baseURI, temp); - fBaseURI = temp; + if (baseURI && *baseURI) { + XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); + XMLString::fixURI(baseURI, temp); + fBaseURI = temp; + } + else + fBaseURI = 0; } diff --git a/src/xercesc/dom/impl/DOMNotationImpl.cpp b/src/xercesc/dom/impl/DOMNotationImpl.cpp index e42943b2d..01504311e 100644 --- a/src/xercesc/dom/impl/DOMNotationImpl.cpp +++ b/src/xercesc/dom/impl/DOMNotationImpl.cpp @@ -161,9 +161,13 @@ void DOMNotationImpl::release() } void DOMNotationImpl::setBaseURI(const XMLCh* baseURI) { - XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); - XMLString::fixURI(baseURI, temp); - fBaseURI = temp; + if (baseURI && *baseURI) { + XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); + XMLString::fixURI(baseURI, temp); + fBaseURI = temp; + } + else + fBaseURI = 0; } const XMLCh* DOMNotationImpl::getBaseURI() const -- GitLab