Ruby: Include all assignments in data flow paths #12566
Merged
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 PR ensures that flow that goes through assignments always include those assignments in the reported data flow path.
For example, in
we will no longer report a flow path directly from
taintto theyinsink(y), but instead have an intermediate step that goes through the assignmenty = x. This should make it easier to follow flow paths.Instead of requiring that all right-hand sides of assignments always be included in flow paths, we make use of the underlying SSA definition, which means that we will only break at assignments when flow actually goes via the assignee. For example, in
we don't want to have an intermediate step at the assignment
y = x.