FlowSummaryImpl: Embed AST nodes in source/sink summary nodes for better flow paths - #22145
Open
hvitved wants to merge 15 commits into
Open
FlowSummaryImpl: Embed AST nodes in source/sink summary nodes for better flow paths#22145hvitved wants to merge 15 commits into
hvitved wants to merge 15 commits into
Conversation
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
from
July 9, 2026 11:51
b24377a to
d2107ce
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
from
July 9, 2026 12:42
d2107ce to
d397063
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
3 times, most recently
from
July 10, 2026 13:40
61ebe22 to
fddb4f0
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
5 times, most recently
from
August 4, 2026 10:20
bb0f3dc to
332303a
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
3 times, most recently
from
August 5, 2026 12:21
8196e39 to
bca818e
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
from
August 5, 2026 12:47
bca818e to
74ec8fd
Compare
hvitved
force-pushed
the
flow-summary-source-sink-locations
branch
from
August 6, 2026 11:46
db6ff1d to
9c03c21
Compare
hvitved
marked this pull request as ready for review
August 6, 2026 12:28
MathiasVP
reviewed
Aug 7, 2026
MathiasVP
reviewed
Aug 7, 2026
Contributor
Author
|
Ping @geoffw0 for the Rust alert location changes (improvements). |
geoffw0
reviewed
Aug 11, 2026
geoffw0
left a comment
Contributor
There was a problem hiding this comment.
I'm happy with the changes to Rust tests, including locations. They're pretty wide-spread, I can see why you went with a majorAnalysis change note. I'm still checking some details of the DCA run...
geoffw0
approved these changes
Aug 11, 2026
geoffw0
left a comment
Contributor
There was a problem hiding this comment.
Sorry for the delay, I am happy with all this now (at least the bits I reviewed - Rust test changes and DCA run).
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.
This PR addresses the issues identified by @MathiasVP on #22113.
Note that the issue (and fix) only applies to Rust, which is the only language that currently supports source/sink definitions with non-empty access paths.
The underlying issue was that we were unable to map source/sink summary nodes to the locations represented by the output/input models-as-data specs, so for example a source with an
Argument[0]spec would be unable to be mapped to the corresponding argument, and we instead resorted to using the location of the call as the source location. The second issue identified by@MathiasVP, defining a source that is supposed to be a parameter, was not even supported in Rust.The fix to both issues is to embed language-specific AST nodes into the source/sink summary nodes, and then use the locations of those as the locations of the source/sink nodes. This PR also shows how to add support for parameter sources, as well as more complex sinks like
Argument[0].ReturnValue.Field[A].Field[B](a value stored insideBstored insideA, which is returned from a callback at position 0).For source/sink specs with complex access paths like the one above, we include a data flow node for each of the access path tokens, which means we can get much more helpful flow paths:
Commit-by-commit review is strongly encouraged, and the second commit should be reviewed ignoring whitespaces.
The impact for Rust is that some alert locations have changed (to more precise locations, and in alignment with other languages), and I have added a change note for this.