C#: Implement new data flow interface

This commit is contained in:
Tom Hvitved
2024-03-08 09:14:09 +01:00
parent 4291290277
commit 257686eb9a
10 changed files with 19 additions and 15 deletions

View File

@@ -4,7 +4,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflow.internal.DataFlowImplConsistency
private module Input implements InputSig<CsharpDataFlow> {
private module Input implements InputSig<Location, CsharpDataFlow> {
private import CsharpDataFlow
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>

View File

@@ -8,6 +8,6 @@ import csharp
module DataFlow {
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
private import codeql.dataflow.DataFlow
import DataFlowMake<CsharpDataFlow>
import DataFlowMake<Location, CsharpDataFlow>
import semmle.code.csharp.dataflow.internal.DataFlowImpl1
}

View File

@@ -10,6 +10,6 @@ module TaintTracking {
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflow.TaintTracking
import TaintFlowMake<CsharpDataFlow, CsharpTaintTracking>
import TaintFlowMake<Location, CsharpDataFlow, CsharpTaintTracking>
import semmle.code.csharp.dataflow.internal.tainttracking1.TaintTrackingImpl
}

View File

@@ -1,3 +1,4 @@
private import semmle.code.csharp.Location
private import DataFlowImplSpecific
private import codeql.dataflow.internal.DataFlowImpl
import MakeImpl<CsharpDataFlow>
import MakeImpl<Location, CsharpDataFlow>

View File

@@ -1,3 +1,4 @@
private import semmle.code.csharp.Location
private import DataFlowImplSpecific
private import codeql.dataflow.internal.DataFlowImplCommon
import MakeImplCommon<CsharpDataFlow>
import MakeImplCommon<Location, CsharpDataFlow>

View File

@@ -2,6 +2,7 @@
* Provides C#-specific definitions for use in the data flow library.
*/
private import semmle.code.csharp.Location
private import codeql.dataflow.DataFlow
module Private {
@@ -13,7 +14,7 @@ module Public {
import DataFlowPublic
}
module CsharpDataFlow implements InputSig {
module CsharpDataFlow implements InputSig<Location> {
import Private
import Public

View File

@@ -58,7 +58,7 @@ class Node extends TNode {
* For more information, see
* [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
) {
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)

View File

@@ -12,7 +12,7 @@ private import DataFlowImplSpecific::Public
private import semmle.code.csharp.Unification
private import semmle.code.csharp.dataflow.internal.ExternalFlow
module Input implements InputSig<DataFlowImplSpecific::CsharpDataFlow> {
module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow> {
class SummarizedCallableBase = UnboundCallable;
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 {
DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) {
@@ -154,7 +154,7 @@ private module StepsInput implements Impl::Private::StepsInputSig {
}
module SourceSinkInterpretationInput implements
Impl::Private::External::SourceSinkInterpretationInputSig<Location>
Impl::Private::External::SourceSinkInterpretationInputSig
{
private import csharp as Cs
@@ -252,7 +252,7 @@ module Private {
module External {
import Impl::Private::External
import Impl::Private::External::SourceSinkInterpretation<Location, SourceSinkInterpretationInput>
import Impl::Private::External::SourceSinkInterpretation<SourceSinkInterpretationInput>
}
private module SummaryComponentInternal = Impl::Private::SummaryComponent;

View File

@@ -2,9 +2,10 @@
* Provides C#-specific definitions for use in the taint tracking library.
*/
private import semmle.code.csharp.Location
private import codeql.dataflow.TaintTracking
private import DataFlowImplSpecific
module CsharpTaintTracking implements InputSig<CsharpDataFlow> {
module CsharpTaintTracking implements InputSig<Location, CsharpDataFlow> {
import TaintTrackingPrivate
}

View File

@@ -9,7 +9,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
private import internal.InlineExpectationsTestImpl
private module FlowTestImpl implements InputSig<CsharpDataFlow> {
private module FlowTestImpl implements InputSig<Location, CsharpDataFlow> {
predicate defaultSource(DataFlow::Node source) {
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>