libxml2 r3728 - trunk



Author: veillard
Date: Thu Apr  3 11:43:52 2008
New Revision: 3728
URL: http://svn.gnome.org/viewvc/libxml2?rev=3728&view=rev

Log:
* xmlschemastypes.c: horror around the definition of the lexical
  values for decimal and derived types, fixing to reject empty 
  values, should fix #503268
Daniel


Modified:
   trunk/ChangeLog
   trunk/xmlschemastypes.c

Modified: trunk/xmlschemastypes.c
==============================================================================
--- trunk/xmlschemastypes.c	(original)
+++ trunk/xmlschemastypes.c	Thu Apr  3 11:43:52 2008
@@ -2063,7 +2063,7 @@
  * Parse an unsigned long into 3 fields.
  *
  * Returns the number of significant digits in the number or
- * -1 if overflow of the capacity
+ * -1 if overflow of the capacity and -2 if it's not a number.
  */
 static int
 xmlSchemaParseUInt(const xmlChar **str, unsigned long *llo,
@@ -2072,6 +2072,9 @@
     const xmlChar *tmp, *cur = *str;
     int ret = 0, i = 0;
 
+    if (!((*cur >= '0') && (*cur <= '9'))) 
+        return(-2);
+
     while (*cur == '0') {        /* ignore leading zeroes */
         cur++;
     }
@@ -2342,9 +2345,9 @@
 			    * Terminate the (preparsed) string.
 			    */
 			    if (len != 0) {
-				*cptr = 0; 
+				*cptr = 0;
 				cptr = cval;
-				
+
 				xmlSchemaParseUInt((const xmlChar **)&cptr,
 				    &v->value.decimal.lo,
 				    &v->value.decimal.mi,
@@ -3116,7 +3119,7 @@
                 } else if (*cur == '+')
                     cur++;
                 ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi);
-                if (ret == -1)
+                if (ret < 0)
                     goto return1;
 		if (normOnTheFly)
 		    while IS_WSP_BLANK_CH(*cur) cur++;
@@ -3161,7 +3164,7 @@
         case XML_SCHEMAS_BYTE:
         case XML_SCHEMAS_SHORT:
         case XML_SCHEMAS_INT:{
-                 const xmlChar *cur = value;
+                const xmlChar *cur = value;
                 unsigned long lo, mi, hi;
                 int sign = 0;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]