mirror of
https://github.com/github/codeql.git
synced 2026-04-26 17:25:19 +02:00
Refactor tests
This commit is contained in:
committed by
Edward Minnix III
parent
b47c8e8c4c
commit
59e59125d6
@@ -3,22 +3,26 @@ import semmle.code.java.dataflow.TaintTracking
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
import TestUtilities.InlineFlowTest
|
||||
|
||||
class EnableLegacy extends EnableLegacyConfiguration {
|
||||
EnableLegacy() { exists(this) }
|
||||
module Config implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node node) {
|
||||
DefaultFlowConfig::isSource(node)
|
||||
or
|
||||
node instanceof RemoteFlowSource
|
||||
}
|
||||
|
||||
predicate isSink = DefaultFlowConfig::isSink/1;
|
||||
}
|
||||
|
||||
class TaintFlowConf extends DefaultTaintFlowConf {
|
||||
override predicate isSource(DataFlow::Node n) {
|
||||
super.isSource(n)
|
||||
or
|
||||
n instanceof RemoteFlowSource
|
||||
}
|
||||
}
|
||||
module TaintFlow = TaintTracking::Global<Config>;
|
||||
|
||||
class ValueFlowConf extends DefaultValueFlowConf {
|
||||
override predicate isSource(DataFlow::Node n) {
|
||||
super.isSource(n)
|
||||
or
|
||||
n instanceof RemoteFlowSource
|
||||
module ValueFlow = DataFlow::Global<Config>;
|
||||
|
||||
class Test extends InlineFlowTest {
|
||||
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
|
||||
TaintFlow::flow(source, sink)
|
||||
}
|
||||
|
||||
override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) {
|
||||
ValueFlow::flow(source, sink)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,37 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.TaintTracking
|
||||
import TestUtilities.InlineFlowTest
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
|
||||
class EnableLegacy extends EnableLegacyConfiguration {
|
||||
EnableLegacy() { exists(this) }
|
||||
}
|
||||
|
||||
class SliceValueFlowConf extends DefaultValueFlowConf {
|
||||
override predicate isSource(DataFlow::Node source) {
|
||||
super.isSource(source) or source instanceof RemoteFlowSource
|
||||
module SliceValueFlowConfig implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node source) {
|
||||
DefaultFlowConfig::isSource(source) or source instanceof RemoteFlowSource
|
||||
}
|
||||
|
||||
predicate isSink = DefaultFlowConfig::isSink/1;
|
||||
}
|
||||
|
||||
class SliceTaintFlowConf extends DefaultTaintFlowConf {
|
||||
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
|
||||
super.allowImplicitRead(node, c)
|
||||
or
|
||||
isSink(node) and
|
||||
module SliceValueFlow = DataFlow::Global<SliceValueFlowConfig>;
|
||||
|
||||
module SliceTaintFlowConfig implements DataFlow::ConfigSig {
|
||||
predicate isSource = DefaultFlowConfig::isSource/1;
|
||||
|
||||
predicate isSink = DefaultFlowConfig::isSink/1;
|
||||
|
||||
predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
|
||||
DefaultFlowConfig::isSink(node) and
|
||||
c.(DataFlow::SyntheticFieldContent).getField() = "androidx.slice.Slice.action"
|
||||
}
|
||||
}
|
||||
|
||||
module SliceTaintFlow = TaintTracking::Global<SliceTaintFlowConfig>;
|
||||
|
||||
class SliceFlowTest extends InlineFlowTest {
|
||||
override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) {
|
||||
SliceValueFlow::flow(source, sink)
|
||||
}
|
||||
|
||||
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
|
||||
SliceTaintFlow::flow(source, sink)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.DataFlow
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
import TestUtilities.InlineFlowTest
|
||||
|
||||
class Conf extends DefaultTaintFlowConf {
|
||||
override predicate isSource(DataFlow::Node node) {
|
||||
super.isSource(node)
|
||||
module Config implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node node) {
|
||||
DefaultFlowConfig::isSource(node)
|
||||
or
|
||||
node instanceof RemoteFlowSource
|
||||
}
|
||||
|
||||
predicate isSink = DefaultFlowConfig::isSink/1;
|
||||
}
|
||||
|
||||
class LegacyConfig extends EnableLegacyConfiguration {
|
||||
LegacyConfig() { this instanceof Unit }
|
||||
module Flow = TaintTracking::Global<Config>;
|
||||
|
||||
class Test extends InlineFlowTest {
|
||||
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
|
||||
Flow::flow(source, sink)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.DataFlow
|
||||
import TestUtilities.InlineFlowTest
|
||||
|
||||
class EnableLegacy extends EnableLegacyConfiguration {
|
||||
EnableLegacy() { exists(this) }
|
||||
module OkHttpFlowConf implements DataFlow::ConfigSig {
|
||||
predicate isSource = DefaultFlowConfig::isSource/1;
|
||||
|
||||
predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") }
|
||||
}
|
||||
|
||||
class FlowConf extends DefaultValueFlowConf {
|
||||
override predicate isSink(DataFlow::Node n) { super.isSink(n) or sinkNode(n, "open-url") }
|
||||
module OkHttpFlow = DataFlow::Global<OkHttpFlowConf>;
|
||||
|
||||
class OkHttpTest extends InlineFlowTest {
|
||||
override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) {
|
||||
OkHttpFlow::flow(src, sink)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.DataFlow
|
||||
import TestUtilities.InlineFlowTest
|
||||
|
||||
class EnableLegacy extends EnableLegacyConfiguration {
|
||||
EnableLegacy() { exists(this) }
|
||||
module FlowConfig implements DataFlow::ConfigSig {
|
||||
predicate isSource = DefaultFlowConfig::isSource/1;
|
||||
|
||||
predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") }
|
||||
}
|
||||
|
||||
class FlowConf extends DefaultValueFlowConf {
|
||||
override predicate isSink(DataFlow::Node n) { super.isSink(n) or sinkNode(n, "open-url") }
|
||||
module Flow = DataFlow::Global<FlowConfig>;
|
||||
|
||||
class RetrofitFlowTest extends InlineFlowTest {
|
||||
override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user