Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add and fix JSON stack overflow tests #74

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Conversation

lod
Copy link

@lod lod commented May 1, 2018

Fixes #73

The JSON test suite (https://github.com/nst/JSONTestSuite/) contains
a list of JSON test files, two of which which triggered crashes.
n_structure_100000_opening_arrays.json
n_structure_open_array_object.json

These crashes were both caused by excessive recursion as they created
massively deep arrays and objects.

These test examples have been added to test-strings.
Modifications were alse made to the test runners to support them.

An arbitrary depth cap has been added to the parser prevent the
overflow problem.

lod added 4 commits May 1, 2018 22:58
The JSON test suite (https://github.com/nst/JSONTestSuite/) contains
a list of JSON test files, two of which which triggered crashes.
    n_structure_100000_opening_arrays.json
    n_structure_open_array_object.json

These crashes were both caused by excessive recursion as they created
massively deep arrays and objects.

These test examples have been added to test-strings.
Modifications were alse made to the test runners to support them.

An arbitrary depth cap has been added to the parser prevent the
overflow problem.
Repeated calls to parse_value() where parse_object() or parse_array()
failed would lead to an accumulation of the depth value.

The other way of fixing this would be to reset depth in json_decode()
@lod
Copy link
Author

lod commented May 1, 2018

Clang tests failing, looks like this error
travis-ci/travis-ci#8613

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant