Skip to content

Commit 59a9e25

Browse files
committed
Python: Re-factor provenance related predicates for summarized callable.
1 parent 6622eda commit 59a9e25

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,25 +78,24 @@ DataFlowType getSyntheticGlobalType(SummaryComponent::SyntheticGlobal sg) { any(
7878

7979
/**
8080
* Holds if an external flow summary exists for `c` with input specification
81-
* `input`, output specification `output`, kind `kind`, and a flag `generated`
82-
* stating whether the summary is autogenerated.
81+
* `input`, output specification `output`, kind `kind`, and provenance `provenance`.
8382
*/
8483
predicate summaryElement(
85-
FlowSummary::SummarizedCallable c, string input, string output, string kind, boolean generated
84+
FlowSummary::SummarizedCallable c, string input, string output, string kind, string provenance
8685
) {
8786
exists(boolean preservesValue |
8887
c.propagatesFlowExt(input, output, preservesValue) and
8988
(if preservesValue = true then kind = "value" else kind = "taint") and
90-
generated = false
89+
provenance = "manual"
9190
)
9291
}
9392

9493
/**
95-
* Holds if a neutral model exists for `c`, which means that there is no
96-
* flow through `c`. The flag `generated` states whether the neutral model is autogenerated.
94+
* Holds if a neutral model exists for `c` with provenance `provenance`,
95+
* which means that there is no flow through `c`.
9796
* Note. Neutral models have not been implemented for Python.
9897
*/
99-
predicate neutralElement(FlowSummary::SummarizedCallable c, boolean generated) { none() }
98+
predicate neutralElement(FlowSummary::SummarizedCallable c, string provenance) { none() }
10099

101100
/**
102101
* Gets the summary component for specification component `c`, if any.
@@ -137,17 +136,15 @@ ReturnKind getReturnValueKind() { any() }
137136
private module UnusedSourceSinkInterpretation {
138137
/**
139138
* Holds if an external source specification exists for `n` with output specification
140-
* `output`, kind `kind`, and a flag `generated` stating whether the source specification is
141-
* autogenerated.
139+
* `output`, kind `kind`, and provenance `provenance`.
142140
*/
143-
predicate sourceElement(AstNode n, string output, string kind, boolean generated) { none() }
141+
predicate sourceElement(AstNode n, string output, string kind, string provenance) { none() }
144142

145143
/**
146144
* Holds if an external sink specification exists for `n` with input specification
147-
* `input`, kind `kind` and a flag `generated` stating whether the sink specification is
148-
* autogenerated.
145+
* `input`, kind `kind` and provenance `provenance`.
149146
*/
150-
predicate sinkElement(AstNode n, string input, string kind, boolean generated) { none() }
147+
predicate sinkElement(AstNode n, string input, string kind, string provenance) { none() }
151148

152149
class SourceOrSinkElement = AstNode;
153150

0 commit comments

Comments
 (0)