mirror of
https://github.com/github/codeql.git
synced 2025-12-21 19:26:31 +01:00
C#: Implement new data flow interface
This commit is contained in:
@@ -4,7 +4,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
|||||||
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
||||||
private import codeql.dataflow.internal.DataFlowImplConsistency
|
private import codeql.dataflow.internal.DataFlowImplConsistency
|
||||||
|
|
||||||
private module Input implements InputSig<CsharpDataFlow> {
|
private module Input implements InputSig<Location, CsharpDataFlow> {
|
||||||
private import CsharpDataFlow
|
private import CsharpDataFlow
|
||||||
|
|
||||||
private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() }
|
private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() }
|
||||||
@@ -99,4 +99,4 @@ private module Input implements InputSig<CsharpDataFlow> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import MakeConsistency<CsharpDataFlow, CsharpTaintTracking, Input>
|
import MakeConsistency<Location, CsharpDataFlow, CsharpTaintTracking, Input>
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ import csharp
|
|||||||
module DataFlow {
|
module DataFlow {
|
||||||
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
||||||
private import codeql.dataflow.DataFlow
|
private import codeql.dataflow.DataFlow
|
||||||
import DataFlowMake<CsharpDataFlow>
|
import DataFlowMake<Location, CsharpDataFlow>
|
||||||
import semmle.code.csharp.dataflow.internal.DataFlowImpl1
|
import semmle.code.csharp.dataflow.internal.DataFlowImpl1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ module TaintTracking {
|
|||||||
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
||||||
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
||||||
private import codeql.dataflow.TaintTracking
|
private import codeql.dataflow.TaintTracking
|
||||||
import TaintFlowMake<CsharpDataFlow, CsharpTaintTracking>
|
import TaintFlowMake<Location, CsharpDataFlow, CsharpTaintTracking>
|
||||||
import semmle.code.csharp.dataflow.internal.tainttracking1.TaintTrackingImpl
|
import semmle.code.csharp.dataflow.internal.tainttracking1.TaintTrackingImpl
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
private import semmle.code.csharp.Location
|
||||||
private import DataFlowImplSpecific
|
private import DataFlowImplSpecific
|
||||||
private import codeql.dataflow.internal.DataFlowImpl
|
private import codeql.dataflow.internal.DataFlowImpl
|
||||||
import MakeImpl<CsharpDataFlow>
|
import MakeImpl<Location, CsharpDataFlow>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
private import semmle.code.csharp.Location
|
||||||
private import DataFlowImplSpecific
|
private import DataFlowImplSpecific
|
||||||
private import codeql.dataflow.internal.DataFlowImplCommon
|
private import codeql.dataflow.internal.DataFlowImplCommon
|
||||||
import MakeImplCommon<CsharpDataFlow>
|
import MakeImplCommon<Location, CsharpDataFlow>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
* Provides C#-specific definitions for use in the data flow library.
|
* Provides C#-specific definitions for use in the data flow library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
private import semmle.code.csharp.Location
|
||||||
private import codeql.dataflow.DataFlow
|
private import codeql.dataflow.DataFlow
|
||||||
|
|
||||||
module Private {
|
module Private {
|
||||||
@@ -13,7 +14,7 @@ module Public {
|
|||||||
import DataFlowPublic
|
import DataFlowPublic
|
||||||
}
|
}
|
||||||
|
|
||||||
module CsharpDataFlow implements InputSig {
|
module CsharpDataFlow implements InputSig<Location> {
|
||||||
import Private
|
import Private
|
||||||
import Public
|
import Public
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class Node extends TNode {
|
|||||||
* For more information, see
|
* For more information, see
|
||||||
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
|
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
|
||||||
*/
|
*/
|
||||||
predicate hasLocationInfo(
|
deprecated predicate hasLocationInfo(
|
||||||
string filepath, int startline, int startcolumn, int endline, int endcolumn
|
string filepath, int startline, int startcolumn, int endline, int endcolumn
|
||||||
) {
|
) {
|
||||||
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ private import DataFlowImplSpecific::Public
|
|||||||
private import semmle.code.csharp.Unification
|
private import semmle.code.csharp.Unification
|
||||||
private import semmle.code.csharp.dataflow.internal.ExternalFlow
|
private import semmle.code.csharp.dataflow.internal.ExternalFlow
|
||||||
|
|
||||||
module Input implements InputSig<DataFlowImplSpecific::CsharpDataFlow> {
|
module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow> {
|
||||||
class SummarizedCallableBase = UnboundCallable;
|
class SummarizedCallableBase = UnboundCallable;
|
||||||
|
|
||||||
ArgumentPosition callbackSelfParameterPosition() { result.isDelegateSelf() }
|
ArgumentPosition callbackSelfParameterPosition() { result.isDelegateSelf() }
|
||||||
@@ -80,7 +80,7 @@ module Input implements InputSig<DataFlowImplSpecific::CsharpDataFlow> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private import Make<DataFlowImplSpecific::CsharpDataFlow, Input> as Impl
|
private import Make<Location, DataFlowImplSpecific::CsharpDataFlow, Input> as Impl
|
||||||
|
|
||||||
private module TypesInput implements Impl::Private::TypesInputSig {
|
private module TypesInput implements Impl::Private::TypesInputSig {
|
||||||
DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) {
|
DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) {
|
||||||
@@ -154,7 +154,7 @@ private module StepsInput implements Impl::Private::StepsInputSig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module SourceSinkInterpretationInput implements
|
module SourceSinkInterpretationInput implements
|
||||||
Impl::Private::External::SourceSinkInterpretationInputSig<Location>
|
Impl::Private::External::SourceSinkInterpretationInputSig
|
||||||
{
|
{
|
||||||
private import csharp as Cs
|
private import csharp as Cs
|
||||||
|
|
||||||
@@ -252,7 +252,7 @@ module Private {
|
|||||||
|
|
||||||
module External {
|
module External {
|
||||||
import Impl::Private::External
|
import Impl::Private::External
|
||||||
import Impl::Private::External::SourceSinkInterpretation<Location, SourceSinkInterpretationInput>
|
import Impl::Private::External::SourceSinkInterpretation<SourceSinkInterpretationInput>
|
||||||
}
|
}
|
||||||
|
|
||||||
private module SummaryComponentInternal = Impl::Private::SummaryComponent;
|
private module SummaryComponentInternal = Impl::Private::SummaryComponent;
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
* Provides C#-specific definitions for use in the taint tracking library.
|
* Provides C#-specific definitions for use in the taint tracking library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
private import semmle.code.csharp.Location
|
||||||
private import codeql.dataflow.TaintTracking
|
private import codeql.dataflow.TaintTracking
|
||||||
private import DataFlowImplSpecific
|
private import DataFlowImplSpecific
|
||||||
|
|
||||||
module CsharpTaintTracking implements InputSig<CsharpDataFlow> {
|
module CsharpTaintTracking implements InputSig<Location, CsharpDataFlow> {
|
||||||
import TaintTrackingPrivate
|
import TaintTrackingPrivate
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
|
|||||||
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
|
||||||
private import internal.InlineExpectationsTestImpl
|
private import internal.InlineExpectationsTestImpl
|
||||||
|
|
||||||
private module FlowTestImpl implements InputSig<CsharpDataFlow> {
|
private module FlowTestImpl implements InputSig<Location, CsharpDataFlow> {
|
||||||
predicate defaultSource(DataFlow::Node source) {
|
predicate defaultSource(DataFlow::Node source) {
|
||||||
source.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"]
|
source.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"]
|
||||||
}
|
}
|
||||||
@@ -35,4 +35,4 @@ private module FlowTestImpl implements InputSig<CsharpDataFlow> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import InlineFlowTestMake<CsharpDataFlow, CsharpTaintTracking, Impl, FlowTestImpl>
|
import InlineFlowTestMake<Location, CsharpDataFlow, CsharpTaintTracking, Impl, FlowTestImpl>
|
||||||
|
|||||||
Reference in New Issue
Block a user