gh-125682: Reject non-ASCII digits in the Python implementation of JSON decoder (GH-125687)

This commit is contained in:
Nice Zombies 2024-10-18 14:26:29 +02:00 committed by GitHub
parent a0f5c8e627
commit d358425e69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 1 deletions

View File

@ -9,7 +9,7 @@
__all__ = ['make_scanner']
NUMBER_RE = re.compile(
r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?',
r'(-?(?:0|[1-9][0-9]*))(\.[0-9]+)?([eE][-+]?[0-9]+)?',
(re.VERBOSE | re.MULTILINE | re.DOTALL))
def py_make_scanner(context):

View File

@ -16,6 +16,12 @@ def test_float(self):
self.assertIsInstance(rval, float)
self.assertEqual(rval, 1.0)
def test_nonascii_digits_rejected(self):
# JSON specifies only ascii digits, see gh-125687
for num in ["1\uff10", "0.\uff10", "0e\uff10"]:
with self.assertRaises(self.JSONDecodeError):
self.loads(num)
def test_bytes(self):
self.assertEqual(self.loads(b"1"), 1)

View File

@ -0,0 +1,2 @@
Reject non-ASCII digits in the Python implementation of :func:`json.loads`
conforming to the JSON specification.