Limit nesting depth by default to guard against stack overflow #16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change adds a limit to the nesting depth by default to guard against stack overflow in cases where arrays and/or objects are deeply nested.
Additionally, a new feature,
unlimited_depth
has been added (disabled by default) as an easy way for users to bypass this limit.JSON5Parser
structs also have a new constructorwith_max_depth
to allow a parser to be constructed with a user-specified max depth.The default limit aims to prevent stack overflows in most normal circumstances on tier 1 operating systems. Some targets with extremely limited stack space may still experience stack overflows. The limit is adjusted based on operating system and the presence of the
debug_assertions
configuration, intended to allow higher default limits for release builds.At time of writing, the default limit is as follows:
debug_assertions
debug_assersions