Skip to content

Commit 4667c41

Browse files
committed
limit specifying array indices to 20
1 parent 3fc9201 commit 4667c41

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

lib/parse.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ internals.parseObject = function (chain, val) {
4646
obj = [];
4747
obj = obj.concat(internals.parseObject(chain, val));
4848
}
49-
else if (!isNaN(index) && root !== cleanRoot) {
49+
else if (!isNaN(index) && root !== cleanRoot && index <= 20) {
5050
obj = [];
5151
obj[index] = internals.parseObject(chain, val);
5252
}

test/parse.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ describe('Riddler.parse()', function () {
8282
done();
8383
});
8484

85+
it('limits specific array indices to 20', function (done) {
86+
87+
expect(Riddler.parse('a[20]=a')).to.deep.equal({ a: ['a'] });
88+
expect(Riddler.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } });
89+
done();
90+
});
91+
8592
it('supports encoded = signs', function (done) {
8693

8794
expect(Riddler.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' });
@@ -159,7 +166,7 @@ describe('Riddler.parse()', function () {
159166

160167
it('should compact sparse arrays', function (done) {
161168

162-
expect(Riddler.parse('a[9999]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] });
169+
expect(Riddler.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] });
163170
done();
164171
});
165172

0 commit comments

Comments
 (0)