diff --git a/ChangeLog b/ChangeLog index 78bcb048..69ad5d9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Sep 23 18:23:46 CEST 2004 Daniel Veillard + + * xmlschemastypes.c: fixing an out of bound adressing issue + Thu Sep 23 15:14:12 CEST 2004 Daniel Veillard * HTMLparser.c parser.c relaxng.c xmlschemas.c: more memory related diff --git a/xmlschemastypes.c b/xmlschemastypes.c index 9ebcfd9b..d04a99b6 100644 --- a/xmlschemastypes.c +++ b/xmlschemastypes.c @@ -3128,17 +3128,21 @@ static long _xmlSchemaDateCastYMToDays (const xmlSchemaValPtr dt) { long ret; + int mon; - if (dt->value.date.year < 0) + mon = dt->value.date.mon; + if (mon <= 0) mon = 1; /* normalization */ + + if (dt->value.date.year <= 0) ret = (dt->value.date.year * 365) + (((dt->value.date.year+1)/4)-((dt->value.date.year+1)/100)+ ((dt->value.date.year+1)/400)) + - DAY_IN_YEAR(0, dt->value.date.mon, dt->value.date.year); + DAY_IN_YEAR(0, mon, dt->value.date.year); else ret = ((dt->value.date.year-1) * 365) + (((dt->value.date.year-1)/4)-((dt->value.date.year-1)/100)+ ((dt->value.date.year-1)/400)) + - DAY_IN_YEAR(0, dt->value.date.mon, dt->value.date.year); + DAY_IN_YEAR(0, mon, dt->value.date.year); return ret; }