Skip to content

Commit 8a65efb

Browse files
committed
C#/Java: Add isRelevantSinkKind predicate with language specific implementation.
1 parent 0009d78 commit 8a65efb

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

csharp/ql/src/utils/model-generator/internal/CaptureModels.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ string captureSink(TargetApi api) {
163163
config.hasFlow(src, sink) and
164164
ExternalFlow::sinkNode(sink, kind) and
165165
api = src.getEnclosingCallable() and
166-
not kind = "logging" and
166+
isRelevantSinkKind(kind) and
167167
result = asSinkModel(api, asInputArgument(src), kind)
168168
)
169169
}

csharp/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ predicate isOwnInstanceAccessNode(ReturnNode node) { node.asExpr() instanceof Th
2626
*/
2727
string qualifierString() { result = "Argument[Qualifier]" }
2828

29+
/**
30+
* Holds if `kind` is a relevant sink kind for creating sink models.
31+
*/
32+
bindingset[kind]
33+
predicate isRelevantSinkKind(string kind) { any() }
34+
2935
/**
3036
* Language specific parts of the `PropagateToSinkConfiguration`.
3137
*/

java/ql/src/utils/model-generator/internal/CaptureModels.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ string captureSink(TargetApi api) {
163163
config.hasFlow(src, sink) and
164164
ExternalFlow::sinkNode(sink, kind) and
165165
api = src.getEnclosingCallable() and
166-
not kind = "logging" and
166+
isRelevantSinkKind(kind) and
167167
result = asSinkModel(api, asInputArgument(src), kind)
168168
)
169169
}

java/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ string asInputArgument(DataFlow::Node source) {
6161
result = qualifierString()
6262
}
6363

64+
/**
65+
* Holds if `kind` is a relevant sink kind for creating sink models.
66+
*/
67+
bindingset[kind]
68+
predicate isRelevantSinkKind(string kind) { not kind = "logging" }
69+
6470
module DataFlowImplCommon {
6571
predicate store = Dfic::store/4;
6672

0 commit comments

Comments
 (0)