summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-02-22 15:02:45 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-02-22 15:02:45 +0000
commit8b415e7299aebd0c4109925d8fe366734810413a (patch)
treef4ad5dc2b7b4d85cc7e2a6d1106e681a9278faf9 /django/forms
parent9ee2d5c646bc078aa336cb0b12d6f28d6bfbb436 (diff)
[1.1.X] Fixed #7777 -- Added validation handling for NaN, Inf and -Inf in DecimalFields. Thanks to thebitguru for the patch.
Backport of r12490 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12491 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/fields.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 12316a1ab1..581d32d923 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -240,6 +240,12 @@ class DecimalField(Field):
except DecimalException:
raise ValidationError(self.error_messages['invalid'])
+ # Check for NaN, Inf and -Inf values. We can't compare directly for NaN,
+ # since it is never equal to itself. However, NaN is the only value that
+ # isn't equal to itself, so we can use this to identify NaN
+ if value != value or value == Decimal("Inf") or value == Decimal("-Inf"):
+ raise ValidationError(self.error_messages['invalid'])
+
sign, digittuple, exponent = value.as_tuple()
decimals = abs(exponent)
# digittuple doesn't include any leading zeros.