Enhance memory safety with validity checks on jv values #3347
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 pull request addresses a memory safety issue in the
jv_object_merge_recursive
function, where potentially uninitialized values may be accessed without proper validation.CWE-457: Use of Uninitialized Variable
In
jv_object_merge_recursive
, the result ofjv_object_get(...)
was previously assumed to be valid. This could result in undefined behavior if an invalidjv
value is passed toJVP_HAS_KIND
.Fix:
elem_valid
) to store the result ofjv_is_valid(elem)
elem
is only accessed when it is confirmed to be validThis change helps prevent segmentation faults and unpredictable behavior caused by unsafe dereferencing of invalid
jv
values. It improves the overall robustness and stability of the system, especially in edge cases involving malformed or incomplete input.Fixes #3346