Skip to content

Commit c01361a

Browse files
committed
Ruby: Re-factor provenance related predicates for summarized callable.
1 parent 59a9e25 commit c01361a

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,23 @@ DataFlowType getSyntheticGlobalType(SummaryComponent::SyntheticGlobal sg) { any(
4949

5050
/**
5151
* Holds if an external flow summary exists for `c` with input specification
52-
* `input`, output specification `output`, kind `kind`, and a flag `generated`
53-
* stating whether the summary is autogenerated.
52+
* `input`, output specification `output`, kind `kind`, and provenance `provenance`.
5453
*/
5554
predicate summaryElement(
56-
FlowSummary::SummarizedCallable c, string input, string output, string kind, boolean generated
55+
FlowSummary::SummarizedCallable c, string input, string output, string kind, string provenance
5756
) {
5857
exists(boolean preservesValue |
5958
c.propagatesFlowExt(input, output, preservesValue) and
6059
(if preservesValue = true then kind = "value" else kind = "taint") and
61-
generated = false
60+
provenance = "manual"
6261
)
6362
}
6463

6564
/**
66-
* Holds if a neutral model exists for `c`, which means that there is no
67-
* flow through `c`. The flag `generated` states whether the neutral model is autogenerated.
68-
* Note. Neutral models have not been implemented for ruby.
65+
* Holds if a neutral model exists for `c` with provenance `provenance`,
66+
* which means that there is no flow through `c`.
6967
*/
70-
predicate neutralElement(FlowSummary::SummarizedCallable c, boolean generated) { none() }
68+
predicate neutralElement(FlowSummary::SummarizedCallable c, string provenance) { none() }
7169

7270
bindingset[arg]
7371
private SummaryComponent interpretElementArg(string arg) {
@@ -207,17 +205,15 @@ NormalReturnKind getReturnValueKind() { any() }
207205
private module UnusedSourceSinkInterpretation {
208206
/**
209207
* Holds if an external source specification exists for `n` with output specification
210-
* `output`, kind `kind`, and a flag `generated` stating whether the source specification is
211-
* autogenerated.
208+
* `output`, kind `kind`, and provenance `provenance`.
212209
*/
213-
predicate sourceElement(AstNode n, string output, string kind, boolean generated) { none() }
210+
predicate sourceElement(AstNode n, string output, string kind, string provenance) { none() }
214211

215212
/**
216213
* Holds if an external sink specification exists for `n` with input specification
217-
* `input`, kind `kind` and a flag `generated` stating whether the sink specification is
218-
* autogenerated.
214+
* `input`, kind `kind` and provenance `provenance`.
219215
*/
220-
predicate sinkElement(AstNode n, string input, string kind, boolean generated) { none() }
216+
predicate sinkElement(AstNode n, string input, string kind, string provenance) { none() }
221217

222218
class SourceOrSinkElement = AstNode;
223219

0 commit comments

Comments
 (0)