Merge pull request #6385 from MathiasVP/more-FieldConfiguration-sources

C++: Fix missing local flow in AST dataflow
This commit is contained in:
Mathias Vorreiter Pedersen
2021-08-02 15:22:07 +02:00
committed by GitHub
4 changed files with 36 additions and 1 deletions

View File

@@ -735,7 +735,12 @@ private module FieldFlow {
private class FieldConfiguration extends Configuration {
FieldConfiguration() { this = "FieldConfiguration" }
override predicate isSource(Node source) { storeStep(source, _, _) }
override predicate isSource(Node source) {
storeStep(source, _, _)
or
// Also mark `foo(a.b);` as a source when `a.b` may be overwritten by `foo`.
readStep(_, _, any(Node node | node.asExpr() = source.asDefiningArgument()))
}
override predicate isSink(Node sink) { readStep(_, _, sink) }