peiyongz 2002/09/23 15:14:37
Modified: c/src/xercesc/util/MsgLoaders/InMemory InMemMsgLoader.cpp
Log:
Code sharing and Array boundary checking added
Revision Changes Path
1.2 +32 -31
xml-xerces/c/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
Index: InMemMsgLoader.cpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InMemMsgLoader.cpp 1 Feb 2002 22:22:21 -0000 1.1
+++ InMemMsgLoader.cpp 23 Sep 2002 22:14:37 -0000 1.2
@@ -56,8 +56,11 @@
/*
* $Log$
- * Revision 1.1 2002/02/01 22:22:21 peiyongz
- * Initial revision
+ * Revision 1.2 2002/09/23 22:14:37 peiyongz
+ * 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
* Fixes for signed/unsigned warnings. New work for two way transcoding
@@ -100,18 +103,17 @@
// ---------------------------------------------------------------------------
// Public Constructors and Destructor
// ---------------------------------------------------------------------------
-InMemMsgLoader::InMemMsgLoader(const XMLCh* const msgDomain) :
-
- fMsgDomain(0)
+InMemMsgLoader::InMemMsgLoader(const XMLCh* const msgDomain)
+:fMsgDomain(0)
{
- fMsgDomain = XMLString::replicate(msgDomain);
-
- if (XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain)
- && XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain)
- && XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain))
+ if (XMLString::compareString(msgDomain, XMLUni::fgXMLErrDomain)
+ && XMLString::compareString(msgDomain, XMLUni::fgExceptDomain)
+ && XMLString::compareString(msgDomain, XMLUni::fgValidityDomain))
{
XMLPlatformUtils::panic(XMLPlatformUtils::Panic_UnknownMsgDomain);
}
+
+ fMsgDomain = XMLString::replicate(msgDomain);
}
InMemMsgLoader::~InMemMsgLoader()
@@ -136,38 +138,37 @@
//
XMLCh* endPtr = toFill + maxChars;
XMLCh* outPtr = toFill;
+ const XMLCh* srcPtr = 0;
+
if (!XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain))
{
- const XMLCh* srcPtr = gXMLErrArray[msgToLoad - 1];
- while (*srcPtr && (outPtr < endPtr))
- {
- *outPtr++ = *srcPtr++;
- }
- *outPtr = 0;
+ if ( msgToLoad > gXMLErrArraySize)
+ return false;
+ else
+ srcPtr = gXMLErrArray[msgToLoad - 1];
}
else if (!XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain))
{
- const XMLCh* srcPtr = gXMLExceptArray[msgToLoad - 1];
- while (*srcPtr && (outPtr < endPtr))
- {
- *outPtr++ = *srcPtr++;
- }
- *outPtr = 0;
+ if ( msgToLoad > gXMLExceptArraySize)
+ return false;
+ else
+ srcPtr = gXMLExceptArray[msgToLoad - 1];
}
else if (!XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain))
{
- const XMLCh* srcPtr = gXMLValidityArray[msgToLoad - 1];
- while (*srcPtr && (outPtr < endPtr))
- {
- *outPtr++ = *srcPtr++;
- }
- *outPtr = 0;
- }
- else
- {
- return false;
+ if ( msgToLoad > gXMLValidityArraySize)
+ return false;
+ else
+ srcPtr = gXMLValidityArray[msgToLoad - 1];
}
- return true;
+
+ while (*srcPtr && (outPtr < endPtr))
+ {
+ *outPtr++ = *srcPtr++;
+ }
+ *outPtr = 0;
+
+ return true;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]