qt: fix out-of-bounds read in RPCParseCommandLine on empty command#944
Open
nabhan06 wants to merge 1 commit into
Open
qt: fix out-of-bounds read in RPCParseCommandLine on empty command#944nabhan06 wants to merge 1 commit into
nabhan06 wants to merge 1 commit into
Conversation
Contributor
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please copy-paste |
Contributor
|
Concept ACK |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When a console line begins with
)or is just an empty pair of brackets, RPCParseCommandLine reaches the command-execution branch while the current argument frame is still empty, sostack.back()[0]reads out of bounds and the argument list built fromstack.back().begin() + 1toend()is an invalid iterator range (throws std::length_error in practice, and UBSan flags the null-pointer reference otherwise). The(branch already guards this withstack.back().size() > 0, so I apply the same check to the)and newline branch. Added two regression cases to rpcNestedTests that abort without the guard and pass with it.