You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2005/11/15 14:10:34 UTC

svn commit: r344362 - in /xerces/c/trunk/src/xercesc/util: XMLAbstractDoubleFloat.cpp XMLBigDecimal.cpp XMLBigInteger.cpp

Author: cargilld
Date: Tue Nov 15 05:10:30 2005
New Revision: 344362

URL: http://svn.apache.org/viewcvs?rev=344362&view=rev
Log:
Treat "+" and "-" as invalid numeric schema values.

Modified:
    xerces/c/trunk/src/xercesc/util/XMLAbstractDoubleFloat.cpp
    xerces/c/trunk/src/xercesc/util/XMLBigDecimal.cpp
    xerces/c/trunk/src/xercesc/util/XMLBigInteger.cpp

Modified: xerces/c/trunk/src/xercesc/util/XMLAbstractDoubleFloat.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLAbstractDoubleFloat.cpp?rev=344362&r1=344361&r2=344362&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLAbstractDoubleFloat.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLAbstractDoubleFloat.cpp Tue Nov 15 05:10:30 2005
@@ -376,10 +376,18 @@
 	{
 		minusSeen = true;
 		srcStr++;
+        if (!*srcStr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager());
+        }
 	}
 	else if (*srcStr == chPlus)
 	{
 		srcStr++;
+        if (!*srcStr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager());
+        }
 	}
 
 	// scan the string

Modified: xerces/c/trunk/src/xercesc/util/XMLBigDecimal.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLBigDecimal.cpp?rev=344362&r1=344361&r2=344362&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLBigDecimal.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLBigDecimal.cpp Tue Nov 15 05:10:30 2005
@@ -231,10 +231,18 @@
     {
         sign = -1;
         startPtr++;
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
     else if (*startPtr == chPlus)
     {
-        startPtr++;
+        startPtr++;         
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
 
     // Strip leading zeros
@@ -321,10 +329,18 @@
     if (*startPtr == chDash)
     {
         startPtr++;
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
     else if (*startPtr == chPlus)
     {
         startPtr++;
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
 
     // Strip leading zeros

Modified: xerces/c/trunk/src/xercesc/util/XMLBigInteger.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLBigInteger.cpp?rev=344362&r1=344361&r2=344362&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLBigInteger.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLBigInteger.cpp Tue Nov 15 05:10:30 2005
@@ -135,12 +135,21 @@
     {
         signValue = -1;
         startPtr++;
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
     else if (*startPtr == chPlus)
     {
         // skip the '+'
         startPtr++;
+        if (startPtr == endPtr)
+        {
+            ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
+        }
     }
+
 
     // Scan past any leading zero.
     while (*startPtr == chDigit_0)



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org