Skip to content
Snippets Groups Projects
Commit 06eb03ce authored by PeiYong Zhang's avatar PeiYong Zhang
Browse files

Code sharing and Array boundary checking added

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174232 13f79535-47bb-0310-9956-ffa450edef68
parent 022ee52f
No related branches found
No related tags found
No related merge requests found
...@@ -56,8 +56,11 @@ ...@@ -56,8 +56,11 @@
/* /*
* $Log$ * $Log$
* Revision 1.1 2002/02/01 22:22:21 peiyongz * Revision 1.2 2002/09/23 22:14:37 peiyongz
* Initial revision * Code sharing and Array boundary checking added
*
* Revision 1.1.1.1 2002/02/01 22:22:21 peiyongz
* sane_include
* *
* Revision 1.5 2000/03/28 19:43:21 roddey * Revision 1.5 2000/03/28 19:43:21 roddey
* Fixes for signed/unsigned warnings. New work for two way transcoding * Fixes for signed/unsigned warnings. New work for two way transcoding
...@@ -100,18 +103,17 @@ ...@@ -100,18 +103,17 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Public Constructors and Destructor // Public Constructors and Destructor
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
InMemMsgLoader::InMemMsgLoader(const XMLCh* const msgDomain) : InMemMsgLoader::InMemMsgLoader(const XMLCh* const msgDomain)
:fMsgDomain(0)
fMsgDomain(0)
{ {
fMsgDomain = XMLString::replicate(msgDomain); if (XMLString::compareString(msgDomain, XMLUni::fgXMLErrDomain)
&& XMLString::compareString(msgDomain, XMLUni::fgExceptDomain)
if (XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain) && XMLString::compareString(msgDomain, XMLUni::fgValidityDomain))
&& XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain)
&& XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain))
{ {
XMLPlatformUtils::panic(XMLPlatformUtils::Panic_UnknownMsgDomain); XMLPlatformUtils::panic(XMLPlatformUtils::Panic_UnknownMsgDomain);
} }
fMsgDomain = XMLString::replicate(msgDomain);
} }
InMemMsgLoader::~InMemMsgLoader() InMemMsgLoader::~InMemMsgLoader()
...@@ -136,38 +138,37 @@ bool InMemMsgLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad ...@@ -136,38 +138,37 @@ bool InMemMsgLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad
// //
XMLCh* endPtr = toFill + maxChars; XMLCh* endPtr = toFill + maxChars;
XMLCh* outPtr = toFill; XMLCh* outPtr = toFill;
const XMLCh* srcPtr = 0;
if (!XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain)) if (!XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain))
{ {
const XMLCh* srcPtr = gXMLErrArray[msgToLoad - 1]; if ( msgToLoad > gXMLErrArraySize)
while (*srcPtr && (outPtr < endPtr)) return false;
{ else
*outPtr++ = *srcPtr++; srcPtr = gXMLErrArray[msgToLoad - 1];
}
*outPtr = 0;
} }
else if (!XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain)) else if (!XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain))
{ {
const XMLCh* srcPtr = gXMLExceptArray[msgToLoad - 1]; if ( msgToLoad > gXMLExceptArraySize)
while (*srcPtr && (outPtr < endPtr)) return false;
{ else
*outPtr++ = *srcPtr++; srcPtr = gXMLExceptArray[msgToLoad - 1];
}
*outPtr = 0;
} }
else if (!XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain)) else if (!XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain))
{ {
const XMLCh* srcPtr = gXMLValidityArray[msgToLoad - 1]; if ( msgToLoad > gXMLValidityArraySize)
while (*srcPtr && (outPtr < endPtr)) return false;
{ else
*outPtr++ = *srcPtr++; srcPtr = gXMLValidityArray[msgToLoad - 1];
}
*outPtr = 0;
} }
else
{ while (*srcPtr && (outPtr < endPtr))
return false; {
} *outPtr++ = *srcPtr++;
return true; }
*outPtr = 0;
return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment