Skip to content

Commit 4fb793e

Browse files
Copilotstefankoegl
andcommitted
Fix array index validation to reject indices with leading zeros
Co-authored-by: stefankoegl <[email protected]>
1 parent 4aed89c commit 4fb793e

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

jsonpointer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class JsonPointer(object):
152152

153153
# Array indices must not contain:
154154
# leading zeros, signs, spaces, decimals, etc
155-
_RE_ARRAY_INDEX = re.compile('0|[1-9][0-9]*$')
155+
_RE_ARRAY_INDEX = re.compile('^(?:0|[1-9][0-9]*)$')
156156
_RE_INVALID_ESCAPE = re.compile('(~[^01]|~$)')
157157

158158
def __init__(self, pointer):

tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,13 @@ def test_invalid_index(self):
219219
# 'a' is not a valid list index
220220
doc = [0, 1, 2]
221221
self.assertRaises(JsonPointerException, resolve_pointer, doc, '/a')
222+
223+
def test_invalid_index_leading_zeros(self):
224+
# RFC 6901 specifies that array indices must not have leading zeros
225+
doc = [0, 1, 2]
226+
self.assertRaises(JsonPointerException, resolve_pointer, doc, '/01')
227+
self.assertRaises(JsonPointerException, resolve_pointer, doc, '/00')
228+
self.assertRaises(JsonPointerException, resolve_pointer, doc, '/001')
222229

223230
def test_oob(self):
224231
# this list does not have 10 members

0 commit comments

Comments
 (0)