Skip to content

Commit 31512b8

Browse files
committed
Swift: Use DataFlow::ConfigSig in StaticInitializationVector.ql
1 parent b00104e commit 31512b8

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

swift/ql/src/queries/Security/CWE-1204/StaticInitializationVector.ql

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import swift
1515
import codeql.swift.dataflow.DataFlow
1616
import codeql.swift.dataflow.TaintTracking
17-
import DataFlow::PathGraph
17+
import StaticInitializationVectorFlow::PathGraph
1818

1919
/**
2020
* A static IV is created through either a byte array or string literals.
@@ -56,23 +56,21 @@ class EncryptionInitializationSink extends Expr {
5656
* A dataflow configuration from the source of a static IV to expressions that use
5757
* it to initialize a cipher.
5858
*/
59-
class StaticInitializationVectorConfig extends TaintTracking::Configuration {
60-
StaticInitializationVectorConfig() { this = "StaticInitializationVectorConfig" }
61-
62-
override predicate isSource(DataFlow::Node node) {
59+
module StaticInitializationVectorConfig implements DataFlow::ConfigSig {
60+
predicate isSource(DataFlow::Node node) {
6361
node.asExpr() instanceof StaticInitializationVectorSource
6462
}
6563

66-
override predicate isSink(DataFlow::Node node) {
67-
node.asExpr() instanceof EncryptionInitializationSink
68-
}
64+
predicate isSink(DataFlow::Node node) { node.asExpr() instanceof EncryptionInitializationSink }
6965
}
7066

67+
module StaticInitializationVectorFlow = TaintTracking::Global<StaticInitializationVectorConfig>;
68+
7169
// The query itself
7270
from
73-
StaticInitializationVectorConfig config, DataFlow::PathNode sourceNode,
74-
DataFlow::PathNode sinkNode
75-
where config.hasFlowPath(sourceNode, sinkNode)
71+
StaticInitializationVectorFlow::PathNode sourceNode,
72+
StaticInitializationVectorFlow::PathNode sinkNode
73+
where StaticInitializationVectorFlow::flowPath(sourceNode, sinkNode)
7674
select sinkNode.getNode(), sourceNode, sinkNode,
7775
"The static value '" + sourceNode.getNode().toString() +
7876
"' is used as an initialization vector for encryption."

0 commit comments

Comments
 (0)