diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index c711096cfb5e..9ccdb6bde698 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -76,7 +76,8 @@ private module Cached { } or TSummaryCall(FlowSummary::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) - } + } or + TLambdaSynthCall(Node creation) { lambdaCreation(creation, _, _) } /** Gets a viable run-time target for the call `call`. */ cached @@ -497,6 +498,24 @@ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { override Location getLocation() { result = c.getLocation() } } +class LambdaSynthCall extends DataFlowCall, TLambdaSynthCall { + private NodeImpl creation; + + LambdaSynthCall() { this = TLambdaSynthCall(creation) } + + override DataFlowCallable getARuntimeTarget() { none() } + + override ControlFlow::Nodes::ElementNode getControlFlowNode() { none() } + + override DataFlow::Node getNode() { none() } + + override DataFlowCallable getEnclosingCallable() { result = creation.getEnclosingCallableImpl() } + + override string toString() { result = "[lambda] call to " + creation } + + override Location getLocation() { result = creation.getLocation() } +} + /** A parameter position. */ class ParameterPosition extends TParameterPosition { /** Gets the underlying integer position, if any. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index cab164846e2d..6326582aee46 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -126,13 +126,12 @@ private class ExprNodeImpl extends ExprNode, NodeImpl { * Needed for flow through captured variables, where we treat local functions * as if they were lambdas. */ -abstract private class LocalFunctionCreationNode extends NodeImpl, TLocalFunctionCreationNode { +private class LocalFunctionCreationNode extends NodeImpl, TLocalFunctionCreationNode { ControlFlow::Nodes::ElementNode cfn; LocalFunction function; - boolean isPostUpdate; LocalFunctionCreationNode() { - this = TLocalFunctionCreationNode(cfn, isPostUpdate) and + this = TLocalFunctionCreationNode(cfn) and function = cfn.getAstNode().(LocalFunctionStmt).getLocalFunction() } @@ -156,10 +155,6 @@ abstract private class LocalFunctionCreationNode extends NodeImpl, TLocalFunctio ControlFlow::Nodes::ElementNode getUnderlyingControlFlowNode() { result = cfn } override Location getLocationImpl() { result = cfn.getLocation() } -} - -private class LocalFunctionCreationPreNode extends LocalFunctionCreationNode { - LocalFunctionCreationPreNode() { isPostUpdate = false } override string toStringImpl() { result = cfn.toString() } } @@ -419,17 +414,14 @@ module VariableCapture { result.(Flow::ExprNode).getExpr() = [ n.(ExprNode).getControlFlowNode(), - n.(LocalFunctionCreationPreNode).getUnderlyingControlFlowNode() + n.(LocalFunctionCreationNode).getUnderlyingControlFlowNode() ] or result.(Flow::VariableWriteSourceNode).getVariableWrite().getRhs() = n.(ExprNode).getControlFlowNode() or result.(Flow::ExprPostUpdateNode).getExpr() = - [ - n.(PostUpdateNode).getPreUpdateNode().(ExprNode).getControlFlowNode(), - n.(LocalFunctionCreationPostUpdateNode).getUnderlyingControlFlowNode() - ] + [n.(PostUpdateNode).getPreUpdateNode().(ExprNode).getControlFlowNode(),] or result.(Flow::ParameterNode).getParameter().getParameterNode() = n or @@ -767,6 +759,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { VariableCapture::valueStep(nodeFrom, nodeTo) or nodeTo = nodeFrom.(LocalFunctionCreationNode).getAnAccess(true) + or + delegateCreationStep(nodeFrom, nodeTo) ) and model = "" or @@ -1073,7 +1067,7 @@ private module Cached { l = c.getARelevantLocation() } or TDelegateSelfReferenceNode(Callable c) { lambdaCreationExpr(_, c) } or - TLocalFunctionCreationNode(ControlFlow::Nodes::ElementNode cfn, Boolean isPostUpdate) { + TLocalFunctionCreationNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getAstNode() instanceof LocalFunctionStmt } or TYieldReturnNode(ControlFlow::Nodes::ElementNode cfn) { @@ -1150,13 +1144,22 @@ private module Cached { TCapturedVariableContent(VariableCapture::CapturedVariable v) or TDelegateCallArgumentContent(int i) { i = [0 .. max(any(DelegateLikeCall dc).getNumberOfArguments()) - 1] + or + i in [0 .. 1000] // todo + or + // exists(ArgumentPosition apos | + // FlowSummaryImpl::Private::summaryArgumentNode(_, _, apos) and + // i = apos.getPosition() + // ) + i = -1 } or TDelegateCallReturnContent() cached newtype TContentSet = TSingletonContent(Content c) { not c instanceof PropertyContent } or - TPropertyContentSet(Property p) { p.isUnboundDeclaration() } + TPropertyContentSet(Property p) { p.isUnboundDeclaration() } or + TVariableCaptureContentSet() cached newtype TContentApprox = @@ -2600,7 +2603,7 @@ DataFlowType getNodeType(Node n) { or [ n.asExpr().(ControlFlowElement), - n.(LocalFunctionCreationPreNode).getUnderlyingControlFlowNode().getAstNode() + n.(LocalFunctionCreationNode).getUnderlyingControlFlowNode().getAstNode() ] = result.getADelegateCreation() } @@ -2835,16 +2838,6 @@ module PostUpdateNodes { override string toStringImpl() { result = "[post] this" } } - class LocalFunctionCreationPostUpdateNode extends LocalFunctionCreationNode, PostUpdateNode { - LocalFunctionCreationPostUpdateNode() { isPostUpdate = true } - - override LocalFunctionCreationPreNode getPreUpdateNode() { - result = TLocalFunctionCreationNode(cfn, false) - } - - override string toStringImpl() { result = "[post] " + cfn } - } - private class CapturePostUpdateNode extends PostUpdateNode, CaptureNode { private CaptureNode pre; @@ -2908,7 +2901,11 @@ int accessPathLimit() { result = 5 } * Holds if access paths with `c` at their head always should be tracked at high * precision. This disables adaptive access path precision for such access paths. */ -predicate forceHighPrecision(Content c) { c instanceof ElementContent } +predicate forceHighPrecision(Content c) { + c instanceof ElementContent or + c instanceof DelegateCallArgumentContent or + c instanceof DelegateCallReturnContent +} private predicate lambdaCreationExpr(ControlFlowElement creation, Callable c) { c = @@ -2924,10 +2921,42 @@ class LambdaCallKind = Unit; /** Holds if `creation` is an expression that creates a delegate for `c`. */ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { - lambdaCreationExpr(creation.asExpr(), c.asCallable(_)) and + ( + lambdaCreationExpr(creation.asExpr(), c.asCallable(_)) + or + creation.(LocalFunctionCreationNode).getFunction() = c.asCallable(_) + ) and + exists(kind) +} + +/** Holds if `creation` is an expression that creates a delegate for `c`. */ +predicate lambdaCreation( + Node creation, LambdaCallKind kind, DataFlowCallable c, DataFlowCall synthCall +) { + lambdaCreation(creation, kind, c) and + synthCall = TLambdaSynthCall(creation) +} + +Content getLambdaReturnContent(LambdaCallKind kind, ReturnKind rk) { + result = TDelegateCallReturnContent() and + exists(kind) and + rk = TNormalReturnKind() +} + +Content getLambdaArgumentContent(LambdaCallKind kind, ArgumentPosition pos) { + ( + result = TDelegateCallArgumentContent(pos.getPosition()) + or + result = TDelegateCallArgumentContent(-1) and + pos.isDelegateSelf() + ) and exists(kind) } +predicate isLambdaInstanceParameter(ParameterNode p) { p instanceof DelegateSelfReferenceNode } + +predicate isVariableCaptureContentSet(ContentSet c) { c.isCapturedVariable() } + private predicate isLocalFunctionCallReceiver( LocalFunctionCall call, LocalFunctionAccess receiver, LocalFunction f ) { @@ -2973,9 +3002,7 @@ private predicate lambdaCallExpr(DataFlowCall call, ControlFlow::Node receiver) /** Holds if `call` is a lambda call where `receiver` is the lambda expression. */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( - lambdaCallExpr(call, receiver.(ExprNode).getControlFlowNode()) and - // local function calls can be resolved directly without a flow analysis - not call.getControlFlowNode().getAstNode() instanceof LocalFunctionCall + lambdaCallExpr(call, receiver.(ExprNode).getControlFlowNode()) //and or receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() ) and @@ -3052,6 +3079,8 @@ predicate allowParameterReturnInSelf(ParameterNode p) { or VariableCapture::Flow::heuristicAllowInstanceParameterReturnInSelf(p.(DelegateSelfReferenceNode) .getCallable()) + or + p.getType() instanceof SystemLinqExpressions::DelegateExtType } /** An approximated `Content`. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index c5460652746b..cb0a6ba5eeeb 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -3,7 +3,6 @@ private import DataFlowDispatch private import DataFlowPrivate private import semmle.code.csharp.controlflow.Guards private import semmle.code.csharp.Unification -private import semmle.code.csharp.frameworks.system.linq.Expressions /** * An element, viewed as a node in a data flow graph. Either an expression @@ -324,6 +323,8 @@ class ContentSet extends TContentSet { */ predicate isProperty(Property p) { this = TPropertyContentSet(p) } + predicate isCapturedVariable() { this = TVariableCaptureContentSet() } + /** * Holds if this content set represents the `i`th argument of a delegate call. */ @@ -362,6 +363,9 @@ class ContentSet extends TContentSet { or overridesOrImplementsSourceDecl(p1, p2) ) + or + this.isCapturedVariable() and + result instanceof CapturedVariableContent } /** Gets a textual representation of this content set. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index d777566a336a..891950c7a9de 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -4,7 +4,6 @@ private import csharp private import semmle.code.csharp.commons.QualifiedName -private import semmle.code.csharp.frameworks.system.linq.Expressions private import codeql.dataflow.internal.FlowSummaryImpl private import codeql.dataflow.internal.AccessPathSyntax as AccessPath private import DataFlowImplSpecific as DataFlowImplSpecific diff --git a/csharp/ql/test/library-tests/arguments/lambdaArgument.expected b/csharp/ql/test/library-tests/arguments/lambdaArgument.expected index 0601d76cff2c..e69de29bb2d1 100644 --- a/csharp/ql/test/library-tests/arguments/lambdaArgument.expected +++ b/csharp/ql/test/library-tests/arguments/lambdaArgument.expected @@ -1,11 +0,0 @@ -| lambdas.cs:8:9:8:13 | delegate call | lambdas.cs:7:23:7:23 | x | lambdas.cs:8:12:8:12 | 1 | -| lambdas.cs:11:9:11:16 | delegate call | lambdas.cs:10:23:10:23 | x | lambdas.cs:11:12:11:12 | 2 | -| lambdas.cs:11:9:11:16 | delegate call | lambdas.cs:10:30:10:30 | y | lambdas.cs:11:15:11:15 | 3 | -| lambdas.cs:12:9:12:13 | delegate call | lambdas.cs:10:23:10:23 | x | lambdas.cs:12:12:12:12 | 4 | -| lambdas.cs:13:9:13:16 | delegate call | lambdas.cs:10:23:10:23 | x | lambdas.cs:13:12:13:12 | 5 | -| lambdas.cs:13:9:13:16 | delegate call | lambdas.cs:10:30:10:30 | y | lambdas.cs:13:15:13:15 | 6 | -| lambdas.cs:17:9:17:19 | delegate call | lambdas.cs:15:32:15:32 | x | lambdas.cs:17:12:17:12 | 7 | -| lambdas.cs:17:9:17:19 | delegate call | lambdas.cs:15:32:15:32 | x | lambdas.cs:17:15:17:15 | 8 | -| lambdas.cs:17:9:17:19 | delegate call | lambdas.cs:15:32:15:32 | x | lambdas.cs:17:18:17:18 | 9 | -| lambdas.cs:25:9:25:23 | delegate call | lambdas.cs:24:31:24:31 | x | lambdas.cs:25:22:25:22 | 5 | -| lambdas.cs:25:9:25:23 | delegate call | lambdas.cs:24:38:24:38 | y | lambdas.cs:25:16:25:16 | 4 | diff --git a/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected b/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected index 3873d436892d..c767f441bcfa 100644 --- a/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected @@ -18,11 +18,21 @@ edges | CSharp7.cs:175:16:175:18 | access to local variable src : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | provenance | | | CSharp7.cs:175:16:175:18 | access to local variable src : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | provenance | | | CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:175:16:175:18 | access to local variable src : String | provenance | | +| CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | provenance | | | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | provenance | | +| CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | provenance | | | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | provenance | | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | provenance | | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | provenance | | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | provenance | | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | provenance | | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | nodes | CSharp7.cs:39:9:39:9 | access to parameter x : String | semmle.label | access to parameter x : String | @@ -47,18 +57,26 @@ nodes | CSharp7.cs:175:16:175:18 | access to local variable src : String | semmle.label | access to local variable src : String | | CSharp7.cs:175:22:175:30 | "tainted" | semmle.label | "tainted" | | CSharp7.cs:175:22:175:30 | "tainted" : String | semmle.label | "tainted" : String | +| CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | semmle.label | g(...) : g [delegate return] : String | | CSharp7.cs:177:25:177:25 | s : String | semmle.label | s : String | | CSharp7.cs:177:31:177:31 | access to parameter s : String | semmle.label | access to parameter s : String | +| CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | semmle.label | h(...) : h [delegate return] : String | | CSharp7.cs:178:25:178:25 | s : String | semmle.label | s : String | | CSharp7.cs:178:37:178:37 | access to parameter s : String | semmle.label | access to parameter s : String | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | semmle.label | [post] access to local function g : null [delegate argument at position 0] : String | +| CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | semmle.label | access to local function g : g [delegate return] : String | | CSharp7.cs:181:21:181:26 | call to local function g | semmle.label | call to local function g | | CSharp7.cs:181:23:181:25 | access to local variable src : String | semmle.label | access to local variable src : String | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | semmle.label | [post] access to local function h : null [delegate argument at position 0] : String | +| CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | semmle.label | access to local function h : h [delegate return] : String | | CSharp7.cs:182:21:182:26 | call to local function h | semmle.label | call to local function h | | CSharp7.cs:182:23:182:25 | access to local variable src : String | semmle.label | access to local variable src : String | subpaths | CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:9 | access to parameter y : String | CSharp7.cs:55:30:55:31 | String t4 : String | | CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | CSharp7.cs:181:21:181:26 | call to local function g | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | CSharp7.cs:182:21:182:26 | call to local function h | #select | CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | $@ | CSharp7.cs:51:18:51:19 | access to local variable t1 | access to local variable t1 | diff --git a/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected b/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected index 7b7a73b3c709..d7233c498124 100644 --- a/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected +++ b/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected @@ -19,17 +19,37 @@ edges | CSharp7.cs:175:16:175:18 | access to local variable src : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | provenance | | | CSharp7.cs:175:16:175:18 | access to local variable src : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | provenance | | | CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:175:16:175:18 | access to local variable src : String | provenance | | +| CSharp7.cs:176:9:176:40 | f(...) : f [delegate return] : String | CSharp7.cs:180:21:180:21 | access to local function f : f [delegate return] : String | provenance | | | CSharp7.cs:176:25:176:25 | s : String | CSharp7.cs:176:33:176:33 | access to parameter s : String | provenance | | +| CSharp7.cs:176:31:176:31 | access to local function g : g [delegate return] : String | CSharp7.cs:176:31:176:34 | call to local function g : String | provenance | | | CSharp7.cs:176:31:176:34 | call to local function g : String | CSharp7.cs:176:31:176:39 | ... + ... : String | provenance | | +| CSharp7.cs:176:31:176:34 | call to local function g : String | CSharp7.cs:176:31:176:39 | ... + ... : String | provenance | | +| CSharp7.cs:176:31:176:39 | ... + ... : String | CSharp7.cs:176:9:176:40 | f(...) : f [delegate return] : String | provenance | | +| CSharp7.cs:176:31:176:39 | ... + ... : String | CSharp7.cs:180:21:180:26 | call to local function f | provenance | | | CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:176:31:176:34 | call to local function g : String | provenance | | | CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | CSharp7.cs:176:31:176:31 | access to local function g : g [delegate return] : String | provenance | | +| CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | provenance | | | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | provenance | | +| CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | provenance | | | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | provenance | | +| CSharp7.cs:180:21:180:21 | [post] access to local function f : null [delegate argument at position 0] : String | CSharp7.cs:176:9:176:40 | f(...) : f [delegate return] : String | provenance | | +| CSharp7.cs:180:21:180:21 | [post] access to local function f : null [delegate argument at position 0] : String | CSharp7.cs:176:25:176:25 | s : String | provenance | | +| CSharp7.cs:180:21:180:21 | access to local function f : f [delegate return] : String | CSharp7.cs:180:21:180:26 | call to local function f | provenance | | | CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:176:25:176:25 | s : String | provenance | | +| CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:180:21:180:21 | [post] access to local function f : null [delegate argument at position 0] : String | provenance | | | CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:180:21:180:26 | call to local function f | provenance | | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | provenance | | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | provenance | | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | provenance | | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | provenance | | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | nodes | CSharp7.cs:39:9:39:9 | access to parameter x : String | semmle.label | access to parameter x : String | @@ -54,26 +74,41 @@ nodes | CSharp7.cs:175:16:175:18 | access to local variable src : String | semmle.label | access to local variable src : String | | CSharp7.cs:175:22:175:30 | "tainted" | semmle.label | "tainted" | | CSharp7.cs:175:22:175:30 | "tainted" : String | semmle.label | "tainted" : String | +| CSharp7.cs:176:9:176:40 | f(...) : f [delegate return] : String | semmle.label | f(...) : f [delegate return] : String | | CSharp7.cs:176:25:176:25 | s : String | semmle.label | s : String | +| CSharp7.cs:176:31:176:31 | access to local function g : g [delegate return] : String | semmle.label | access to local function g : g [delegate return] : String | +| CSharp7.cs:176:31:176:34 | call to local function g : String | semmle.label | call to local function g : String | | CSharp7.cs:176:31:176:34 | call to local function g : String | semmle.label | call to local function g : String | | CSharp7.cs:176:31:176:39 | ... + ... : String | semmle.label | ... + ... : String | +| CSharp7.cs:176:31:176:39 | ... + ... : String | semmle.label | ... + ... : String | | CSharp7.cs:176:33:176:33 | access to parameter s : String | semmle.label | access to parameter s : String | +| CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | semmle.label | g(...) : g [delegate return] : String | | CSharp7.cs:177:25:177:25 | s : String | semmle.label | s : String | | CSharp7.cs:177:31:177:31 | access to parameter s : String | semmle.label | access to parameter s : String | +| CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | semmle.label | h(...) : h [delegate return] : String | | CSharp7.cs:178:25:178:25 | s : String | semmle.label | s : String | | CSharp7.cs:178:37:178:37 | access to parameter s : String | semmle.label | access to parameter s : String | +| CSharp7.cs:180:21:180:21 | [post] access to local function f : null [delegate argument at position 0] : String | semmle.label | [post] access to local function f : null [delegate argument at position 0] : String | +| CSharp7.cs:180:21:180:21 | access to local function f : f [delegate return] : String | semmle.label | access to local function f : f [delegate return] : String | | CSharp7.cs:180:21:180:26 | call to local function f | semmle.label | call to local function f | | CSharp7.cs:180:23:180:25 | access to local variable src : String | semmle.label | access to local variable src : String | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | semmle.label | [post] access to local function g : null [delegate argument at position 0] : String | +| CSharp7.cs:181:21:181:21 | access to local function g : g [delegate return] : String | semmle.label | access to local function g : g [delegate return] : String | | CSharp7.cs:181:21:181:26 | call to local function g | semmle.label | call to local function g | | CSharp7.cs:181:23:181:25 | access to local variable src : String | semmle.label | access to local variable src : String | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | semmle.label | [post] access to local function h : null [delegate argument at position 0] : String | +| CSharp7.cs:182:21:182:21 | access to local function h : h [delegate return] : String | semmle.label | access to local function h : h [delegate return] : String | | CSharp7.cs:182:21:182:26 | call to local function h | semmle.label | call to local function h | | CSharp7.cs:182:23:182:25 | access to local variable src : String | semmle.label | access to local variable src : String | subpaths | CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:9 | access to parameter y : String | CSharp7.cs:55:30:55:31 | String t4 : String | | CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | | CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | CSharp7.cs:176:31:176:34 | call to local function g : String | +| CSharp7.cs:180:21:180:21 | [post] access to local function f : null [delegate argument at position 0] : String | CSharp7.cs:176:25:176:25 | s : String | CSharp7.cs:176:31:176:39 | ... + ... : String | CSharp7.cs:176:9:176:40 | f(...) : f [delegate return] : String | | CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:176:25:176:25 | s : String | CSharp7.cs:176:31:176:39 | ... + ... : String | CSharp7.cs:180:21:180:26 | call to local function f | +| CSharp7.cs:181:21:181:21 | [post] access to local function g : null [delegate argument at position 0] : String | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | CSharp7.cs:177:9:177:32 | g(...) : g [delegate return] : String | | CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | CSharp7.cs:181:21:181:26 | call to local function g | +| CSharp7.cs:182:21:182:21 | [post] access to local function h : null [delegate argument at position 0] : String | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | CSharp7.cs:178:9:178:40 | h(...) : h [delegate return] : String | | CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | CSharp7.cs:182:21:182:26 | call to local function h | #select | CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | $@ | CSharp7.cs:51:18:51:19 | access to local variable t1 | access to local variable t1 | diff --git a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/DataFlow.expected b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/DataFlow.expected index 6182b05a9a5b..31143bd405d9 100644 --- a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/DataFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/DataFlow.expected @@ -13,9 +13,6 @@ | CallableReturnsArg.cs:71:31:71:36 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:76:33:76:38 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:81:22:81:27 | (...) => ... | 0 | -1 | -| CallableReturnsArg.cs:90:21:90:35 | ApplyWrapper`1 | 2 | -1 | -| CallableReturnsArg.cs:95:26:95:46 | ApplyNonPreservingFP1 | 0 | -1 | | CallableReturnsArg.cs:97:40:97:45 | (...) => ... | 0 | -1 | -| CallableReturnsArg.cs:100:26:100:46 | ApplyNonPreservingFP2 | 0 | -1 | | CallableReturnsArg.cs:102:29:102:34 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:112:26:112:40 | ReturnNoBarrier | 0 | -1 | diff --git a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/TaintTracking.expected b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/TaintTracking.expected index 802580267723..93dd1f77c9d8 100644 --- a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/TaintTracking.expected +++ b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/TaintTracking.expected @@ -17,9 +17,6 @@ | CallableReturnsArg.cs:71:31:71:36 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:76:33:76:38 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:81:22:81:27 | (...) => ... | 0 | -1 | -| CallableReturnsArg.cs:90:21:90:35 | ApplyWrapper`1 | 2 | -1 | -| CallableReturnsArg.cs:95:26:95:46 | ApplyNonPreservingFP1 | 0 | -1 | | CallableReturnsArg.cs:97:40:97:45 | (...) => ... | 0 | -1 | -| CallableReturnsArg.cs:100:26:100:46 | ApplyNonPreservingFP2 | 0 | -1 | | CallableReturnsArg.cs:102:29:102:34 | (...) => ... | 0 | -1 | | CallableReturnsArg.cs:112:26:112:40 | ReturnNoBarrier | 0 | -1 | diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index 18155300ff0f..fd4d9b73e075 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -249,8 +249,9 @@ edges | CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | provenance | | | CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | provenance | MaD:3 | | CollectionFlow.cs:308:43:308:43 | access to local variable a : A | CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | provenance | MaD:13 | -| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | provenance | MaD:18 | +| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:21:313:9 | [post] (...) => ... : Func [delegate argument at position 0, property Key] : A | provenance | MaD:18 | | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:309:21:313:9 | [post] (...) => ... : Func [delegate argument at position 0, property Key] : A | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | provenance | | | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:24 | access to property Key | provenance | | | CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:55:328:61 | access to parameter element : A | provenance | | | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | provenance | | @@ -560,6 +561,7 @@ nodes | CollectionFlow.cs:308:43:308:43 | access to local variable a : A | semmle.label | access to local variable a : A | | CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | semmle.label | access to local variable list : List [element, property Key] : A | | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | semmle.label | kvp : KeyValuePair [property Key] : A | +| CollectionFlow.cs:309:21:313:9 | [post] (...) => ... : Func [delegate argument at position 0, property Key] : A | semmle.label | [post] (...) => ... : Func [delegate argument at position 0, property Key] : A | | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | semmle.label | access to parameter kvp : KeyValuePair [property Key] : A | | CollectionFlow.cs:311:18:311:24 | access to property Key | semmle.label | access to property Key | | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | semmle.label | array [Return] : A[] [element] : A | diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index c16036e751c4..5d24e5f87efd 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -1,63 +1,2 @@ delegateCall -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:5:10:5:11 | M1 | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:16:12:16:19 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:27:12:27:19 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:98:9:98:37 | LocalFunction | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:119:18:119:27 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:125:15:125:24 | (...) => ... | -| DelegateFlow.cs:11:9:11:12 | delegate call | DelegateFlow.cs:10:13:10:20 | (...) => ... | -| DelegateFlow.cs:33:9:33:13 | delegate call | DelegateFlow.cs:38:12:38:25 | (...) => ... | -| DelegateFlow.cs:38:19:38:22 | delegate call | DelegateFlow.cs:5:10:5:11 | M1 | -| DelegateFlow.cs:44:15:44:22 | delegate call | DelegateFlow.cs:43:22:43:29 | (...) => ... | -| DelegateFlow.cs:57:9:57:11 | delegate call | DelegateFlow.cs:53:34:53:47 | (...) => ... | -| DelegateFlow.cs:57:9:57:14 | delegate call | DelegateFlow.cs:53:40:53:47 | (...) => ... | -| DelegateFlow.cs:67:9:67:16 | delegate call | DelegateFlow.cs:62:16:62:23 | (...) => ... | -| DelegateFlow.cs:77:9:77:15 | delegate call | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:77:9:77:15 | delegate call | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:84:9:84:15 | delegate call | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:84:9:84:15 | delegate call | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:74:17:74:19 | M12 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:93:13:93:21 | (...) => ... | -| DelegateFlow.cs:114:9:114:16 | function pointer call | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:125:9:125:25 | function pointer call | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:131:17:131:25 | (...) => ... | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:29:135:37 | (...) => ... | -| DelegateFlow.cs:153:9:153:21 | delegate call | DelegateFlow.cs:149:13:149:20 | (...) => ... | -| DelegateFlow.cs:154:9:154:21 | delegate call | DelegateFlow.cs:150:13:150:20 | (...) => ... | -| DelegateFlow.cs:155:9:155:16 | delegate call | DelegateFlow.cs:149:13:149:20 | (...) => ... | -| DelegateFlow.cs:156:9:156:16 | delegate call | DelegateFlow.cs:150:13:150:20 | (...) => ... | viableLambda -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:16:9:16:20 | call to method M2 | DelegateFlow.cs:16:12:16:19 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:17:9:17:14 | call to method M2 | DelegateFlow.cs:5:10:5:11 | M1 | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:22:9:22:13 | call to method M2 | DelegateFlow.cs:5:10:5:11 | M1 | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:22:9:22:13 | call to method M2 | DelegateFlow.cs:27:12:27:19 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:99:9:99:25 | call to method M2 | DelegateFlow.cs:98:9:98:37 | LocalFunction | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:114:9:114:16 | function pointer call | DelegateFlow.cs:119:18:119:27 | (...) => ... | -| DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:125:9:125:25 | function pointer call | DelegateFlow.cs:125:15:125:24 | (...) => ... | -| DelegateFlow.cs:11:9:11:12 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:10:13:10:20 | (...) => ... | -| DelegateFlow.cs:33:9:33:13 | delegate call | DelegateFlow.cs:38:9:38:30 | call to method M6 | DelegateFlow.cs:38:12:38:25 | (...) => ... | -| DelegateFlow.cs:38:19:38:22 | delegate call | DelegateFlow.cs:33:9:33:13 | delegate call | DelegateFlow.cs:5:10:5:11 | M1 | -| DelegateFlow.cs:44:15:44:22 | delegate call | DelegateFlow.cs:50:9:50:14 | dynamic access to member Prop | DelegateFlow.cs:43:22:43:29 | (...) => ... | -| DelegateFlow.cs:57:9:57:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:53:34:53:47 | (...) => ... | -| DelegateFlow.cs:57:9:57:14 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:53:40:53:47 | (...) => ... | -| DelegateFlow.cs:67:9:67:16 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:62:16:62:23 | (...) => ... | -| DelegateFlow.cs:77:9:77:15 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:77:9:77:15 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:84:9:84:15 | delegate call | DelegateFlow.cs:78:9:78:15 | call to method M13 | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:84:9:84:15 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:90:9:90:31 | call to local function M14 | DelegateFlow.cs:55:10:55:11 | M9 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:91:9:91:48 | call to local function M14 | DelegateFlow.cs:65:10:65:12 | M11 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:92:9:92:16 | call to local function M14 | DelegateFlow.cs:74:17:74:19 | M12 | -| DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:93:9:93:22 | call to local function M14 | DelegateFlow.cs:93:13:93:21 | (...) => ... | -| DelegateFlow.cs:114:9:114:16 | function pointer call | DelegateFlow.cs:119:9:119:28 | call to method M16 | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:125:9:125:25 | function pointer call | file://:0:0:0:0 | (none) | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:41 | call to method M19 | DelegateFlow.cs:135:29:135:37 | (...) => ... | -| DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:25 | (...) => ... | -| DelegateFlow.cs:153:9:153:21 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:149:13:149:20 | (...) => ... | -| DelegateFlow.cs:154:9:154:21 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:150:13:150:20 | (...) => ... | -| DelegateFlow.cs:155:9:155:16 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:149:13:149:20 | (...) => ... | -| DelegateFlow.cs:156:9:156:16 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:150:13:150:20 | (...) => ... | -| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | -| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index 7254208be186..7d2c0d011d27 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -66,27 +66,33 @@ edges | ExternalFlow.cs:54:36:54:47 | object creation of type Object : Object | ExternalFlow.cs:54:13:54:16 | [post] this access : D [element] : Object | provenance | MaD:12 | | ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | ExternalFlow.cs:55:18:55:41 | call to method StepElementGetter | provenance | MaD:11 | | ExternalFlow.cs:60:35:60:35 | o : Object | ExternalFlow.cs:60:47:60:47 | access to parameter o | provenance | | -| ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:35:60:35 | o : Object | provenance | MaD:3 | +| ExternalFlow.cs:60:35:60:61 | [post] (...) => ... : Func [delegate argument at position 0] : Object | ExternalFlow.cs:60:35:60:35 | o : Object | provenance | | +| ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:35:60:61 | [post] (...) => ... : Func [delegate argument at position 0] : Object | provenance | MaD:3 | | ExternalFlow.cs:65:17:65:17 | access to local variable o : Object | ExternalFlow.cs:66:18:66:18 | access to local variable o | provenance | | | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | ExternalFlow.cs:65:17:65:17 | access to local variable o : Object | provenance | | -| ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | provenance | MaD:2 | +| ExternalFlow.cs:65:40:65:56 | (...) => ... : (...) => ... [delegate return] : Object | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | provenance | MaD:2 | +| ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:65:40:65:56 | (...) => ... : (...) => ... [delegate return] : Object | provenance | | | ExternalFlow.cs:71:17:71:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | provenance | | | ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:71:17:71:20 | access to local variable objs : null [element] : Object | provenance | | | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | provenance | | -| ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:72:23:72:23 | o : Object | provenance | MaD:4 | +| ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:72:23:72:49 | [post] (...) => ... : Func [delegate argument at position 0] : Object | provenance | MaD:4 | | ExternalFlow.cs:72:23:72:23 | o : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | provenance | | +| ExternalFlow.cs:72:23:72:49 | [post] (...) => ... : Func [delegate argument at position 0] : Object | ExternalFlow.cs:72:23:72:23 | o : Object | provenance | | | ExternalFlow.cs:77:17:77:20 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | provenance | | | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | ExternalFlow.cs:77:17:77:20 | access to local variable objs : T[] [element] : Object | provenance | | -| ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | provenance | MaD:5 | +| ExternalFlow.cs:77:41:77:57 | (...) => ... : (...) => ... [delegate return] : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | provenance | MaD:5 | +| ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:41:77:57 | (...) => ... : (...) => ... [delegate return] : Object | provenance | | | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element | provenance | | | ExternalFlow.cs:83:17:83:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | provenance | | | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:83:17:83:20 | access to local variable objs : null [element] : Object | provenance | | | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | provenance | | | ExternalFlow.cs:84:17:84:21 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | provenance | | | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | ExternalFlow.cs:84:17:84:21 | access to local variable objs2 : T[] [element] : Object | provenance | | -| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | provenance | MaD:4 | -| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | provenance | MaD:4 | +| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:40 | [post] (...) => ... : Func [delegate argument at position 0] : Object | provenance | MaD:4 | | ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | provenance | | +| ExternalFlow.cs:84:35:84:40 | (...) => ... : (...) => ... [delegate return] : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | provenance | MaD:5 | +| ExternalFlow.cs:84:35:84:40 | [post] (...) => ... : Func [delegate argument at position 0] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | provenance | | +| ExternalFlow.cs:84:35:84:40 | [post] (...) => ... : Func [delegate argument at position 0] : Object | ExternalFlow.cs:84:35:84:40 | (...) => ... : (...) => ... [delegate return] : Object | provenance | | | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:25 | access to array element | provenance | | | ExternalFlow.cs:90:17:90:17 | access to local variable s : String | ExternalFlow.cs:91:19:91:19 | access to local variable s : String | provenance | | | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:90:17:90:17 | access to local variable s : String | provenance | | @@ -96,7 +102,8 @@ edges | ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | provenance | | | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | provenance | | | ExternalFlow.cs:100:20:100:20 | d : Object | ExternalFlow.cs:102:22:102:22 | access to parameter d | provenance | | -| ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:100:20:100:20 | d : Object | provenance | MaD:1 | +| ExternalFlow.cs:100:20:103:13 | [post] (...) => ... : Action [delegate argument at position 0] : Object | ExternalFlow.cs:100:20:100:20 | d : Object | provenance | | +| ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:100:20:103:13 | [post] (...) => ... : Action [delegate argument at position 0] : Object | provenance | MaD:1 | | ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:25 | access to field Field | provenance | | | ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | ExternalFlow.cs:112:18:112:18 | access to local variable f : F [field MyField] : Object | provenance | | | ExternalFlow.cs:111:24:111:35 | object creation of type Object : Object | ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | provenance | MaD:19 | @@ -191,10 +198,12 @@ nodes | ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | semmle.label | this access : D [element] : Object | | ExternalFlow.cs:55:18:55:41 | call to method StepElementGetter | semmle.label | call to method StepElementGetter | | ExternalFlow.cs:60:35:60:35 | o : Object | semmle.label | o : Object | +| ExternalFlow.cs:60:35:60:61 | [post] (...) => ... : Func [delegate argument at position 0] : Object | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : Object | | ExternalFlow.cs:60:47:60:47 | access to parameter o | semmle.label | access to parameter o | | ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:65:17:65:17 | access to local variable o : Object | semmle.label | access to local variable o : Object | | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | semmle.label | call to method Apply : Object | +| ExternalFlow.cs:65:40:65:56 | (...) => ... : (...) => ... [delegate return] : Object | semmle.label | (...) => ... : (...) => ... [delegate return] : Object | | ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:66:18:66:18 | access to local variable o | semmle.label | access to local variable o | | ExternalFlow.cs:71:17:71:20 | access to local variable objs : null [element] : Object | semmle.label | access to local variable objs : null [element] : Object | @@ -202,9 +211,11 @@ nodes | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | semmle.label | access to local variable objs : null [element] : Object | | ExternalFlow.cs:72:23:72:23 | o : Object | semmle.label | o : Object | +| ExternalFlow.cs:72:23:72:49 | [post] (...) => ... : Func [delegate argument at position 0] : Object | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : Object | | ExternalFlow.cs:72:35:72:35 | access to parameter o | semmle.label | access to parameter o | | ExternalFlow.cs:77:17:77:20 | access to local variable objs : T[] [element] : Object | semmle.label | access to local variable objs : T[] [element] : Object | | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | +| ExternalFlow.cs:77:41:77:57 | (...) => ... : (...) => ... [delegate return] : Object | semmle.label | (...) => ... : (...) => ... [delegate return] : Object | | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | semmle.label | access to local variable objs : T[] [element] : Object | | ExternalFlow.cs:78:18:78:24 | access to array element | semmle.label | access to array element | @@ -215,6 +226,8 @@ nodes | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | semmle.label | access to local variable objs : null [element] : Object | | ExternalFlow.cs:84:35:84:35 | o : Object | semmle.label | o : Object | +| ExternalFlow.cs:84:35:84:40 | (...) => ... : (...) => ... [delegate return] : Object | semmle.label | (...) => ... : (...) => ... [delegate return] : Object | +| ExternalFlow.cs:84:35:84:40 | [post] (...) => ... : Func [delegate argument at position 0] : Object | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : Object | | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | semmle.label | access to parameter o : Object | | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | semmle.label | access to local variable objs2 : T[] [element] : Object | | ExternalFlow.cs:85:18:85:25 | access to array element | semmle.label | access to array element | @@ -226,6 +239,7 @@ nodes | ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | semmle.label | [post] access to local variable d1 : D [field Field] : Object | | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:100:20:100:20 | d : Object | semmle.label | d : Object | +| ExternalFlow.cs:100:20:103:13 | [post] (...) => ... : Action [delegate argument at position 0] : Object | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : Object | | ExternalFlow.cs:102:22:102:22 | access to parameter d | semmle.label | access to parameter d | | ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | semmle.label | access to local variable d1 : D [field Field] : Object | | ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | semmle.label | access to local variable d1 : D [field Field] : Object | @@ -293,7 +307,7 @@ nodes | ExternalFlow.cs:345:18:345:18 | access to local variable l : Library [synthetic X] : Object | semmle.label | access to local variable l : Library [synthetic X] : Object | | ExternalFlow.cs:345:18:345:29 | call to method GetValue | semmle.label | call to method GetValue | subpaths -| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | +| ExternalFlow.cs:84:35:84:40 | [post] (...) => ... : Func [delegate argument at position 0] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | ExternalFlow.cs:84:35:84:40 | (...) => ... : (...) => ... [delegate return] : Object | invalidModelRow #select | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | $@ | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | object creation of type Object : Object | diff --git a/csharp/ql/test/library-tests/dataflow/functionpointers/FunctionPointerFlow.expected b/csharp/ql/test/library-tests/dataflow/functionpointers/FunctionPointerFlow.expected index a25f9c145397..714997793164 100644 --- a/csharp/ql/test/library-tests/dataflow/functionpointers/FunctionPointerFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/functionpointers/FunctionPointerFlow.expected @@ -1,20 +1,2 @@ fptrCall -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:5:24:5:27 | Log1 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:6:24:6:27 | Log2 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:10:24:10:27 | Log6 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:46:9:46:44 | LocalFunction | -| FunctionPointerFlow.cs:16:9:16:12 | function pointer call | FunctionPointerFlow.cs:7:24:7:27 | Log3 | -| FunctionPointerFlow.cs:41:9:41:15 | function pointer call | FunctionPointerFlow.cs:8:24:8:27 | Log4 | -| FunctionPointerFlow.cs:54:9:54:16 | function pointer call | FunctionPointerFlow.cs:9:24:9:27 | Log5 | -| FunctionPointerFlow.cs:59:9:59:13 | function pointer call | FunctionPointerFlow.cs:24:24:24:25 | M4 | -| FunctionPointerFlow.cs:69:9:69:13 | function pointer call | FunctionPointerFlow.cs:72:24:72:26 | M17 | fptrCallContext -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:21:9:21:17 | call to method M2 | FunctionPointerFlow.cs:5:24:5:27 | Log1 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:26:9:26:13 | call to method M2 | FunctionPointerFlow.cs:6:24:6:27 | Log2 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:26:9:26:13 | call to method M2 | FunctionPointerFlow.cs:10:24:10:27 | Log6 | -| FunctionPointerFlow.cs:14:9:14:12 | function pointer call | FunctionPointerFlow.cs:47:9:47:26 | call to method M2 | FunctionPointerFlow.cs:46:9:46:44 | LocalFunction | -| FunctionPointerFlow.cs:16:9:16:12 | function pointer call | file://:0:0:0:0 | (none) | FunctionPointerFlow.cs:7:24:7:27 | Log3 | -| FunctionPointerFlow.cs:41:9:41:15 | function pointer call | file://:0:0:0:0 | (none) | FunctionPointerFlow.cs:8:24:8:27 | Log4 | -| FunctionPointerFlow.cs:54:9:54:16 | function pointer call | file://:0:0:0:0 | (none) | FunctionPointerFlow.cs:9:24:9:27 | Log5 | -| FunctionPointerFlow.cs:59:9:59:13 | function pointer call | FunctionPointerFlow.cs:64:9:64:23 | call to method M10 | FunctionPointerFlow.cs:24:24:24:25 | M4 | -| FunctionPointerFlow.cs:69:9:69:13 | function pointer call | FunctionPointerFlow.cs:81:9:81:29 | call to method M16 | FunctionPointerFlow.cs:72:24:72:26 | M17 | diff --git a/csharp/ql/test/library-tests/dataflow/global/Common.qll b/csharp/ql/test/library-tests/dataflow/global/Common.qll index b92e04992753..82ad0cd887c2 100644 --- a/csharp/ql/test/library-tests/dataflow/global/Common.qll +++ b/csharp/ql/test/library-tests/dataflow/global/Common.qll @@ -2,8 +2,9 @@ import csharp module FlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source.asExpr().(StringLiteral).getValue() = "taint source" + source.asExpr().(StringLiteral).getValue() = "taint source" //and or + // source.getLocation().getStartLine() = 81 source.asParameter().hasName("tainted") } @@ -13,6 +14,7 @@ module FlowConfig implements DataFlow::ConfigSig { mc.getAnArgument() = sink.asExpr() ) } + // predicate includeHiddenNodes() { any() } } module Flow = DataFlow::Global; diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected index 3180b00f2059..89a6842b251d 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected @@ -12,8 +12,8 @@ | Capture.cs:163:15:163:20 | access to local variable sink36 | | Capture.cs:171:15:171:20 | access to local variable sink37 | | Capture.cs:197:15:197:20 | access to local variable sink38 | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | | Capture.cs:206:19:206:19 | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | | Capture.cs:231:19:231:19 | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | | Capture.cs:246:19:246:25 | access to field Field | @@ -40,6 +40,7 @@ | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | @@ -53,6 +54,12 @@ | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | @@ -65,6 +72,7 @@ | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index 74c1c62de1fe..bb03a13b6b98 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -5,149 +5,454 @@ models | 4 | Summary: System.Linq; Enumerable; false; Select; (System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].ReturnValue; ReturnValue.Element; value; manual | | 5 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[0].Element; Argument[2].Parameter[0]; value; manual | | 6 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].Element; Argument[2].Parameter[1]; value; manual | -| 7 | Summary: System.Linq; Queryable; false; AsQueryable; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue.Element; value; manual | -| 8 | Summary: System.Linq; Queryable; false; First; (System.Linq.IQueryable); ; Argument[0].Element; ReturnValue; value; manual | -| 9 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | -| 10 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable+ConfiguredTaskAwaiter; false; GetResult; (); ; Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task`1.Result]; ReturnValue; value; manual | -| 11 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable; false; GetAwaiter; (); ; Argument[this].SyntheticField[m_configuredTaskAwaiter]; ReturnValue; value; manual | -| 12 | Summary: System.Threading.Tasks; Task; false; Run; (System.Func); ; Argument[0].ReturnValue; ReturnValue.Property[System.Threading.Tasks.Task`1.Result]; value; manual | -| 13 | Summary: System.Threading.Tasks; Task; false; ConfigureAwait; (System.Boolean); ; Argument[this]; ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable]; value; manual | -| 14 | Summary: System; Lazy; false; Lazy; (System.Func); ; Argument[0].ReturnValue; Argument[this].Property[System.Lazy`1.Value]; value; manual | +| 7 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[2].ReturnValue; ReturnValue.Element; value; manual | +| 8 | Summary: System.Linq; Queryable; false; AsQueryable; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue.Element; value; manual | +| 9 | Summary: System.Linq; Queryable; false; First; (System.Linq.IQueryable); ; Argument[0].Element; ReturnValue; value; manual | +| 10 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | +| 11 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[1].ReturnValue; ReturnValue.Element; value; manual | +| 12 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable+ConfiguredTaskAwaiter; false; GetResult; (); ; Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task`1.Result]; ReturnValue; value; manual | +| 13 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable; false; GetAwaiter; (); ; Argument[this].SyntheticField[m_configuredTaskAwaiter]; ReturnValue; value; manual | +| 14 | Summary: System.Threading.Tasks; Task; false; Run; (System.Func); ; Argument[0].ReturnValue; ReturnValue.Property[System.Threading.Tasks.Task`1.Result]; value; manual | +| 15 | Summary: System.Threading.Tasks; Task; false; ConfigureAwait; (System.Boolean); ; Argument[this]; ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable]; value; manual | +| 16 | Summary: System; Lazy; false; Lazy; (System.Func); ; Argument[0].ReturnValue; Argument[this].Property[System.Lazy`1.Value]; value; manual | edges +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | | Capture.cs:11:26:11:32 | access to parameter tainted : String | Capture.cs:11:17:11:22 | access to local variable sink27 : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | +| Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | | Capture.cs:20:30:20:36 | access to parameter tainted : String | Capture.cs:20:21:20:26 | access to local variable sink28 : String | provenance | | +| Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | +| Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | | Capture.cs:29:26:29:32 | access to parameter tainted : String | Capture.cs:29:17:29:22 | access to local variable sink29 : String | provenance | | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | MaD:3 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | MaD:4 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | heuristic-callback | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:3 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:4 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:3 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:4 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | | Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | | Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | +| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | provenance | | +| Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | provenance | | +| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | provenance | | | Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | provenance | | | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | Capture.cs:72:15:72:20 | access to local variable sink30 | provenance | | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | | Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | provenance | | | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:84:15:84:20 | access to local variable sink31 | provenance | | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | heuristic-callback | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | provenance | | +| Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | provenance | | | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:93:15:93:20 | access to local variable sink32 | provenance | | +| Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | -| Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:124:15:124:20 | access to local variable sink40 | provenance | | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | MaD:3 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | MaD:4 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | heuristic-callback | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | MaD:3 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | MaD:4 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | heuristic-callback | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:3 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:4 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:3 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:4 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | +| Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | provenance | | | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | Capture.cs:171:15:171:20 | access to local variable sink37 | provenance | | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | provenance | | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | +| Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | provenance | | +| Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | provenance | | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | provenance | | +| Capture.cs:190:26:190:26 | s : String | Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | provenance | | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | provenance | | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | provenance | | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:26:190:26 | s : String | provenance | | +| Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | provenance | | +| Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | +| Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | Capture.cs:198:20:198:25 | call to local function Id : String | provenance | | +| Capture.cs:198:20:198:25 | call to local function Id : String | Capture.cs:199:15:199:22 | access to local variable nonSink0 | provenance | | +| Capture.cs:202:20:202:20 | s : String | Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | | Capture.cs:202:20:202:20 | s : String | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | provenance | | -| Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | provenance | | +| Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | provenance | | | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:202:20:202:20 | s : String | provenance | | -| Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | -| Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | provenance | | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | provenance | | -| Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | provenance | | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | provenance | | | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | -| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | MaD:1 | -| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | heuristic-callback | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | provenance | MaD:1 | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | provenance | heuristic-callback | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | -| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | heuristic-callback | +| Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | | +| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | Capture.cs:246:19:246:25 | access to field Field | provenance | | -| Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | provenance | | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:21 | access to field Field | provenance | | -| Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:264:23:264:36 | "taint source" : String | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | Capture.cs:268:15:268:21 | access to field Field | provenance | | | Capture.cs:273:19:273:19 | x : String | Capture.cs:273:30:273:30 | access to parameter x | provenance | | +| Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | Capture.cs:273:19:273:19 | x : String | provenance | | +| Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | | Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | provenance | | +| Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | provenance | | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | Capture.cs:301:19:301:28 | access to field Field | provenance | | -| Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | -| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | provenance | | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | Capture.cs:306:15:306:24 | access to field Field | provenance | | | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | provenance | | | Capture.cs:318:17:318:30 | "taint source" : String | Capture.cs:319:19:319:19 | access to local variable x | provenance | | +| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | provenance | | | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | -| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | -| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | -| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:355:45:355:45 | x : String | Capture.cs:357:11:357:11 | access to parameter x : String | provenance | | -| Capture.cs:357:11:357:11 | access to parameter x : String | Capture.cs:273:19:273:19 | x : String | provenance | | +| Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | provenance | | +| Capture.cs:357:11:357:11 | access to parameter x : String | Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | provenance | | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | GlobalDataFlow.cs:26:9:26:26 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | provenance | | @@ -193,7 +498,8 @@ edges | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | provenance | | | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | provenance | | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | @@ -201,6 +507,8 @@ edges | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | @@ -209,24 +517,32 @@ edges | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | | GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | | GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | provenance | | +| GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | @@ -256,47 +572,73 @@ edges | GlobalDataFlow.cs:81:13:81:18 | access to local variable sink13 : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | provenance | | | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:81:13:81:18 | access to local variable sink13 : String | provenance | | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | provenance | | | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | provenance | | | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | provenance | | | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | provenance | | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | MaD:3 | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | MaD:3 | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:3 | | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | provenance | | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | provenance | | | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | provenance | | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:5 | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | MaD:5 | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | MaD:5 | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | | | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | provenance | | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:6 | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | MaD:6 | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | provenance | MaD:6 | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | | | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | provenance | | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | provenance | | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | provenance | | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | provenance | | +| GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:143:20:143:36 | delegate call : String | provenance | | +| GlobalDataFlow.cs:143:20:143:36 | delegate call : String | GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | provenance | | | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | provenance | | | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | provenance | | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | provenance | | | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | provenance | | @@ -307,45 +649,117 @@ edges | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:165:13:165:18 | access to local variable sink12 : String | provenance | | | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | provenance | | | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | provenance | | -| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | +| GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | provenance | | +| GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | provenance | | | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | provenance | | | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | provenance | | | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | provenance | | +| GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | MaD:16 | | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | provenance | | | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | provenance | | -| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | MaD:8 | | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | MaD:3 | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | provenance | MaD:3 | | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | provenance | | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | MaD:9 | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | MaD:9 | -| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | MaD:8 | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | MaD:10 | +| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | MaD:9 | | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | MaD:11 | | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | provenance | | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:3 | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | MaD:3 | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:3 | | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | provenance | MaD:2 | | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | +| GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | provenance | | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:71:225:71 | x : String | GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | provenance | | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:226:23:226:51 | call to method First : String | provenance | MaD:2 | +| GlobalDataFlow.cs:226:23:226:51 | call to method First : String | GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | MaD:10 | +| GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:228:19:228:47 | call to method First : String | provenance | MaD:9 | +| GlobalDataFlow.cs:228:19:228:47 | call to method First : String | GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | provenance | MaD:11 | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | provenance | MaD:10 | +| GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:230:19:230:47 | call to method First : String | provenance | MaD:2 | +| GlobalDataFlow.cs:230:19:230:47 | call to method First : String | GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | +| GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | provenance | MaD:10 | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | provenance | MaD:10 | +| GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:232:19:232:47 | call to method First : String | provenance | MaD:9 | +| GlobalDataFlow.cs:232:19:232:47 | call to method First : String | GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:71 | x : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | provenance | MaD:11 | +| GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:234:19:234:57 | call to method First : String | provenance | MaD:2 | +| GlobalDataFlow.cs:234:19:234:57 | call to method First : String | GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:4 | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | provenance | | -| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | MaD:12 | +| GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | provenance | | | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | provenance | | | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | provenance | | @@ -365,7 +779,11 @@ edges | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | provenance | | | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | provenance | | | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | provenance | | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | provenance | | @@ -375,29 +793,28 @@ edges | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | provenance | | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | provenance | | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | GlobalDataFlow.cs:160:20:160:24 | access to local variable sink7 : String | provenance | | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | GlobalDataFlow.cs:163:20:163:24 | access to local variable sink8 : String | provenance | | | GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | provenance | | | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | provenance | | | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | provenance | | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | provenance | | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | provenance | | @@ -407,20 +824,24 @@ edges | GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | provenance | | | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | provenance | | -| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | MaD:12 | +| GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | -| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:13 | +| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:15 | | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | | GlobalDataFlow.cs:459:13:459:19 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | -| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:11 | +| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:13 | | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:13:459:19 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | | GlobalDataFlow.cs:460:13:460:18 | access to local variable sink45 : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | provenance | | -| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | MaD:10 | +| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | MaD:12 | | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:460:13:460:18 | access to local variable sink45 : String | provenance | | | GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | provenance | | | GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | -| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | +| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | @@ -463,9 +884,11 @@ edges | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | +| GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | provenance | | | MultiImplementationA.cs:5:28:5:41 | "taint source" : String | MultiImplementationA.cs:7:27:7:27 | x : String | provenance | | | MultiImplementationA.cs:7:27:7:27 | x : String | MultiImplementationA.cs:7:39:7:39 | access to parameter x | provenance | | | MultiImplementationB.cs:3:28:3:41 | "taint source" : String | MultiImplementationB.cs:5:27:5:27 | x : String | provenance | | @@ -510,121 +933,250 @@ edges | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | semmle.label | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | semmle.label | access to local variable sink27 : String | | Capture.cs:11:26:11:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | semmle.label | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | semmle.label | access to local variable sink28 : String | | Capture.cs:20:30:20:36 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:21:23:21:28 | access to local variable sink28 | semmle.label | access to local variable sink28 | +| Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | semmle.label | [post] access to local function M : M [captured tainted] : String | +| Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | +| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | semmle.label | access to local variable sink29 : String | | Capture.cs:29:26:29:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:30:19:30:24 | access to local variable sink29 | semmle.label | access to local variable sink29 | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | access to local variable captureIn3 : Func [captured tainted] : String | +| Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | semmle.label | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | +| Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | semmle.label | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | +| Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | semmle.label | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | | Capture.cs:50:50:50:55 | sink39 : String | semmle.label | sink39 : String | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:57:27:57:32 | access to parameter sink39 | semmle.label | access to parameter sink39 | +| Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | semmle.label | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | | Capture.cs:61:36:61:42 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | semmle.label | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | | Capture.cs:69:22:69:35 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | semmle.label | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | | Capture.cs:72:15:72:20 | access to local variable sink30 | semmle.label | access to local variable sink30 | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | semmle.label | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | semmle.label | M(...) : M [captured sink31] : String | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | semmle.label | M(...) : M [captured sink31] : String | | Capture.cs:79:26:79:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | semmle.label | [post] access to local function M : M [captured sink31] : String | +| Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | semmle.label | [post] access to local function M : M [captured sink31] : String | +| Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | semmle.label | access to local function M : M [captured sink31] : String | | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | semmle.label | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | semmle.label | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | semmle.label | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | | Capture.cs:84:15:84:20 | access to local variable sink31 | semmle.label | access to local variable sink31 | +| Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | access to local variable captureOut3 : (...) => ... [captured sink32] : String | +| Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | semmle.label | (...) => ... : (...) => ... [captured sink32] : String | | Capture.cs:89:22:89:35 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | +| Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | access to local variable captureOut3 : (...) => ... [captured sink32] : String | | Capture.cs:93:15:93:20 | access to local variable sink32 | semmle.label | access to local variable sink32 | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | semmle.label | (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | semmle.label | (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink40] : String | | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink40] : String | | Capture.cs:116:26:116:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | | Capture.cs:132:22:132:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | semmle.label | M(...) : M [captured sink34] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | semmle.label | M(...) : M [captured sink34] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:142:26:142:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | semmle.label | [post] access to local function M : M [captured tainted] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | semmle.label | access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | semmle.label | access to local function M : M [captured sink34] : String | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | semmle.label | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | +| Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | | Capture.cs:160:20:160:26 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | | Capture.cs:163:15:163:20 | access to local variable sink36 | semmle.label | access to local variable sink36 | +| Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | semmle.label | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | | Capture.cs:166:37:166:37 | p : String | semmle.label | p : String | | Capture.cs:168:22:168:22 | access to parameter p : String | semmle.label | access to parameter p : String | | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | semmle.label | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | semmle.label | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | +| Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | semmle.label | Id(...) : Id [delegate return] : String | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | +| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | semmle.label | M(...) : M [captured s] : String | +| Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | semmle.label | M(...) : M [delegate return] : String | | Capture.cs:192:27:192:27 | access to parameter s : String | semmle.label | access to parameter s : String | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured s] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | +| Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | semmle.label | access to local function M : M [delegate return] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | semmle.label | [post] access to local function Id : null [delegate argument at position 0] : String | +| Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | semmle.label | access to local function Id : Id [delegate return] : String | | Capture.cs:196:22:196:32 | call to local function Id : String | semmle.label | call to local function Id : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:197:15:197:20 | access to local variable sink38 | semmle.label | access to local variable sink38 | +| Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | semmle.label | access to local function Id : Id [delegate return] : String | +| Capture.cs:198:20:198:25 | call to local function Id : String | semmle.label | call to local function Id : String | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | semmle.label | access to local variable nonSink0 | | Capture.cs:202:20:202:20 | s : String | semmle.label | s : String | +| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | +| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | | Capture.cs:206:19:206:19 | access to parameter s | semmle.label | access to parameter s | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | +| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | semmle.label | access to local variable a : Action [captured s] : String | | Capture.cs:211:21:211:34 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:213:22:213:22 | s : String | semmle.label | s : String | -| Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | -| Capture.cs:217:19:217:19 | access to parameter s | semmle.label | access to parameter s | -| Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | semmle.label | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:221:21:221:34 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | semmle.label | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:223:31:223:44 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:228:17:228:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | semmle.label | [post] (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | | Capture.cs:231:19:231:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:232:17:232:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:234:15:234:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:242:19:242:32 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:246:19:246:25 | access to field Field | semmle.label | access to field Field | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:247:23:247:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | semmle.label | access to local variable a : Action [captured c, field Field] : String | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:251:15:251:21 | access to field Field | semmle.label | access to field Field | +| Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:264:23:264:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:268:15:268:21 | access to field Field | semmle.label | access to field Field | | Capture.cs:273:19:273:19 | x : String | semmle.label | x : String | +| Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | Capture.cs:273:30:273:30 | access to parameter x | semmle.label | access to parameter x | | Capture.cs:273:34:273:47 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:278:17:278:30 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | +| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:284:23:284:23 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:285:21:285:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | semmle.label | [post] access to local variable inner : Action [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | semmle.label | [post] access to local variable inner : Action [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | semmle.label | [post] access to local variable middle : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | semmle.label | [post] access to local variable middle : Action [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | semmle.label | access to local variable middle : Action [captured x] : String | | Capture.cs:292:15:292:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:297:22:297:35 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | +| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:301:19:301:28 | access to field Field | semmle.label | access to field Field | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:302:26:302:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | access to local variable a : Action [captured this in M10, field Field] : String | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:306:15:306:24 | access to field Field | semmle.label | access to field Field | @@ -633,23 +1185,49 @@ nodes | Capture.cs:318:17:318:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:319:19:319:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:328:17:328:30 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | semmle.label | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | | Capture.cs:330:47:330:47 | access to local variable x | semmle.label | access to local variable x | +| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | semmle.label | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | semmle.label | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | | Capture.cs:339:17:339:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:341:45:341:45 | access to local variable x | semmle.label | access to local variable x | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | semmle.label | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | semmle.label | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | -| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | semmle.label | a : (...) => ... [captured sink40] : String | +| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | semmle.label | a [Return] : (...) => ... [captured sink39] : String | | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | semmle.label | a [Return] : (...) => ... [captured sink40] : String | -| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | semmle.label | [post] access to parameter a : (...) => ... [captured sink40] : String | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | semmle.label | access to parameter a : (...) => ... [captured s] : String | +| Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | semmle.label | a [Return] : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | semmle.label | a [Return] : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String | | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String | +| Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | semmle.label | a [Return] : Action [delegate argument at position 0] : String | | Capture.cs:355:45:355:45 | x : String | semmle.label | x : String | +| Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | Capture.cs:357:11:357:11 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | semmle.label | access to field SinkField0 : String | | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | semmle.label | "taint source" : String | @@ -661,15 +1239,21 @@ nodes | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | semmle.label | sinkParam2 : String | | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | semmle.label | access to parameter sinkParam2 | +| GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | semmle.label | [post] access to local variable in2 : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:54:15:54:15 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:57:37:57:37 | x : String | semmle.label | x : String | | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:71:13:71:17 | access to local variable sink0 : String | semmle.label | access to local variable sink0 : String | @@ -694,6 +1278,8 @@ nodes | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | semmle.label | access to local variable sink3 : String | | GlobalDataFlow.cs:81:79:81:79 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | semmle.label | access to local variable sink13 | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | @@ -702,6 +1288,8 @@ nodes | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | semmle.label | access to local variable sink13 : String | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | semmle.label | access to local variable sink14 | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | semmle.label | call to method Zip : IEnumerable [element] : String | @@ -709,6 +1297,8 @@ nodes | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:85:118:85:118 | x : String | semmle.label | x : String | | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | semmle.label | access to local variable sink15 | @@ -718,18 +1308,32 @@ nodes | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | +| GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 1] : String | | GlobalDataFlow.cs:87:121:87:121 | y : String | semmle.label | y : String | | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | semmle.label | access to local variable sink16 | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:138:40:138:40 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | semmle.label | delegate creation of type Func : Return`1 [delegate return] : String | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | semmle.label | access to local variable sink4 : String | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable return : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | semmle.label | access to local variable sink3 : String | | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | semmle.label | access to local variable sink4 | +| GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | semmle.label | access to local variable nonSink0 : String | +| GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:143:20:143:36 | delegate call : String | semmle.label | delegate call : String | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | semmle.label | access to local variable nonSink0 | | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | semmle.label | access to local variable sink5 : String | | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | semmle.label | delegate creation of type Func : Return`1 [delegate return] : String | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | semmle.label | access to local variable sink4 : String | | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | semmle.label | access to local variable sink5 | | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | semmle.label | access to local variable sink6 : String | @@ -746,13 +1350,17 @@ nodes | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | semmle.label | access to local variable sink23 : String | | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | semmle.label | call to method TaintedParam : String | | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | semmle.label | access to local variable sink23 | +| GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | semmle.label | access to local variable out : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | semmle.label | access to local variable sink9 : String | +| GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | semmle.label | access to local variable out : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | semmle.label | access to local variable sink9 | | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | semmle.label | access to local variable sink10 : String | | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | semmle.label | object creation of type Lazy : Lazy [property Value] : String | | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | semmle.label | access to property Value : String | +| GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | semmle.label | delegate creation of type Func : Out [delegate return] : String | | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | semmle.label | access to local variable sink10 | | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | semmle.label | access to local variable sink19 : String | | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | semmle.label | access to property OutProperty : String | @@ -762,29 +1370,90 @@ nodes | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | semmle.label | call to method AsQueryable : IQueryable [element] : String | | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | semmle.label | "taint source" : String | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | semmle.label | sinkParam10 : String | +| GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | semmle.label | access to parameter sinkParam10 | | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | semmle.label | access to parameter sinkParam10 : String | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:215:71:215:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | semmle.label | call to method ReturnCheck2 : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | semmle.label | access to local variable sink24 : String | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable f1 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | semmle.label | access to local variable sink24 | | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | semmle.label | access to local variable sink25 : String | | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | semmle.label | access to local variable sink25 | | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | semmle.label | access to local variable sink26 : String | | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | semmle.label | access to local variable sink26 | +| GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | semmle.label | access to local variable f3 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | semmle.label | nonSinkParam : String | +| GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | semmle.label | access to parameter nonSinkParam | +| GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | semmle.label | access to parameter nonSinkParam : String | +| GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | semmle.label | access to local variable f4 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:225:71:225:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | semmle.label | call to method NonReturnCheck : String | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | semmle.label | [post] access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:226:23:226:51 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | semmle.label | access to local variable f1 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | semmle.label | [post] access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | +| GlobalDataFlow.cs:228:19:228:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:230:19:230:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable f3 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | semmle.label | access to local variable f3 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | +| GlobalDataFlow.cs:232:19:232:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | semmle.label | access to local variable f4 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:234:19:234:57 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | semmle.label | call to method Run : Task [property Result] : String | +| GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | semmle.label | access to local variable sink41 : String | | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | @@ -813,6 +1482,8 @@ nodes | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | semmle.label | access to local variable y : String | | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | | GlobalDataFlow.cs:300:27:300:28 | x0 : String | semmle.label | x0 : String | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | semmle.label | access to parameter x0 : String | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | semmle.label | ... ? ... : ... : String | @@ -829,27 +1500,32 @@ nodes | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | semmle.label | sinkParam11 : String | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | semmle.label | access to parameter sinkParam11 | | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | semmle.label | access to parameter sinkParam11 : String | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | semmle.label | nonSinkParam : String | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | semmle.label | access to parameter nonSinkParam | +| GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | semmle.label | access to parameter nonSinkParam : String | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | semmle.label | "taint source" : String | +| GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | semmle.label | a [Return] : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:382:41:382:41 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | semmle.label | f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | semmle.label | f : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | semmle.label | f [Return] : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:387:46:387:46 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | semmle.label | access to parameter f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | semmle.label | access to parameter f : Return`1 [delegate return] : String | | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | semmle.label | a [Return] : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:401:39:401:45 | tainted : String | semmle.label | tainted : String | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | semmle.label | access to local variable sink11 : String | @@ -861,6 +1537,7 @@ nodes | GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | semmle.label | call to method Run : Task [property Result] : String | +| GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | semmle.label | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | @@ -875,7 +1552,9 @@ nodes | GlobalDataFlow.cs:466:53:466:55 | arg : String | semmle.label | arg : String | | GlobalDataFlow.cs:469:21:469:21 | s : String | semmle.label | s : String | | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | semmle.label | access to parameter s | +| GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | semmle.label | access to parameter arg : String | +| GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | semmle.label | [post] access to local function Inner : null [delegate argument at position 2] : String | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | @@ -920,7 +1599,11 @@ nodes | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | semmle.label | e : null [element] : String | +| GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | semmle.label | f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | semmle.label | f [Return] : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | semmle.label | access to parameter e : null [element] : String | +| GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | semmle.label | access to parameter f : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | semmle.label | access to local variable x : String | | MultiImplementationA.cs:5:28:5:41 | "taint source" : String | semmle.label | "taint source" : String | @@ -967,35 +1650,92 @@ nodes | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s | subpaths +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:193:20:193:22 | call to local function M : String | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:196:22:196:32 | call to local function Id : String | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | +| Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | GlobalDataFlow.cs:76:30:76:34 | access to local variable sink2 : String | | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | GlobalDataFlow.cs:79:30:79:34 | access to local variable sink3 : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:71 | x : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | | Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | | Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:20:22:20:30 | call to method Return : String | @@ -1008,10 +1748,12 @@ subpaths | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | [b (line 3): false] access to local variable x | | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | [b (line 3): true] access to local variable x | | Capture.cs:246:19:246:25 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:246:19:246:25 | access to field Field | access to field Field | +| Capture.cs:246:19:246:25 | access to field Field | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:246:19:246:25 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | | Capture.cs:268:15:268:21 | access to field Field | Capture.cs:264:23:264:36 | "taint source" : String | Capture.cs:268:15:268:21 | access to field Field | access to field Field | | Capture.cs:301:19:301:28 | access to field Field | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:301:19:301:28 | access to field Field | access to field Field | +| Capture.cs:301:19:301:28 | access to field Field | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:301:19:301:28 | access to field Field | access to field Field | | Capture.cs:306:15:306:24 | access to field Field | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:306:15:306:24 | access to field Field | access to field Field | | Capture.cs:306:15:306:24 | access to field Field | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:306:15:306:24 | access to field Field | access to field Field | | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | access to field SinkField0 | @@ -1028,6 +1770,13 @@ subpaths | GlobalDataFlow.cs:533:15:533:21 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | access to field field | | GlobalDataFlow.cs:539:15:539:22 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | access to field field | | GlobalDataFlow.cs:547:15:547:21 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | access to field field | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | access to local variable nonSink | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:199:15:199:22 | access to local variable nonSink0 | access to local variable nonSink0 | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | access to local variable nonSink0 | | Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s | | Splitting.cs:50:19:50:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | access to local variable s | @@ -1071,9 +1820,11 @@ subpaths | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | access to local variable sink8 | | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | access to local variable sink9 | | Capture.cs:231:19:231:19 | access to local variable x | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:231:19:231:19 | access to local variable x | access to local variable x | +| Capture.cs:231:19:231:19 | access to local variable x | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:231:19:231:19 | access to local variable x | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | access to local variable x | | Capture.cs:284:23:284:23 | access to local variable x | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:284:23:284:23 | access to local variable x | access to local variable x | +| Capture.cs:284:23:284:23 | access to local variable x | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:284:23:284:23 | access to local variable x | access to local variable x | | Capture.cs:292:15:292:15 | access to local variable x | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | access to local variable x | | Capture.cs:292:15:292:15 | access to local variable x | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | access to local variable x | | Capture.cs:312:15:312:15 | access to local variable x | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | access to local variable x | @@ -1082,9 +1833,9 @@ subpaths | Capture.cs:341:45:341:45 | access to local variable x | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:45:341:45 | access to local variable x | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:11:19:11:19 | access to local variable x | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:34:19:34:19 | access to local variable x | access to local variable x | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | access to parameter nonSinkParam | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | access to parameter nonSinkParam | | Capture.cs:206:19:206:19 | access to parameter s | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:206:19:206:19 | access to parameter s | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:217:19:217:19 | access to parameter s | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:217:19:217:19 | access to parameter s | access to parameter s | | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | access to parameter s | | Capture.cs:57:27:57:32 | access to parameter sink39 | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:57:27:57:32 | access to parameter sink39 | access to parameter sink39 | | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | access to parameter sinkParam0 | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected index 8a68b204e023..081463a053a7 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected @@ -12,8 +12,8 @@ | Capture.cs:163:15:163:20 | access to local variable sink36 | | Capture.cs:171:15:171:20 | access to local variable sink37 | | Capture.cs:197:15:197:20 | access to local variable sink38 | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | | Capture.cs:206:19:206:19 | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | | Capture.cs:231:19:231:19 | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | | Capture.cs:246:19:246:25 | access to field Field | @@ -45,6 +45,7 @@ | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | @@ -58,6 +59,12 @@ | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | @@ -70,6 +77,7 @@ | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 1d05b0ae55ed..931c4afd56ed 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -2,162 +2,469 @@ models | 1 | Summary: System.Collections.Generic; List; false; ForEach; (System.Action); ; Argument[this].Element; Argument[0].Parameter[0]; value; manual | | 2 | Summary: System.Linq; Enumerable; false; Aggregate; (System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func); ; Argument[0].Element; Argument[2].Parameter[1]; value; manual | | 3 | Summary: System.Linq; Enumerable; false; Aggregate; (System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func); ; Argument[1]; Argument[2].Parameter[0]; value; manual | -| 4 | Summary: System.Linq; Enumerable; false; First; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue; value; manual | -| 5 | Summary: System.Linq; Enumerable; false; Select; (System.Collections.Generic.IEnumerable,System.Func); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | -| 6 | Summary: System.Linq; Enumerable; false; Select; (System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].ReturnValue; ReturnValue.Element; value; manual | -| 7 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[0].Element; Argument[2].Parameter[0]; value; manual | -| 8 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].Element; Argument[2].Parameter[1]; value; manual | -| 9 | Summary: System.Linq; Queryable; false; AsQueryable; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue.Element; value; manual | -| 10 | Summary: System.Linq; Queryable; false; First; (System.Linq.IQueryable); ; Argument[0].Element; ReturnValue; value; manual | -| 11 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | -| 12 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable+ConfiguredTaskAwaiter; false; GetResult; (); ; Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task`1.Result]; ReturnValue; value; manual | -| 13 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable; false; GetAwaiter; (); ; Argument[this].SyntheticField[m_configuredTaskAwaiter]; ReturnValue; value; manual | -| 14 | Summary: System.Text; StringBuilder; false; Append; (System.String); ; Argument[0]; Argument[this]; taint; manual | -| 15 | Summary: System.Text; StringBuilder; false; Append; (System.Text.StringBuilder); ; Argument[0]; Argument[this]; taint; manual | -| 16 | Summary: System.Text; StringBuilder; false; Append; (System.Text.StringBuilder+AppendInterpolatedStringHandler); ; Argument[0]; Argument[this]; taint; manual | -| 17 | Summary: System.Text; StringBuilder; false; ToString; (); ; Argument[this]; ReturnValue; taint; manual | -| 18 | Summary: System.Threading.Tasks; Task; false; Run; (System.Func); ; Argument[0].ReturnValue; ReturnValue.Property[System.Threading.Tasks.Task`1.Result]; value; manual | -| 19 | Summary: System.Threading.Tasks; Task; false; ConfigureAwait; (System.Boolean); ; Argument[this]; ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable]; value; manual | -| 20 | Summary: System; Boolean; false; TryParse; (System.String,System.Boolean); ; Argument[0]; Argument[1]; taint; manual | -| 21 | Summary: System; Int32; false; TryParse; (System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32); ; Argument[0]; Argument[3]; taint; manual | -| 22 | Summary: System; Int32; false; TryParse; (System.String,System.Int32); ; Argument[0]; Argument[1]; taint; manual | -| 23 | Summary: System; Lazy; false; Lazy; (System.Func); ; Argument[0].ReturnValue; Argument[this].Property[System.Lazy`1.Value]; value; manual | -| 24 | Summary: System; String; false; Join; (System.String,System.String[]); ; Argument[1].Element; ReturnValue; taint; manual | +| 4 | Summary: System.Linq; Enumerable; false; Aggregate; (System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func); ; Argument[2].ReturnValue; Argument[3].Parameter[0]; value; manual | +| 5 | Summary: System.Linq; Enumerable; false; Aggregate; (System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func); ; Argument[3].ReturnValue; ReturnValue; value; manual | +| 6 | Summary: System.Linq; Enumerable; false; First; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue; value; manual | +| 7 | Summary: System.Linq; Enumerable; false; Select; (System.Collections.Generic.IEnumerable,System.Func); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | +| 8 | Summary: System.Linq; Enumerable; false; Select; (System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].ReturnValue; ReturnValue.Element; value; manual | +| 9 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[0].Element; Argument[2].Parameter[0]; value; manual | +| 10 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[1].Element; Argument[2].Parameter[1]; value; manual | +| 11 | Summary: System.Linq; Enumerable; false; Zip; (System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func); ; Argument[2].ReturnValue; ReturnValue.Element; value; manual | +| 12 | Summary: System.Linq; Queryable; false; AsQueryable; (System.Collections.Generic.IEnumerable); ; Argument[0].Element; ReturnValue.Element; value; manual | +| 13 | Summary: System.Linq; Queryable; false; First; (System.Linq.IQueryable); ; Argument[0].Element; ReturnValue; value; manual | +| 14 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[0].Element; Argument[1].Parameter[0]; value; manual | +| 15 | Summary: System.Linq; Queryable; false; Select; (System.Linq.IQueryable,System.Linq.Expressions.Expression>); ; Argument[1].ReturnValue; ReturnValue.Element; value; manual | +| 16 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable+ConfiguredTaskAwaiter; false; GetResult; (); ; Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task`1.Result]; ReturnValue; value; manual | +| 17 | Summary: System.Runtime.CompilerServices; ConfiguredTaskAwaitable; false; GetAwaiter; (); ; Argument[this].SyntheticField[m_configuredTaskAwaiter]; ReturnValue; value; manual | +| 18 | Summary: System.Text; StringBuilder; false; Append; (System.String); ; Argument[0]; Argument[this]; taint; manual | +| 19 | Summary: System.Text; StringBuilder; false; Append; (System.Text.StringBuilder); ; Argument[0]; Argument[this]; taint; manual | +| 20 | Summary: System.Text; StringBuilder; false; Append; (System.Text.StringBuilder+AppendInterpolatedStringHandler); ; Argument[0]; Argument[this]; taint; manual | +| 21 | Summary: System.Text; StringBuilder; false; ToString; (); ; Argument[this]; ReturnValue; taint; manual | +| 22 | Summary: System.Threading.Tasks; Task; false; Run; (System.Func); ; Argument[0].ReturnValue; ReturnValue.Property[System.Threading.Tasks.Task`1.Result]; value; manual | +| 23 | Summary: System.Threading.Tasks; Task; false; ConfigureAwait; (System.Boolean); ; Argument[this]; ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable]; value; manual | +| 24 | Summary: System; Boolean; false; TryParse; (System.String,System.Boolean); ; Argument[0]; Argument[1]; taint; manual | +| 25 | Summary: System; Int32; false; TryParse; (System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32); ; Argument[0]; Argument[3]; taint; manual | +| 26 | Summary: System; Int32; false; TryParse; (System.String,System.Int32); ; Argument[0]; Argument[1]; taint; manual | +| 27 | Summary: System; Lazy; false; Lazy; (System.Func); ; Argument[0].ReturnValue; Argument[this].Property[System.Lazy`1.Value]; value; manual | +| 28 | Summary: System; String; false; Join; (System.String,System.String[]); ; Argument[1].Element; ReturnValue; taint; manual | edges +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | | Capture.cs:11:26:11:32 | access to parameter tainted : String | Capture.cs:11:17:11:22 | access to local variable sink27 : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | +| Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | +| Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | | Capture.cs:20:30:20:36 | access to parameter tainted : String | Capture.cs:20:21:20:26 | access to local variable sink28 : String | provenance | | +| Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | +| Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | | Capture.cs:29:26:29:32 | access to parameter tainted : String | Capture.cs:29:17:29:22 | access to local variable sink29 : String | provenance | | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | MaD:5 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | MaD:6 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | heuristic-callback | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:7 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:8 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | provenance | | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:7 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:8 | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | provenance | | | Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | +| Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | | Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | +| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | provenance | | +| Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | provenance | | +| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | provenance | | | Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | provenance | | | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | Capture.cs:72:15:72:20 | access to local variable sink30 | provenance | | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | | Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | provenance | | | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | provenance | | | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:84:15:84:20 | access to local variable sink31 | provenance | | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | heuristic-callback | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | provenance | | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | provenance | | +| Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | provenance | | | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:93:15:93:20 | access to local variable sink32 | provenance | | +| Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | provenance | | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | -| Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:124:15:124:20 | access to local variable sink40 | provenance | | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | provenance | | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | MaD:5 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | MaD:6 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | heuristic-callback | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | MaD:5 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | MaD:6 | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | heuristic-callback | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:7 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:8 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:7 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | MaD:8 | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | provenance | heuristic-callback | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | provenance | | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | +| Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | provenance | | | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | Capture.cs:171:15:171:20 | access to local variable sink37 | provenance | | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | provenance | | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | +| Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | provenance | | +| Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | +| Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | provenance | | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | provenance | | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | provenance | | +| Capture.cs:190:26:190:26 | s : String | Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | provenance | | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | provenance | | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | provenance | | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:26:190:26 | s : String | provenance | | +| Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | provenance | | +| Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | +| Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | Capture.cs:198:20:198:25 | call to local function Id : String | provenance | | +| Capture.cs:198:20:198:25 | call to local function Id : String | Capture.cs:199:15:199:22 | access to local variable nonSink0 | provenance | | +| Capture.cs:202:20:202:20 | s : String | Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | | Capture.cs:202:20:202:20 | s : String | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | provenance | | -| Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | +| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | provenance | | +| Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | provenance | | | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:202:20:202:20 | s : String | provenance | | -| Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | -| Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | provenance | | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | provenance | | -| Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | provenance | | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | provenance | | | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | -| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | MaD:1 | -| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | heuristic-callback | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | provenance | MaD:1 | +| Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | provenance | heuristic-callback | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | -| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | heuristic-callback | +| Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | | +| Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | Capture.cs:246:19:246:25 | access to field Field | provenance | | -| Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | provenance | | +| Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | provenance | | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:21 | access to field Field | provenance | | -| Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | +| Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:264:23:264:36 | "taint source" : String | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | Capture.cs:268:15:268:21 | access to field Field | provenance | | | Capture.cs:273:19:273:19 | x : String | Capture.cs:273:30:273:30 | access to parameter x | provenance | | +| Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | Capture.cs:273:19:273:19 | x : String | provenance | | +| Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | | Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | provenance | | +| Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | provenance | | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | provenance | | +| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | provenance | | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | Capture.cs:301:19:301:28 | access to field Field | provenance | | -| Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | -| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | provenance | | +| Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | provenance | | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | Capture.cs:306:15:306:24 | access to field Field | provenance | | | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | provenance | | | Capture.cs:318:17:318:30 | "taint source" : String | Capture.cs:319:19:319:19 | access to local variable x | provenance | | +| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | +| Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | provenance | | | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | provenance | | +| Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | -| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | provenance | | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | provenance | | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | -| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | | -| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | provenance | | +| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | provenance | | | Capture.cs:355:45:355:45 | x : String | Capture.cs:357:11:357:11 | access to parameter x : String | provenance | | -| Capture.cs:357:11:357:11 | access to parameter x : String | Capture.cs:273:19:273:19 | x : String | provenance | | +| Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | provenance | | +| Capture.cs:357:11:357:11 | access to parameter x : String | Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | provenance | | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | GlobalDataFlow.cs:26:9:26:26 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | provenance | | @@ -203,7 +510,8 @@ edges | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | provenance | | | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | provenance | | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | @@ -211,6 +519,8 @@ edges | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | @@ -219,24 +529,32 @@ edges | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | | GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | | GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | provenance | | +| GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | @@ -264,125 +582,231 @@ edges | GlobalDataFlow.cs:79:30:79:34 | access to local variable sink3 : String | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | provenance | | | GlobalDataFlow.cs:81:13:81:18 | access to local variable sink13 : String | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | provenance | | | GlobalDataFlow.cs:81:13:81:18 | access to local variable sink13 : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | provenance | | -| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:81:13:81:18 | access to local variable sink13 : String | provenance | | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | provenance | | | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | provenance | | | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | provenance | | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | provenance | | -| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | provenance | | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | MaD:5 | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | MaD:5 | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:7 | | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | | +| GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | provenance | | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | provenance | | -| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | provenance | | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:7 | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | MaD:7 | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | MaD:9 | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:11 | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | | | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | -| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | provenance | | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:8 | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | MaD:8 | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | provenance | MaD:10 | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | MaD:11 | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | | | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | provenance | | | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | provenance | | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | provenance | MaD:2 | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | provenance | MaD:2 | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | provenance | MaD:2 | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:83:89:101 | [post] (...) => ... : Func [delegate argument at position 1] : String | provenance | MaD:2 | | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:89:83:89:101 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:89:104:89:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | MaD:4 | +| GlobalDataFlow.cs:89:83:89:101 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:89:83:89:101 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:89:83:89:101 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | provenance | | | GlobalDataFlow.cs:89:89:89:89 | s : String | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | provenance | | | GlobalDataFlow.cs:89:104:89:104 | x : String | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:89:104:89:109 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | provenance | MaD:5 | +| GlobalDataFlow.cs:89:104:89:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | provenance | | +| GlobalDataFlow.cs:89:104:89:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:89:104:89:109 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | provenance | | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | provenance | MaD:3 | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | provenance | MaD:3 | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:104:91:104 | x : String | provenance | MaD:3 | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:83:91:101 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | MaD:3 | +| GlobalDataFlow.cs:91:83:91:101 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:91:104:91:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | MaD:4 | +| GlobalDataFlow.cs:91:83:91:101 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:83:91:101 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:91:83:91:101 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | provenance | | | GlobalDataFlow.cs:91:84:91:86 | acc : String | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | provenance | | | GlobalDataFlow.cs:91:104:91:104 | x : String | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | provenance | MaD:22 | +| GlobalDataFlow.cs:91:104:91:109 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | provenance | MaD:5 | +| GlobalDataFlow.cs:91:104:91:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:104:91:104 | x : String | provenance | | +| GlobalDataFlow.cs:91:104:91:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:104:91:109 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | provenance | MaD:26 | | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | GlobalDataFlow.cs:95:15:95:20 | access to local variable sink21 | provenance | | -| GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | GlobalDataFlow.cs:97:35:97:40 | access to local variable sink22 : Boolean | provenance | MaD:20 | +| GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | GlobalDataFlow.cs:97:35:97:40 | access to local variable sink22 : Boolean | provenance | MaD:24 | | GlobalDataFlow.cs:97:35:97:40 | access to local variable sink22 : Boolean | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | provenance | | -| GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | GlobalDataFlow.cs:100:82:100:88 | access to local variable sink21b : Int32 | provenance | MaD:21 | +| GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | GlobalDataFlow.cs:100:82:100:88 | access to local variable sink21b : Int32 | provenance | MaD:25 | | GlobalDataFlow.cs:100:82:100:88 | access to local variable sink21b : Int32 | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | provenance | | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | provenance | | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | provenance | | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | provenance | | +| GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | GlobalDataFlow.cs:143:20:143:36 | delegate call : String | provenance | | +| GlobalDataFlow.cs:143:20:143:36 | delegate call : String | GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | provenance | | | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | provenance | | | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | provenance | | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | provenance | | | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | provenance | | | GlobalDataFlow.cs:160:20:160:24 | access to local variable sink7 : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | provenance | | | GlobalDataFlow.cs:163:20:163:24 | access to local variable sink8 : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | provenance | | | GlobalDataFlow.cs:165:13:165:18 | access to local variable sink12 : String | GlobalDataFlow.cs:166:15:166:20 | access to local variable sink12 | provenance | | -| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:165:13:165:18 | access to local variable sink12 : String | provenance | | | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | provenance | | | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | provenance | | -| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | +| GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | provenance | | +| GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | provenance | | | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | provenance | | | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | provenance | | | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | provenance | | +| GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | MaD:27 | | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | provenance | | | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | provenance | | -| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | MaD:9 | +| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | MaD:12 | | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:211:28:211:34 | access to local variable tainted : IQueryable [element] : String | provenance | | | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | MaD:5 | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:5 | -| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | provenance | | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | MaD:11 | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | MaD:11 | -| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | MaD:10 | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | MaD:13 | | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | MaD:15 | | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | provenance | | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:5 | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | MaD:5 | -| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | provenance | MaD:4 | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | provenance | MaD:6 | | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | +| GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | provenance | | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:71:225:71 | x : String | GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | provenance | | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:226:23:226:51 | call to method First : String | provenance | MaD:6 | +| GlobalDataFlow.cs:226:23:226:51 | call to method First : String | GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:228:19:228:47 | call to method First : String | provenance | MaD:13 | +| GlobalDataFlow.cs:228:19:228:47 | call to method First : String | GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | provenance | MaD:15 | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:230:19:230:47 | call to method First : String | provenance | MaD:6 | +| GlobalDataFlow.cs:230:19:230:47 | call to method First : String | GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | +| GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | provenance | MaD:14 | +| GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:232:19:232:47 | call to method First : String | provenance | MaD:13 | +| GlobalDataFlow.cs:232:19:232:47 | call to method First : String | GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:71 | x : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | provenance | MaD:15 | +| GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | provenance | | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | provenance | MaD:7 | +| GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:234:19:234:57 | call to method First : String | provenance | MaD:6 | +| GlobalDataFlow.cs:234:19:234:57 | call to method First : String | GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | provenance | MaD:8 | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | provenance | | -| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | MaD:18 | +| GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | MaD:22 | +| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | provenance | | | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | provenance | | | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | provenance | | @@ -402,7 +826,11 @@ edges | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | provenance | | | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | provenance | | | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | provenance | | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | provenance | | @@ -412,29 +840,28 @@ edges | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | provenance | | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | MaD:23 | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | provenance | | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | GlobalDataFlow.cs:160:20:160:24 | access to local variable sink7 : String | provenance | | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | GlobalDataFlow.cs:163:20:163:24 | access to local variable sink8 : String | provenance | | | GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | provenance | | | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | provenance | | +| GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | provenance | | | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | provenance | | | GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | provenance | | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | provenance | | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | provenance | | @@ -444,23 +871,27 @@ edges | GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | provenance | | | GlobalDataFlow.cs:448:13:448:18 | access to local variable sink44 : String | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | provenance | | | GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | GlobalDataFlow.cs:448:13:448:18 | access to local variable sink44 : String | provenance | | -| GlobalDataFlow.cs:448:51:448:64 | "taint source" : String | GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | provenance | MaD:24 | +| GlobalDataFlow.cs:448:51:448:64 | "taint source" : String | GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | provenance | MaD:28 | | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | provenance | | | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | provenance | | -| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | MaD:18 | +| GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | MaD:22 | +| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | -| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:19 | +| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:23 | | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | | GlobalDataFlow.cs:459:13:459:19 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | -| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:13 | +| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | MaD:17 | | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:13:459:19 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | | GlobalDataFlow.cs:460:13:460:18 | access to local variable sink45 : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | provenance | | -| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | MaD:12 | +| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | MaD:16 | | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:460:13:460:18 | access to local variable sink45 : String | provenance | | | GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | provenance | | | GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | -| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | +| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | @@ -503,38 +934,40 @@ edges | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | +| GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | provenance | | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | provenance | | +| GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | provenance | | | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | provenance | | | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | provenance | | -| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:14 | +| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:18 | | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | provenance | | | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:22:65:22:66 | sb [Return] : StringBuilder | provenance | | -| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:16 | +| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:20 | | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | provenance | | | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | provenance | | | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | provenance | | | GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | provenance | | -| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | provenance | MaD:14 | +| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | provenance | MaD:18 | | GlobalDataFlowStringBuilder.cs:31:13:31:17 | access to local variable sink0 : String | GlobalDataFlowStringBuilder.cs:32:15:32:19 | access to local variable sink0 | provenance | | -| GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | provenance | MaD:17 | +| GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | provenance | MaD:21 | | GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:31:13:31:17 | access to local variable sink0 : String | provenance | | | GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | provenance | | -| GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | provenance | MaD:15 | +| GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | provenance | MaD:19 | | GlobalDataFlowStringBuilder.cs:36:13:36:17 | access to local variable sink1 : String | GlobalDataFlowStringBuilder.cs:37:15:37:19 | access to local variable sink1 | provenance | | -| GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | provenance | MaD:17 | +| GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | provenance | MaD:21 | | GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:36:13:36:17 | access to local variable sink1 : String | provenance | | | GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | provenance | | -| GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | provenance | MaD:16 | +| GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | provenance | MaD:20 | | GlobalDataFlowStringBuilder.cs:41:13:41:17 | access to local variable sink2 : String | GlobalDataFlowStringBuilder.cs:42:15:42:19 | access to local variable sink2 | provenance | | -| GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | provenance | MaD:17 | +| GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | provenance | MaD:21 | | GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:41:13:41:17 | access to local variable sink2 : String | provenance | | | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | provenance | | | GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | provenance | | -| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | provenance | MaD:16 | +| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | provenance | MaD:20 | | GlobalDataFlowStringBuilder.cs:49:13:49:17 | access to local variable sink3 : String | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | provenance | | -| GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | provenance | MaD:17 | +| GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | provenance | MaD:21 | | GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:49:13:49:17 | access to local variable sink3 : String | provenance | | | MultiImplementationA.cs:5:28:5:41 | "taint source" : String | MultiImplementationA.cs:7:27:7:27 | x : String | provenance | | | MultiImplementationA.cs:7:27:7:27 | x : String | MultiImplementationA.cs:7:39:7:39 | access to parameter x | provenance | | @@ -580,121 +1013,250 @@ edges | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | +| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | semmle.label | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | semmle.label | access to local variable sink27 : String | | Capture.cs:11:26:11:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | [post] access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | +| Capture.cs:14:9:14:18 | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureIn1 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | +| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | semmle.label | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | semmle.label | access to local variable sink28 : String | | Capture.cs:20:30:20:36 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:21:23:21:28 | access to local variable sink28 | semmle.label | access to local variable sink28 | +| Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | semmle.label | [post] access to local function M : M [captured tainted] : String | +| Capture.cs:23:13:23:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | +| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | semmle.label | access to local variable sink29 : String | | Capture.cs:29:26:29:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:30:19:30:24 | access to local variable sink29 | semmle.label | access to local variable sink29 | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : (...) => ... [captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:33:30:33:39 | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureIn3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | access to local variable captureIn3 : Func [captured tainted] : String | +| Capture.cs:41:9:48:9 | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | semmle.label | CaptureIn2NotCalled(...) : CaptureIn2NotCalled [captured tainted] : String | +| Capture.cs:49:9:49:27 | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | semmle.label | [post] access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | +| Capture.cs:49:9:49:27 | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | semmle.label | access to local function CaptureIn2NotCalled : CaptureIn2NotCalled [captured tainted] : String | | Capture.cs:50:50:50:55 | sink39 : String | semmle.label | sink39 : String | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:57:27:57:32 | access to parameter sink39 | semmle.label | access to parameter sink39 | +| Capture.cs:61:9:61:19 | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | semmle.label | [post] access to local function CaptureTest : null [delegate argument at position 1] : String | | Capture.cs:61:36:61:42 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Capture.cs:67:9:70:9 | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | semmle.label | CaptureOut1(...) : CaptureOut1 [captured sink30] : String | | Capture.cs:69:22:69:35 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:71:9:71:19 | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | semmle.label | [post] access to local function CaptureOut1 : CaptureOut1 [captured sink30] : String | | Capture.cs:72:15:72:20 | access to local variable sink30 | semmle.label | access to local variable sink30 | +| Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | semmle.label | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | semmle.label | M(...) : M [captured sink31] : String | +| Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | semmle.label | M(...) : M [captured sink31] : String | | Capture.cs:79:26:79:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | semmle.label | [post] access to local function M : M [captured sink31] : String | +| Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | semmle.label | [post] access to local function M : M [captured sink31] : String | +| Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | semmle.label | access to local function M : M [captured sink31] : String | | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | semmle.label | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | semmle.label | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | semmle.label | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | | Capture.cs:84:15:84:20 | access to local variable sink31 | semmle.label | access to local variable sink31 | +| Capture.cs:87:30:87:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | access to local variable captureOut3 : (...) => ... [captured sink32] : String | +| Capture.cs:87:44:91:9 | (...) => ... : (...) => ... [captured sink32] : String | semmle.label | (...) => ... : (...) => ... [captured sink32] : String | | Capture.cs:89:22:89:35 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:92:30:92:40 | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | [post] access to local variable captureOut3 : (...) => ... [captured sink32] : String | +| Capture.cs:92:30:92:40 | access to local variable captureOut3 : (...) => ... [captured sink32] : String | semmle.label | access to local variable captureOut3 : (...) => ... [captured sink32] : String | | Capture.cs:93:15:93:20 | access to local variable sink32 | semmle.label | access to local variable sink32 | +| Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | semmle.label | (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | semmle.label | (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink40] : String | | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | semmle.label | [post] (...) => ... : (...) => ... [captured sink40] : String | | Capture.cs:116:26:116:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | +| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | | Capture.cs:132:22:132:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | semmle.label | M(...) : M [captured sink34] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | semmle.label | M(...) : M [captured sink34] : String | +| Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:142:26:142:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | semmle.label | [post] access to local function M : M [captured tainted] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | semmle.label | access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | semmle.label | access to local function M : M [captured sink34] : String | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | semmle.label | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | +| Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | +| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | | Capture.cs:160:20:160:26 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | semmle.label | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [delegate return] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | | Capture.cs:163:15:163:20 | access to local variable sink36 | semmle.label | access to local variable sink36 | +| Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | semmle.label | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | | Capture.cs:166:37:166:37 | p : String | semmle.label | p : String | | Capture.cs:168:22:168:22 | access to parameter p : String | semmle.label | access to parameter p : String | | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | semmle.label | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | semmle.label | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | +| Capture.cs:180:9:186:9 | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | CaptureThrough2NotCalled(...) : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:187:9:187:32 | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | [post] access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:187:9:187:32 | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | semmle.label | access to local function CaptureThrough2NotCalled : CaptureThrough2NotCalled [captured tainted] : String | +| Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | semmle.label | Id(...) : Id [delegate return] : String | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | +| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | semmle.label | M(...) : M [captured s] : String | +| Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | semmle.label | M(...) : M [delegate return] : String | | Capture.cs:192:27:192:27 | access to parameter s : String | semmle.label | access to parameter s : String | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local function M : null [delegate argument at position -1, captured s] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | +| Capture.cs:193:20:193:20 | access to local function M : M [delegate return] : String | semmle.label | access to local function M : M [delegate return] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | semmle.label | [post] access to local function Id : null [delegate argument at position 0] : String | +| Capture.cs:196:22:196:23 | access to local function Id : Id [delegate return] : String | semmle.label | access to local function Id : Id [delegate return] : String | | Capture.cs:196:22:196:32 | call to local function Id : String | semmle.label | call to local function Id : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:197:15:197:20 | access to local variable sink38 | semmle.label | access to local variable sink38 | +| Capture.cs:198:20:198:21 | access to local function Id : Id [delegate return] : String | semmle.label | access to local function Id : Id [delegate return] : String | +| Capture.cs:198:20:198:25 | call to local function Id : String | semmle.label | call to local function Id : String | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | semmle.label | access to local variable nonSink0 | | Capture.cs:202:20:202:20 | s : String | semmle.label | s : String | +| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | +| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | | Capture.cs:206:19:206:19 | access to parameter s | semmle.label | access to parameter s | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | +| Capture.cs:208:9:208:9 | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured s] : String | +| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | semmle.label | access to local variable a : Action [captured s] : String | | Capture.cs:211:21:211:34 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:213:22:213:22 | s : String | semmle.label | s : String | -| Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | -| Capture.cs:217:19:217:19 | access to parameter s | semmle.label | access to parameter s | -| Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | semmle.label | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:221:21:221:34 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | semmle.label | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:223:31:223:44 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:228:17:228:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | semmle.label | [post] (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:229:20:233:9 | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position -1, captured x] : String | | Capture.cs:231:19:231:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:232:17:232:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:234:15:234:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:242:19:242:32 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:246:19:246:25 | access to field Field | semmle.label | access to field Field | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:247:23:247:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | +| Capture.cs:249:9:249:9 | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured c, field Field] : String | +| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | semmle.label | access to local variable a : Action [captured c, field Field] : String | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:251:15:251:21 | access to field Field | semmle.label | access to field Field | +| Capture.cs:262:16:262:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | +| Capture.cs:262:20:265:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:264:23:264:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:268:15:268:21 | access to field Field | semmle.label | access to field Field | | Capture.cs:273:19:273:19 | x : String | semmle.label | x : String | +| Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | Capture.cs:273:30:273:30 | access to parameter x | semmle.label | access to parameter x | | Capture.cs:273:34:273:47 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:278:17:278:30 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | +| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:284:23:284:23 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:285:21:285:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | semmle.label | [post] access to local variable inner : Action [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | semmle.label | [post] access to local variable inner : Action [captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable inner : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | +| Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | semmle.label | [post] access to local variable middle : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [captured x] : String | semmle.label | [post] access to local variable middle : Action [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | semmle.label | access to local variable middle : Action [captured x] : String | | Capture.cs:292:15:292:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:297:22:297:35 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | +| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:301:19:301:28 | access to field Field | semmle.label | access to field Field | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:302:26:302:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : Action [delegate argument at position -1, captured this in M10, field Field] : String | +| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | access to local variable a : Action [captured this in M10, field Field] : String | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:306:15:306:24 | access to field Field | semmle.label | access to field Field | @@ -703,23 +1265,49 @@ nodes | Capture.cs:318:17:318:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:319:19:319:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:328:17:328:30 | "taint source" : String | semmle.label | "taint source" : String | +| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | semmle.label | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | | Capture.cs:330:47:330:47 | access to local variable x | semmle.label | access to local variable x | +| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | semmle.label | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | semmle.label | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | | Capture.cs:339:17:339:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:341:45:341:45 | access to local variable x | semmle.label | access to local variable x | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | +| Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | [post] access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | semmle.label | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | semmle.label | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | -| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | +| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | semmle.label | a : (...) => ... [captured sink40] : String | +| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | semmle.label | a [Return] : (...) => ... [captured sink39] : String | | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | semmle.label | a [Return] : (...) => ... [captured sink40] : String | -| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | semmle.label | [post] access to parameter a : (...) => ... [captured sink40] : String | -| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | semmle.label | access to parameter a : (...) => ... [captured s] : String | +| Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | semmle.label | a [Return] : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | semmle.label | a [Return] : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:352:9:352:9 | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position -1, captured sink39] : String | | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String | | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String | +| Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | semmle.label | a [Return] : Action [delegate argument at position 0] : String | | Capture.cs:355:45:355:45 | x : String | semmle.label | x : String | +| Capture.cs:357:9:357:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | Capture.cs:357:11:357:11 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:18:9:18:23 | access to field SinkField0 : String | semmle.label | access to field SinkField0 : String | | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | semmle.label | "taint source" : String | @@ -731,15 +1319,21 @@ nodes | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | semmle.label | sinkParam2 : String | | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | semmle.label | access to parameter sinkParam2 | +| GlobalDataFlow.cs:46:9:46:11 | [post] access to local variable in2 : Action [delegate argument at position 0] : String | semmle.label | [post] access to local variable in2 : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:54:15:54:15 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | +| GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:57:37:57:37 | x : String | semmle.label | x : String | | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | semmle.label | access to property SinkProperty0 : String | | GlobalDataFlow.cs:71:13:71:17 | access to local variable sink0 : String | semmle.label | access to local variable sink0 : String | @@ -764,6 +1358,8 @@ nodes | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | semmle.label | access to local variable sink3 : String | | GlobalDataFlow.cs:81:79:81:79 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | semmle.label | access to local variable sink13 | | GlobalDataFlow.cs:83:13:83:18 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | @@ -772,6 +1368,8 @@ nodes | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | semmle.label | access to local variable sink13 : String | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | semmle.label | access to local variable sink14 | | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | semmle.label | call to method Zip : IEnumerable [element] : String | @@ -779,6 +1377,8 @@ nodes | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:85:118:85:118 | x : String | semmle.label | x : String | | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | semmle.label | access to local variable sink15 | @@ -788,6 +1388,8 @@ nodes | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | +| GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 1] : String | | GlobalDataFlow.cs:87:121:87:121 | y : String | semmle.label | y : String | | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | semmle.label | access to local variable sink16 | @@ -796,17 +1398,25 @@ nodes | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:89:83:89:101 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:89:83:89:101 | [post] (...) => ... : Func [delegate argument at position 1] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 1] : String | | GlobalDataFlow.cs:89:89:89:89 | s : String | semmle.label | s : String | | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | semmle.label | ... + ... : String | | GlobalDataFlow.cs:89:104:89:104 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:89:104:89:109 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:89:104:89:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | semmle.label | access to local variable sink17 | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | semmle.label | access to local variable sink18 : String | | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | semmle.label | call to method Aggregate : String | | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:91:83:91:101 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:91:83:91:101 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:91:84:91:86 | acc : String | semmle.label | acc : String | | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | semmle.label | ... + ... : String | | GlobalDataFlow.cs:91:104:91:104 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:91:104:91:109 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:91:104:91:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | semmle.label | access to local variable sink18 | | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | semmle.label | access to local variable sink18 : String | @@ -818,15 +1428,27 @@ nodes | GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | semmle.label | access to local variable sink18 : String | | GlobalDataFlow.cs:100:82:100:88 | access to local variable sink21b : Int32 | semmle.label | access to local variable sink21b : Int32 | | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | semmle.label | access to local variable sink21b | +| GlobalDataFlow.cs:138:30:138:36 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:138:40:138:40 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | semmle.label | delegate creation of type Func : Return`1 [delegate return] : String | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:139:13:139:17 | access to local variable sink4 : String | semmle.label | access to local variable sink4 : String | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable return : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:139:21:139:27 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | semmle.label | access to local variable sink3 : String | | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | semmle.label | access to local variable sink4 | +| GlobalDataFlow.cs:143:9:143:16 | access to local variable nonSink0 : String | semmle.label | access to local variable nonSink0 : String | +| GlobalDataFlow.cs:143:20:143:26 | access to local variable return : (...) => ... [delegate return] : String | semmle.label | access to local variable return : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:143:20:143:36 | delegate call : String | semmle.label | delegate call : String | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | semmle.label | access to local variable nonSink0 | | GlobalDataFlow.cs:147:13:147:17 | access to local variable sink5 : String | semmle.label | access to local variable sink5 : String | | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | semmle.label | delegate creation of type Func : Return`1 [delegate return] : String | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | semmle.label | access to local variable sink4 : String | | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | semmle.label | access to local variable sink5 | | GlobalDataFlow.cs:157:13:157:17 | access to local variable sink6 : String | semmle.label | access to local variable sink6 : String | @@ -843,13 +1465,17 @@ nodes | GlobalDataFlow.cs:167:13:167:18 | access to local variable sink23 : String | semmle.label | access to local variable sink23 : String | | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | semmle.label | call to method TaintedParam : String | | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | semmle.label | access to local variable sink23 | +| GlobalDataFlow.cs:183:22:183:25 | access to local variable out : (...) => ... [delegate return] : String | semmle.label | access to local variable out : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:183:29:183:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:184:13:184:17 | access to local variable sink9 : String | semmle.label | access to local variable sink9 : String | +| GlobalDataFlow.cs:184:21:184:24 | access to local variable out : (...) => ... [delegate return] : String | semmle.label | access to local variable out : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | semmle.label | access to local variable sink9 | | GlobalDataFlow.cs:193:13:193:18 | access to local variable sink10 : String | semmle.label | access to local variable sink10 : String | | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | semmle.label | object creation of type Lazy : Lazy [property Value] : String | | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | semmle.label | access to property Value : String | +| GlobalDataFlow.cs:193:39:193:41 | delegate creation of type Func : Out [delegate return] : String | semmle.label | delegate creation of type Func : Out [delegate return] : String | | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | semmle.label | access to local variable sink10 | | GlobalDataFlow.cs:201:13:201:18 | access to local variable sink19 : String | semmle.label | access to local variable sink19 : String | | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | semmle.label | access to property OutProperty : String | @@ -859,29 +1485,90 @@ nodes | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | semmle.label | call to method AsQueryable : IQueryable [element] : String | | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | semmle.label | "taint source" : String | +| GlobalDataFlow.cs:214:30:214:31 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | semmle.label | sinkParam10 : String | +| GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | semmle.label | access to parameter sinkParam10 | | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | semmle.label | access to parameter sinkParam10 : String | +| GlobalDataFlow.cs:215:66:215:67 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:215:71:215:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | semmle.label | call to method ReturnCheck2 : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | semmle.label | access to local variable sink24 : String | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable f1 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:216:37:216:38 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | semmle.label | access to local variable sink24 | | GlobalDataFlow.cs:218:13:218:18 | access to local variable sink25 : String | semmle.label | access to local variable sink25 : String | | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:218:37:218:38 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | semmle.label | access to local variable sink25 | | GlobalDataFlow.cs:220:13:220:18 | access to local variable sink26 : String | semmle.label | access to local variable sink26 : String | | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | semmle.label | access to local variable tainted : IQueryable [element] : String | | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | semmle.label | access to local variable sink26 | +| GlobalDataFlow.cs:224:30:224:31 | access to local variable f3 : (...) => ... [delegate return] : String | semmle.label | access to local variable f3 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | semmle.label | nonSinkParam : String | +| GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | semmle.label | access to parameter nonSinkParam | +| GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | semmle.label | access to parameter nonSinkParam : String | +| GlobalDataFlow.cs:225:66:225:67 | access to local variable f4 : (...) => ... [delegate return] : String | semmle.label | access to local variable f4 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:225:71:225:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | semmle.label | call to method NonReturnCheck : String | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:226:13:226:19 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:226:23:226:32 | [post] access to local variable notTainted : IEnumerable [element] : String | semmle.label | [post] access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:226:23:226:43 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:226:23:226:51 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : (...) => ... [delegate return] : String | semmle.label | access to local variable f1 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:226:41:226:42 | access to local variable f1 : Func [delegate argument at position 0] : String | semmle.label | access to local variable f1 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:228:9:228:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:228:19:228:28 | [post] access to local variable notTainted : IQueryable [element] : String | semmle.label | [post] access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:228:19:228:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:228:19:228:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | +| GlobalDataFlow.cs:228:19:228:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : (...) => ... [delegate return] : String | semmle.label | access to local variable f2 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:228:37:228:38 | access to local variable f2 : Expression> [delegate argument at position 0] : String | semmle.label | access to local variable f2 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:230:9:230:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:230:19:230:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:230:19:230:39 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:230:19:230:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable f3 : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:230:37:230:38 | access to local variable f3 : (...) => ... [delegate return] : String | semmle.label | access to local variable f3 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:232:9:232:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:232:19:232:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:232:19:232:39 | call to method Select : IQueryable [element] : String | semmle.label | call to method Select : IQueryable [element] : String | +| GlobalDataFlow.cs:232:19:232:47 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | semmle.label | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | +| GlobalDataFlow.cs:232:37:232:38 | access to local variable f4 : (...) => ... [delegate return] : String | semmle.label | access to local variable f4 : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | +| GlobalDataFlow.cs:234:9:234:15 | access to local variable nonSink : String | semmle.label | access to local variable nonSink : String | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IEnumerable [element] : String | semmle.label | access to local variable notTainted : IEnumerable [element] : String | +| GlobalDataFlow.cs:234:19:234:28 | access to local variable notTainted : IQueryable [element] : String | semmle.label | access to local variable notTainted : IQueryable [element] : String | +| GlobalDataFlow.cs:234:19:234:49 | call to method Select : IEnumerable [element] : String | semmle.label | call to method Select : IEnumerable [element] : String | +| GlobalDataFlow.cs:234:19:234:57 | call to method First : String | semmle.label | call to method First : String | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | semmle.label | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | semmle.label | access to local variable nonSink | | GlobalDataFlow.cs:241:13:241:16 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | semmle.label | call to method Run : Task [property Result] : String | +| GlobalDataFlow.cs:241:29:241:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:242:13:242:18 | access to local variable sink41 : String | semmle.label | access to local variable sink41 : String | | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | @@ -910,6 +1597,8 @@ nodes | GlobalDataFlow.cs:300:13:300:13 | access to local variable y : String | semmle.label | access to local variable y : String | | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | semmle.label | call to method ApplyFunc : String | | GlobalDataFlow.cs:300:27:300:28 | x0 : String | semmle.label | x0 : String | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | semmle.label | access to parameter x0 : String | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | semmle.label | ... ? ... : ... : String | @@ -926,27 +1615,32 @@ nodes | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | semmle.label | sinkParam11 : String | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | semmle.label | access to parameter sinkParam11 | | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | semmle.label | access to parameter sinkParam11 : String | +| GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | semmle.label | nonSinkParam : String | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | semmle.label | access to parameter nonSinkParam | +| GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | semmle.label | access to parameter nonSinkParam : String | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:351:9:351:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | semmle.label | "taint source" : String | +| GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | semmle.label | a [Return] : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:382:41:382:41 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:384:9:384:9 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | semmle.label | f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | semmle.label | f : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | semmle.label | f [Return] : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:387:46:387:46 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:389:16:389:16 | [post] access to parameter f : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : (...) => ... [delegate return] : String | semmle.label | access to parameter f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:389:16:389:16 | access to parameter f : Return`1 [delegate return] : String | semmle.label | access to parameter f : Return`1 [delegate return] : String | | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | semmle.label | a [Return] : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | semmle.label | x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| GlobalDataFlow.cs:398:9:398:9 | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:401:39:401:45 | tainted : String | semmle.label | tainted : String | | GlobalDataFlow.cs:403:13:403:18 | access to local variable sink11 : String | semmle.label | access to local variable sink11 : String | @@ -962,6 +1656,7 @@ nodes | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | semmle.label | access to local variable sink44 | | GlobalDataFlow.cs:457:13:457:16 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | semmle.label | call to method Run : Task [property Result] : String | +| GlobalDataFlow.cs:457:29:457:48 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:458:13:458:21 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | semmle.label | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | semmle.label | access to local variable task : Task [property Result] : String | @@ -976,7 +1671,9 @@ nodes | GlobalDataFlow.cs:466:53:466:55 | arg : String | semmle.label | arg : String | | GlobalDataFlow.cs:469:21:469:21 | s : String | semmle.label | s : String | | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | semmle.label | access to parameter s | +| GlobalDataFlow.cs:470:13:470:13 | [post] access to parameter a : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter a : Action [delegate argument at position 0] : String | | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | semmle.label | access to parameter arg : String | +| GlobalDataFlow.cs:473:9:473:13 | [post] access to local function Inner : null [delegate argument at position 2] : String | semmle.label | [post] access to local function Inner : null [delegate argument at position 2] : String | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | @@ -1021,7 +1718,11 @@ nodes | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | semmle.label | e : null [element] : String | +| GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | semmle.label | f : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | semmle.label | f [Return] : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | semmle.label | access to parameter e : null [element] : String | +| GlobalDataFlow.cs:558:44:558:44 | [post] access to parameter f : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:558:44:558:44 | access to parameter f : (...) => ... [delegate return] : String | semmle.label | access to parameter f : (...) => ... [delegate return] : String | | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | semmle.label | delegate call : String | | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | semmle.label | access to local variable x : String | | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | semmle.label | sb [Return] : StringBuilder | @@ -1100,39 +1801,96 @@ nodes | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s | subpaths +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:23:13:23:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:25:9:25:18 | [post] access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | +| Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:52:23:59:13 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : (...) => ... [captured sink39] : String | +| Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a [Return] : Action [delegate argument at position -1, captured sink39] : String | Capture.cs:55:27:58:17 | [post] (...) => ... : Action [delegate argument at position -1, captured sink39] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : null [delegate argument at position -1, captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:75:9:82:9 | CaptureOut2(...) : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:77:13:80:13 | M(...) : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:83:9:83:19 | access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | Capture.cs:81:13:81:13 | access to local function M : M [captured sink31] : String | Capture.cs:81:13:81:13 | [post] access to local function M : M [captured sink31] : String | Capture.cs:83:9:83:19 | [post] access to local function CaptureOut2 : CaptureOut2 [captured sink31] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | +| Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : null [delegate argument at position -1, captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:112:9:122:9 | CaptureOutMultipleLambdas(...) : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:123:9:123:33 | access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:114:23:117:13 | (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | +| Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : null [delegate argument at position -1, captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:140:13:143:13 | M(...) : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured sink34] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:140:13:143:13 | M(...) : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : Func [delegate argument at position -1, captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured sink35] : String | +| Capture.cs:162:22:162:36 | [post] access to local function CaptureThrough4 : null [delegate argument at position -1, captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [delegate return] : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | +| Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : null [delegate argument at position 0] : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:166:9:169:9 | CaptureThrough5(...) : CaptureThrough5 [captured sink37] : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:193:20:193:20 | [post] access to local function M : null [delegate argument at position -1, captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:13:192:28 | M(...) : M [delegate return] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:193:20:193:22 | call to local function M : String | +| Capture.cs:196:22:196:23 | [post] access to local function Id : null [delegate argument at position 0] : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:190:9:194:9 | Id(...) : Id [delegate return] : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:196:22:196:32 | call to local function Id : String | -| Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | -| Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | +| Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | Capture.cs:355:40:355:40 | a [Return] : Action [delegate argument at position 0] : String | Capture.cs:273:19:273:31 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:290:9:290:14 | [post] access to local variable middle : Action [delegate argument at position -1, captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : Action [captured x] : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | +| Capture.cs:334:9:334:30 | [post] access to local function CapturingLocalFunction : null [delegate argument at position -1, captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | [post] access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| Capture.cs:345:9:345:23 | [post] access to local variable capturingLambda : Action [delegate argument at position -1, captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:343:40:343:53 | [post] access to local variable capturedLambda : Action [delegate argument at position -1, captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, delegate argument at position -1, captured x] : String | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:53:15:53:17 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:382:36:382:36 | a [Return] : Action [delegate argument at position 0] : String | GlobalDataFlow.cs:54:15:54:25 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:55:23:55:41 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:56:23:56:25 | [post] delegate creation of type MyDelegate : MyDelegate [delegate argument at position 0] : String | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:396:42:396:42 | a [Return] : MyDelegate [delegate argument at position 0] : String | GlobalDataFlow.cs:58:23:58:32 | [post] access to field myDelegate : MyDelegate [delegate argument at position 0] : String | | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | GlobalDataFlow.cs:76:30:76:34 | access to local variable sink2 : String | | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | GlobalDataFlow.cs:79:30:79:34 | access to local variable sink3 : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:104:91:104 | x : String | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:553:85:553:85 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:553:85:553:85 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | +| GlobalDataFlow.cs:81:79:81:84 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:81:79:81:84 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:83:76:83:86 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:76:83:86 | delegate creation of type Func : ReturnCheck`1 [delegate return] : String | +| GlobalDataFlow.cs:85:117:85:127 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:117:85:127 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:87:117:87:127 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:117:87:127 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:89:83:89:101 | [post] (...) => ... : Func [delegate argument at position 1] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | GlobalDataFlow.cs:89:83:89:101 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:89:104:89:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | GlobalDataFlow.cs:89:104:89:109 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:91:83:91:101 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | GlobalDataFlow.cs:91:83:91:101 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:91:104:91:109 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:91:104:91:104 | x : String | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | GlobalDataFlow.cs:91:104:91:109 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:138:55:138:60 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:55:138:60 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | +| GlobalDataFlow.cs:139:21:139:27 | [post] access to local variable return : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | GlobalDataFlow.cs:138:40:138:64 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | +| GlobalDataFlow.cs:147:31:147:36 | delegate creation of type Func : Return`1 [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : Return`1 [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:147:31:147:36 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | +| GlobalDataFlow.cs:216:37:216:38 | [post] access to local variable f1 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:214:35:214:92 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:218:37:218:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:220:37:220:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:37:220:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:225:91:225:91 | access to parameter x : String | GlobalDataFlow.cs:333:34:333:45 | nonSinkParam : String | GlobalDataFlow.cs:336:16:336:27 | access to parameter nonSinkParam : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | +| GlobalDataFlow.cs:228:37:228:38 | [post] access to local variable f2 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2 : String | GlobalDataFlow.cs:215:71:215:90 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:230:37:230:38 | [post] access to local variable f3 : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:224:35:224:46 | nonSinkParam : String | GlobalDataFlow.cs:224:81:224:92 | access to parameter nonSinkParam : String | GlobalDataFlow.cs:224:35:224:95 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:232:37:232:38 | [post] access to local variable f4 : Expression> [delegate argument at position 0] : String | GlobalDataFlow.cs:225:71:225:71 | x : String | GlobalDataFlow.cs:225:76:225:92 | call to method NonReturnCheck : String | GlobalDataFlow.cs:225:71:225:92 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:234:37:234:48 | [post] delegate creation of type Func : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:234:37:234:48 | delegate creation of type Func : ReturnCheck3`1 [delegate return] : String | +| GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | GlobalDataFlow.cs:387:41:387:41 | f : (...) => ... [delegate return] : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | +| GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:300:27:300:34 | (...) => ... : (...) => ... [delegate return] : String | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:387:41:387:41 | f [Return] : Func [delegate argument at position 0] : String | GlobalDataFlow.cs:300:27:300:34 | [post] (...) => ... : Func [delegate argument at position 0] : String | | GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | | GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:22:65:22:66 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | @@ -1156,21 +1914,24 @@ subpaths | Capture.cs:163:15:163:20 | access to local variable sink36 | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:163:15:163:20 | access to local variable sink36 | access to local variable sink36 | | Capture.cs:171:15:171:20 | access to local variable sink37 | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:171:15:171:20 | access to local variable sink37 | access to local variable sink37 | | Capture.cs:197:15:197:20 | access to local variable sink38 | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:197:15:197:20 | access to local variable sink38 | access to local variable sink38 | +| Capture.cs:199:15:199:22 | access to local variable nonSink0 | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:199:15:199:22 | access to local variable nonSink0 | access to local variable nonSink0 | | Capture.cs:206:19:206:19 | access to parameter s | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:206:19:206:19 | access to parameter s | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:217:19:217:19 | access to parameter s | access to parameter s | -| Capture.cs:217:19:217:19 | access to parameter s | Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:217:19:217:19 | access to parameter s | access to parameter s | | Capture.cs:231:19:231:19 | access to local variable x | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:231:19:231:19 | access to local variable x | access to local variable x | +| Capture.cs:231:19:231:19 | access to local variable x | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:231:19:231:19 | access to local variable x | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | Capture.cs:228:17:228:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | access to local variable x | | Capture.cs:234:15:234:15 | access to local variable x | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:234:15:234:15 | access to local variable x | access to local variable x | | Capture.cs:246:19:246:25 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:246:19:246:25 | access to field Field | access to field Field | +| Capture.cs:246:19:246:25 | access to field Field | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:246:19:246:25 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | | Capture.cs:268:15:268:21 | access to field Field | Capture.cs:264:23:264:36 | "taint source" : String | Capture.cs:268:15:268:21 | access to field Field | access to field Field | | Capture.cs:273:30:273:30 | access to parameter x | Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:273:30:273:30 | access to parameter x | access to parameter x | | Capture.cs:284:23:284:23 | access to local variable x | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:284:23:284:23 | access to local variable x | access to local variable x | +| Capture.cs:284:23:284:23 | access to local variable x | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:284:23:284:23 | access to local variable x | access to local variable x | | Capture.cs:292:15:292:15 | access to local variable x | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | access to local variable x | | Capture.cs:292:15:292:15 | access to local variable x | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | access to local variable x | | Capture.cs:301:19:301:28 | access to field Field | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:301:19:301:28 | access to field Field | access to field Field | +| Capture.cs:301:19:301:28 | access to field Field | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:301:19:301:28 | access to field Field | access to field Field | | Capture.cs:306:15:306:24 | access to field Field | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:306:15:306:24 | access to field Field | access to field Field | | Capture.cs:306:15:306:24 | access to field Field | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:306:15:306:24 | access to field Field | access to field Field | | Capture.cs:312:15:312:15 | access to local variable x | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | access to local variable x | @@ -1194,6 +1955,7 @@ subpaths | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | access to local variable sink22 | | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | access to local variable sink21b | | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | access to local variable sink4 | +| GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:144:15:144:22 | access to local variable nonSink0 | access to local variable nonSink0 | | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | access to local variable sink5 | | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | access to local variable sink6 | | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | access to local variable sink7 | @@ -1207,6 +1969,12 @@ subpaths | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | access to local variable sink24 | | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | access to local variable sink25 | | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | access to local variable sink26 | +| GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:224:59:224:70 | access to parameter nonSinkParam | access to parameter nonSinkParam | +| GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:227:15:227:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:229:15:229:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:231:15:231:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:233:15:233:21 | access to local variable nonSink | access to local variable nonSink | +| GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:235:15:235:21 | access to local variable nonSink | access to local variable nonSink | | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | access to local variable sink41 | | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | access to local variable sink42 | | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | access to parameter sinkParam0 | @@ -1219,6 +1987,7 @@ subpaths | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | access to parameter sinkParam8 | | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | access to parameter sinkParam9 | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | access to parameter sinkParam11 | +| GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:335:15:335:26 | access to parameter nonSinkParam | access to parameter nonSinkParam | | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | access to local variable sink11 | | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | access to local variable sink20 | | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | GlobalDataFlow.cs:448:51:448:64 | "taint source" : String | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | access to local variable sink44 | diff --git a/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.cs b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.cs new file mode 100644 index 000000000000..8d10f24b0678 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.cs @@ -0,0 +1,190 @@ +using System; + +public class LambdaFlow +{ + /// + /// Flow into a normal method + /// + class Ex1 + { + void M1(string s) + { + Sink(s); // $ hasValueFlow=1 + } + + public void M2() + { + var source = Source(1); + M1(source); + } + } + + + + + + + + /// + /// Flow into a lambda + /// + class Ex2 + { + void M1(Action lambda) + { + var source = Source(2); + lambda(source); + } + + void M2() + { + Action lambda = x => Sink(x); // $ hasValueFlow=2 + M1(lambda); + } + } + + + + + + + + /// + /// Flow out of a lambda + /// + class Ex3 + { + Func M1() + { + return () => Source(3); + } + + void M2() + { + var lambda = M1(); + Sink(lambda()); // $ hasValueFlow=3 + } + } + + + + + + + + /// + /// Flow through a lambda + /// + class Ex4 + { + string M1(Func lambda, string input) + { + return lambda(input); + } + + void M2() + { + Func id = x => x; + var source = Source(4); + var output = M1(id, source); + Sink(output); // $ hasValueFlow=4 + } + } + + + + + + + + /// + /// No flow into lambda (call context sensitivity) + /// + class Ex5 + { + void M1(Action lambda, string input) + { + lambda(input); + } + + void M2(Action lambda, string input) + { + M1(lambda, input); + } + + void M3() + { + Action lambda1 = arg => Sink(arg); + Action lambda2 = arg => { }; + + var source = Source(5); + var nonSource = "non-source"; + + M1(lambda1, nonSource); + M1(lambda2, source); + + M2(lambda1, nonSource); + M2(lambda2, source); + } + } + + + + + + + + /// + /// Flow into a returned lambda + /// + class Ex6 + { + Action M1() + { + return x => Sink(x); // $ hasValueFlow=6 + } + + void M2() + { + var source = Source(6); + var lambda = M1(); + lambda(source); + } + } + + + + + + + + /// + /// No flow through lambda + /// + class Ex7 + { + void M1(Func lambda) + { + var source = Source(7); + lambda(source); + } + + void M2(Func lambda) + { + var nonSource = "non-source"; + var output = lambda(nonSource); + Sink(output); + } + + void M3() + { + Func id = x => x; + M1(id); + M2(id); + } + } + + static string Source(int source) => source.ToString(); + + static void Sink(string value) { } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.expected b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.expected new file mode 100644 index 000000000000..a24a0dd550ee --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.expected @@ -0,0 +1,120 @@ +models +edges +| LambdaFlow.cs:10:24:10:24 | s : String | LambdaFlow.cs:12:18:12:18 | access to parameter s | provenance | | +| LambdaFlow.cs:17:17:17:22 | access to local variable source : String | LambdaFlow.cs:18:16:18:21 | access to local variable source : String | provenance | | +| LambdaFlow.cs:17:26:17:34 | call to method Source : String | LambdaFlow.cs:17:17:17:22 | access to local variable source : String | provenance | | +| LambdaFlow.cs:18:16:18:21 | access to local variable source : String | LambdaFlow.cs:10:24:10:24 | s : String | provenance | | +| LambdaFlow.cs:33:32:33:37 | lambda [Return] : Action [delegate argument at position 0] : String | LambdaFlow.cs:42:16:42:21 | [post] access to local variable lambda : Action [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:35:17:35:22 | access to local variable source : String | LambdaFlow.cs:36:20:36:25 | access to local variable source : String | provenance | | +| LambdaFlow.cs:35:26:35:34 | call to method Source : String | LambdaFlow.cs:35:17:35:22 | access to local variable source : String | provenance | | +| LambdaFlow.cs:36:13:36:18 | [post] access to parameter lambda : Action [delegate argument at position 0] : String | LambdaFlow.cs:33:32:33:37 | lambda [Return] : Action [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:36:20:36:25 | access to local variable source : String | LambdaFlow.cs:36:13:36:18 | [post] access to parameter lambda : Action [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:41:37:41:37 | x : String | LambdaFlow.cs:41:47:41:47 | access to parameter x | provenance | | +| LambdaFlow.cs:42:16:42:21 | [post] access to local variable lambda : Action [delegate argument at position 0] : String | LambdaFlow.cs:41:37:41:37 | x : String | provenance | | +| LambdaFlow.cs:59:20:59:34 | (...) => ... : (...) => ... [delegate return] : String | LambdaFlow.cs:64:26:64:29 | call to method M1 : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:59:26:59:34 | call to method Source : String | LambdaFlow.cs:59:20:59:34 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:64:17:64:22 | access to local variable lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:65:18:65:23 | access to local variable lambda : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:64:26:64:29 | call to method M1 : (...) => ... [delegate return] : String | LambdaFlow.cs:64:17:64:22 | access to local variable lambda : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:65:18:65:23 | access to local variable lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:65:18:65:25 | delegate call | provenance | | +| LambdaFlow.cs:80:40:80:45 | lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:82:20:82:25 | access to parameter lambda : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:80:55:80:59 | input : String | LambdaFlow.cs:82:27:82:31 | access to parameter input : String | provenance | | +| LambdaFlow.cs:82:20:82:25 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | LambdaFlow.cs:80:40:80:45 | lambda [Return] : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:82:20:82:25 | access to parameter lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:82:20:82:32 | delegate call : String | provenance | | +| LambdaFlow.cs:82:27:82:31 | access to parameter input : String | LambdaFlow.cs:82:20:82:25 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:87:34:87:35 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:89:29:89:30 | access to local variable id : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:87:39:87:39 | x : String | LambdaFlow.cs:87:44:87:44 | access to parameter x : String | provenance | | +| LambdaFlow.cs:87:39:87:44 | (...) => ... : (...) => ... [delegate return] : String | LambdaFlow.cs:87:34:87:35 | access to local variable id : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:88:17:88:22 | access to local variable source : String | LambdaFlow.cs:89:33:89:38 | access to local variable source : String | provenance | | +| LambdaFlow.cs:88:26:88:34 | call to method Source : String | LambdaFlow.cs:88:17:88:22 | access to local variable source : String | provenance | | +| LambdaFlow.cs:89:17:89:22 | access to local variable output : String | LambdaFlow.cs:90:18:90:23 | access to local variable output | provenance | | +| LambdaFlow.cs:89:26:89:39 | call to method M1 : String | LambdaFlow.cs:89:17:89:22 | access to local variable output : String | provenance | | +| LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:87:39:87:39 | x : String | provenance | | +| LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:87:39:87:44 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:89:29:89:30 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:80:40:80:45 | lambda : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:89:29:89:30 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:89:26:89:39 | call to method M1 : String | provenance | | +| LambdaFlow.cs:89:33:89:38 | access to local variable source : String | LambdaFlow.cs:80:55:80:59 | input : String | provenance | | +| LambdaFlow.cs:89:33:89:38 | access to local variable source : String | LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:166:38:166:43 | lambda [Return] : Func [delegate argument at position 0] : String | LambdaFlow.cs:182:16:182:17 | [post] access to local variable id : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:168:17:168:22 | access to local variable source : String | LambdaFlow.cs:169:20:169:25 | access to local variable source : String | provenance | | +| LambdaFlow.cs:168:26:168:34 | call to method Source : String | LambdaFlow.cs:168:17:168:22 | access to local variable source : String | provenance | | +| LambdaFlow.cs:169:13:169:18 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | LambdaFlow.cs:166:38:166:43 | lambda [Return] : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:169:20:169:25 | access to local variable source : String | LambdaFlow.cs:169:13:169:18 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | provenance | | +| LambdaFlow.cs:172:38:172:43 | lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:175:26:175:31 | access to parameter lambda : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:175:17:175:22 | access to local variable output : String | LambdaFlow.cs:176:18:176:23 | access to local variable output | provenance | | +| LambdaFlow.cs:175:26:175:31 | access to parameter lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:175:26:175:42 | delegate call : String | provenance | | +| LambdaFlow.cs:175:26:175:42 | delegate call : String | LambdaFlow.cs:175:17:175:22 | access to local variable output : String | provenance | | +| LambdaFlow.cs:181:34:181:35 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:183:16:183:17 | access to local variable id : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:181:39:181:39 | x : String | LambdaFlow.cs:181:44:181:44 | access to parameter x : String | provenance | | +| LambdaFlow.cs:181:39:181:44 | (...) => ... : (...) => ... [delegate return] : String | LambdaFlow.cs:181:34:181:35 | access to local variable id : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:182:16:182:17 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:181:39:181:39 | x : String | provenance | | +| LambdaFlow.cs:182:16:182:17 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:181:39:181:44 | (...) => ... : (...) => ... [delegate return] : String | provenance | | +| LambdaFlow.cs:183:16:183:17 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:172:38:172:43 | lambda : (...) => ... [delegate return] : String | provenance | | +nodes +| LambdaFlow.cs:10:24:10:24 | s : String | semmle.label | s : String | +| LambdaFlow.cs:12:18:12:18 | access to parameter s | semmle.label | access to parameter s | +| LambdaFlow.cs:17:17:17:22 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:17:26:17:34 | call to method Source : String | semmle.label | call to method Source : String | +| LambdaFlow.cs:18:16:18:21 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:33:32:33:37 | lambda [Return] : Action [delegate argument at position 0] : String | semmle.label | lambda [Return] : Action [delegate argument at position 0] : String | +| LambdaFlow.cs:35:17:35:22 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:35:26:35:34 | call to method Source : String | semmle.label | call to method Source : String | +| LambdaFlow.cs:36:13:36:18 | [post] access to parameter lambda : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter lambda : Action [delegate argument at position 0] : String | +| LambdaFlow.cs:36:20:36:25 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:41:37:41:37 | x : String | semmle.label | x : String | +| LambdaFlow.cs:41:47:41:47 | access to parameter x | semmle.label | access to parameter x | +| LambdaFlow.cs:42:16:42:21 | [post] access to local variable lambda : Action [delegate argument at position 0] : String | semmle.label | [post] access to local variable lambda : Action [delegate argument at position 0] : String | +| LambdaFlow.cs:59:20:59:34 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| LambdaFlow.cs:59:26:59:34 | call to method Source : String | semmle.label | call to method Source : String | +| LambdaFlow.cs:64:17:64:22 | access to local variable lambda : (...) => ... [delegate return] : String | semmle.label | access to local variable lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:64:26:64:29 | call to method M1 : (...) => ... [delegate return] : String | semmle.label | call to method M1 : (...) => ... [delegate return] : String | +| LambdaFlow.cs:65:18:65:23 | access to local variable lambda : (...) => ... [delegate return] : String | semmle.label | access to local variable lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:65:18:65:25 | delegate call | semmle.label | delegate call | +| LambdaFlow.cs:80:40:80:45 | lambda : (...) => ... [delegate return] : String | semmle.label | lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:80:40:80:45 | lambda [Return] : Func [delegate argument at position 0] : String | semmle.label | lambda [Return] : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:80:55:80:59 | input : String | semmle.label | input : String | +| LambdaFlow.cs:82:20:82:25 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter lambda : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:82:20:82:25 | access to parameter lambda : (...) => ... [delegate return] : String | semmle.label | access to parameter lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:82:20:82:32 | delegate call : String | semmle.label | delegate call : String | +| LambdaFlow.cs:82:27:82:31 | access to parameter input : String | semmle.label | access to parameter input : String | +| LambdaFlow.cs:87:34:87:35 | access to local variable id : (...) => ... [delegate return] : String | semmle.label | access to local variable id : (...) => ... [delegate return] : String | +| LambdaFlow.cs:87:39:87:39 | x : String | semmle.label | x : String | +| LambdaFlow.cs:87:39:87:44 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| LambdaFlow.cs:87:44:87:44 | access to parameter x : String | semmle.label | access to parameter x : String | +| LambdaFlow.cs:88:17:88:22 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:88:26:88:34 | call to method Source : String | semmle.label | call to method Source : String | +| LambdaFlow.cs:89:17:89:22 | access to local variable output : String | semmle.label | access to local variable output : String | +| LambdaFlow.cs:89:26:89:39 | call to method M1 : String | semmle.label | call to method M1 : String | +| LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable id : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:89:29:89:30 | access to local variable id : (...) => ... [delegate return] : String | semmle.label | access to local variable id : (...) => ... [delegate return] : String | +| LambdaFlow.cs:89:33:89:38 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:90:18:90:23 | access to local variable output | semmle.label | access to local variable output | +| LambdaFlow.cs:166:38:166:43 | lambda [Return] : Func [delegate argument at position 0] : String | semmle.label | lambda [Return] : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:168:17:168:22 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:168:26:168:34 | call to method Source : String | semmle.label | call to method Source : String | +| LambdaFlow.cs:169:13:169:18 | [post] access to parameter lambda : Func [delegate argument at position 0] : String | semmle.label | [post] access to parameter lambda : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:169:20:169:25 | access to local variable source : String | semmle.label | access to local variable source : String | +| LambdaFlow.cs:172:38:172:43 | lambda : (...) => ... [delegate return] : String | semmle.label | lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:175:17:175:22 | access to local variable output : String | semmle.label | access to local variable output : String | +| LambdaFlow.cs:175:26:175:31 | access to parameter lambda : (...) => ... [delegate return] : String | semmle.label | access to parameter lambda : (...) => ... [delegate return] : String | +| LambdaFlow.cs:175:26:175:42 | delegate call : String | semmle.label | delegate call : String | +| LambdaFlow.cs:176:18:176:23 | access to local variable output | semmle.label | access to local variable output | +| LambdaFlow.cs:181:34:181:35 | access to local variable id : (...) => ... [delegate return] : String | semmle.label | access to local variable id : (...) => ... [delegate return] : String | +| LambdaFlow.cs:181:39:181:39 | x : String | semmle.label | x : String | +| LambdaFlow.cs:181:39:181:44 | (...) => ... : (...) => ... [delegate return] : String | semmle.label | (...) => ... : (...) => ... [delegate return] : String | +| LambdaFlow.cs:181:44:181:44 | access to parameter x : String | semmle.label | access to parameter x : String | +| LambdaFlow.cs:182:16:182:17 | [post] access to local variable id : Func [delegate argument at position 0] : String | semmle.label | [post] access to local variable id : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:183:16:183:17 | access to local variable id : (...) => ... [delegate return] : String | semmle.label | access to local variable id : (...) => ... [delegate return] : String | +subpaths +| LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:87:39:87:39 | x : String | LambdaFlow.cs:87:44:87:44 | access to parameter x : String | LambdaFlow.cs:87:39:87:44 | (...) => ... : (...) => ... [delegate return] : String | +| LambdaFlow.cs:89:29:89:30 | access to local variable id : (...) => ... [delegate return] : String | LambdaFlow.cs:80:40:80:45 | lambda : (...) => ... [delegate return] : String | LambdaFlow.cs:82:20:82:32 | delegate call : String | LambdaFlow.cs:89:26:89:39 | call to method M1 : String | +| LambdaFlow.cs:89:33:89:38 | access to local variable source : String | LambdaFlow.cs:80:55:80:59 | input : String | LambdaFlow.cs:80:40:80:45 | lambda [Return] : Func [delegate argument at position 0] : String | LambdaFlow.cs:89:29:89:30 | [post] access to local variable id : Func [delegate argument at position 0] : String | +| LambdaFlow.cs:182:16:182:17 | [post] access to local variable id : Func [delegate argument at position 0] : String | LambdaFlow.cs:181:39:181:39 | x : String | LambdaFlow.cs:181:44:181:44 | access to parameter x : String | LambdaFlow.cs:181:39:181:44 | (...) => ... : (...) => ... [delegate return] : String | +testFailures +| LambdaFlow.cs:144:34:144:52 | // ... | Missing result: hasValueFlow=6 | +| LambdaFlow.cs:176:18:176:23 | access to local variable output | Unexpected result: hasValueFlow=7 | +#select +| LambdaFlow.cs:12:18:12:18 | access to parameter s | LambdaFlow.cs:17:26:17:34 | call to method Source : String | LambdaFlow.cs:12:18:12:18 | access to parameter s | $@ | LambdaFlow.cs:17:26:17:34 | call to method Source : String | call to method Source : String | +| LambdaFlow.cs:41:47:41:47 | access to parameter x | LambdaFlow.cs:35:26:35:34 | call to method Source : String | LambdaFlow.cs:41:47:41:47 | access to parameter x | $@ | LambdaFlow.cs:35:26:35:34 | call to method Source : String | call to method Source : String | +| LambdaFlow.cs:65:18:65:25 | delegate call | LambdaFlow.cs:59:26:59:34 | call to method Source : String | LambdaFlow.cs:65:18:65:25 | delegate call | $@ | LambdaFlow.cs:59:26:59:34 | call to method Source : String | call to method Source : String | +| LambdaFlow.cs:90:18:90:23 | access to local variable output | LambdaFlow.cs:88:26:88:34 | call to method Source : String | LambdaFlow.cs:90:18:90:23 | access to local variable output | $@ | LambdaFlow.cs:88:26:88:34 | call to method Source : String | call to method Source : String | +| LambdaFlow.cs:176:18:176:23 | access to local variable output | LambdaFlow.cs:168:26:168:34 | call to method Source : String | LambdaFlow.cs:176:18:176:23 | access to local variable output | $@ | LambdaFlow.cs:168:26:168:34 | call to method Source : String | call to method Source : String | diff --git a/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.ql b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.ql new file mode 100644 index 000000000000..f47c9f4e9a40 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/lambda/LambdaFlow.ql @@ -0,0 +1,12 @@ +/** + * @kind path-problem + */ + +import csharp +import TestUtilities.InlineFlowTest +import ValueFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected b/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected index 27a1929950a9..9b4ed032f0c4 100644 --- a/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected +++ b/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected @@ -4,20 +4,32 @@ models edges | TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | provenance | | | TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | provenance | | -| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | -| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | +| TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | provenance | | | TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | provenance | | | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | provenance | | +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | provenance | | | TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | +| TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | provenance | | | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | provenance | | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | provenance | | | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | provenance | | -| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | MaD:2 | -| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | MaD:2 | +| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | MaD:2 | +| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | MaD:2 | +| TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:36:13:36:19 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | provenance | | | TypeFlowDispatch.cs:36:13:36:19 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | provenance | | | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:36:13:36:19 | access to local variable tainted : List [element] : String | provenance | | @@ -26,30 +38,50 @@ edges | TypeFlowDispatch.cs:36:42:36:52 | call to method Source : String | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | provenance | MaD:1 | | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | provenance | | | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | MaD:2 | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | provenance | MaD:2 | | TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | provenance | | | TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | | +| TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | | | TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | provenance | | | TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | provenance | | -| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | -| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | provenance | | | TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | provenance | | | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | provenance | | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | provenance | | | TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | provenance | | +| TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | | TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | provenance | | | TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | provenance | | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | provenance | | | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | provenance | | | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | provenance | | | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | provenance | | -| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | -| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | provenance | | | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | provenance | | | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | provenance | | | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | provenance | | | TypeFlowDispatch.cs:74:13:74:19 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | provenance | | | TypeFlowDispatch.cs:74:13:74:19 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | provenance | | | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:74:13:74:19 | access to local variable tainted : List [element] : String | provenance | | @@ -58,25 +90,43 @@ edges | TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | provenance | MaD:1 | | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | provenance | | | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | provenance | | +| TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | nodes +| TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:11:42:11:42 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:11:42:11:42 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:13:9:13:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:16:46:16:46 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:16:46:16:46 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:23:20:23:20 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:23:20:23:20 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | semmle.label | access to parameter x | | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | semmle.label | access to parameter x | | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | semmle.label | call to method Source : String | | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | semmle.label | call to method Source : String | | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | semmle.label | l : List [element] : String | | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | semmle.label | l : List [element] : String | +| TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | +| TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:31:19:31:19 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:36:13:36:19 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:36:13:36:19 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | semmle.label | object creation of type List : List [element] : String | @@ -87,32 +137,52 @@ nodes | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:39:34:39:34 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:39:34:39:34 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | semmle.label | [post] (...) => ... : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | semmle.label | access to parameter x | | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | semmle.label | access to parameter x | +| TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:42:42:42:42 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:42:42:42:42 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:44:9:44:9 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | semmle.label | access to parameter x : String | +| TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:47:46:47:46 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:47:46:47:46 | x : String | semmle.label | x : String | +| TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | semmle.label | access to parameter x : String | | TypeFlowDispatch.cs:52:32:52:32 | t : String | semmle.label | t : String | | TypeFlowDispatch.cs:52:32:52:32 | t : String | semmle.label | t : String | | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | semmle.label | access to parameter t | | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | semmle.label | access to parameter t | +| TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | semmle.label | call to method Source : String | | TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | semmle.label | call to method Source : String | | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | semmle.label | l : List [element] : String | | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | semmle.label | l : List [element] : String | +| TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | +| TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:64:13:64:13 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | semmle.label | access to local variable x : String | | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | semmle.label | access to local variable x : String | | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | semmle.label | l : List [element] : String | | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | semmle.label | l : List [element] : String | +| TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | semmle.label | f [Return] : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | semmle.label | access to parameter l : List [element] : String | +| TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | semmle.label | [post] access to parameter f : Action [delegate argument at position 0] : String | | TypeFlowDispatch.cs:74:13:74:19 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:74:13:74:19 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | semmle.label | object creation of type List : List [element] : String | @@ -121,7 +191,23 @@ nodes | TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | semmle.label | call to method Source : String | | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | semmle.label | access to local variable tainted : List [element] : String | +| TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | semmle.label | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | subpaths +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:11:37:11:37 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:18:16:18:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:16:41:16:41 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:23:20:23:36 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:29:50:29:50 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:39:34:39:50 | [post] (...) => ... : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:42:37:42:37 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:49:16:49:16 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:47:41:47:41 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:57:20:57:35 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:61:42:61:42 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:69:20:69:20 | [post] access to parameter f : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:67:46:67:46 | f [Return] : Action [delegate argument at position 0] : String | TypeFlowDispatch.cs:77:30:77:45 | [post] delegate creation of type Action : Action [delegate argument at position 0] : String | testFailures #select | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | $@ | TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | call to method Source : String | diff --git a/csharp/ql/test/query-tests/Concurrency/LockOrder/LockOrder.expected b/csharp/ql/test/query-tests/Concurrency/LockOrder/LockOrder.expected index ff738999771f..19391d52f4ad 100644 --- a/csharp/ql/test/query-tests/Concurrency/LockOrder/LockOrder.expected +++ b/csharp/ql/test/query-tests/Concurrency/LockOrder/LockOrder.expected @@ -1,4 +1,3 @@ | LockOrder.cs:6:15:6:15 | b | Inconsistent lock sequence with $@. Lock sequences $@, $@ and $@, $@ found. | LockOrder.cs:6:18:6:18 | c | c | LockOrder.cs:10:18:10:37 | lock (...) {...} | b | LockOrder.cs:10:27:10:37 | lock (...) {...} | c | LockOrder.cs:15:18:15:37 | lock (...) {...} | c | LockOrder.cs:15:27:15:37 | lock (...) {...} | b | | LockOrder.cs:27:22:27:22 | b | Inconsistent lock sequence with $@. Lock sequences $@, $@ and $@, $@ found. | LockOrder.cs:27:25:27:25 | c | c | LockOrder.cs:36:8:36:20 | lock (...) {...} | b | LockOrder.cs:42:9:42:20 | lock (...) {...} | c | LockOrder.cs:37:8:37:20 | lock (...) {...} | c | LockOrder.cs:47:9:47:20 | lock (...) {...} | b | -| LockOrder.cs:54:19:54:19 | a | Inconsistent lock sequence with $@. Lock sequences $@, $@ and $@, $@ found. | LockOrder.cs:54:22:54:22 | b | b | LockOrder.cs:61:9:61:25 | lock (...) {...} | a | LockOrder.cs:59:33:59:43 | lock (...) {...} | b | LockOrder.cs:62:9:62:25 | lock (...) {...} | b | LockOrder.cs:58:33:58:43 | lock (...) {...} | a | | LockOrderBad.cs:6:29:6:33 | lock1 | Inconsistent lock sequence with $@. Lock sequences $@, $@ and $@, $@ found. | LockOrderBad.cs:7:29:7:33 | lock2 | lock2 | LockOrderBad.cs:11:9:19:9 | lock (...) {...} | lock1 | LockOrderBad.cs:16:13:18:13 | lock (...) {...} | lock2 | LockOrderBad.cs:24:9:32:9 | lock (...) {...} | lock2 | LockOrderBad.cs:29:13:31:13 | lock (...) {...} | lock1 | diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index bf867d21d3cc..2c25bc124337 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -6,6 +6,7 @@ private import semmle.code.java.dataflow.TypeFlow private import semmle.code.java.dataflow.FlowSteps private import DataFlowPrivate private import DataFlowUtil +private import DataFlowDispatch private import FlowSummaryImpl as FlowSummaryImpl private import DataFlowImplCommon as DataFlowImplCommon private import semmle.code.java.controlflow.Guards @@ -68,7 +69,11 @@ private module Cached { TMapKeyContent() or TMapValueContent() or TCapturedVariableContent(CapturedVariable v) or - TSyntheticFieldContent(SyntheticField s) + TSyntheticFieldContent(SyntheticField s) or + TLambdaReturnContent(Method m) or + TLambdaArgumentContent(Method m, ArgumentPosition pos) { + exists(m.getParameter(pos)) or pos = -1 + } cached newtype TContentApprox = @@ -78,7 +83,11 @@ private module Cached { TMapKeyContentApprox() or TMapValueContentApprox() or TCapturedVariableContentApprox(CapturedVariable v) or - TSyntheticFieldApproxContent() + TSyntheticFieldApproxContent() or + TLambdaReturnContentApprox(Method m) or + TLambdaArgumentApprox(Method m, ArgumentPosition pos) { + exists(m.getParameter(pos)) or pos = -1 + } } import Cached diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 589d75c3635d..a26c54778ce1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -464,7 +464,8 @@ private newtype TDataFlowCall = TCall(Call c) or TSummaryCall(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) - } + } or + TLambdaSynthCall(Node node) { lambdaCreationHelper(node, _, _) } /** A call relevant for data flow. Includes both source calls and synthesized calls. */ class DataFlowCall extends TDataFlowCall { @@ -526,6 +527,21 @@ class SummaryCall extends DataFlowCall, TSummaryCall { override Location getLocation() { result = c.getLocation() } } +/** A synthesized call inside a `SummarizedCallable`. */ +class LambdaSynthCall extends DataFlowCall, TLambdaSynthCall { + private Node node; + + LambdaSynthCall() { this = TLambdaSynthCall(node) } + + override DataFlowCallable getEnclosingCallable() { + result.asCallable() = node.getEnclosingCallable() + } + + override string toString() { result = "[synthetic] call to " + node } + + override Location getLocation() { result = node.getLocation() } +} + class NodeRegion instanceof BasicBlock { string toString() { result = "NodeRegion" } @@ -585,8 +601,7 @@ predicate nodeIsHidden(Node n) { n instanceof FlowSummaryNode } class LambdaCallKind = Method; // the "apply" method in the functional interface -/** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ -predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { +predicate lambdaCreationHelper(Node creation, LambdaCallKind kind, DataFlowCallable c) { exists(ClassInstanceExpr func, Interface t, FunctionalInterface interface | creation.asExpr() = func and func.getAnonymousClass().getAMethod() = c.asCallable() and @@ -597,6 +612,14 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) ) } +/** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ +predicate lambdaCreation( + Node creation, LambdaCallKind kind, DataFlowCallable c, DataFlowCall synthCall +) { + synthCall = TLambdaSynthCall(creation) and + lambdaCreationHelper(creation, kind, c) +} + /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() and @@ -734,6 +757,12 @@ class ContentApprox extends TContentApprox { or this = TSyntheticFieldApproxContent() and result = "approximated synthetic field" + or + this = TLambdaReturnContentApprox(_) and + result = "" + or + this = TLambdaArgumentApprox(_, _) and + result = "" } } @@ -755,6 +784,12 @@ ContentApprox getContentApprox(Content c) { ) or c instanceof SyntheticFieldContent and result = TSyntheticFieldApproxContent() + or + exists(Method m | c = TLambdaReturnContent(m) and result = TLambdaReturnContentApprox(m)) + or + exists(Method m, ArgumentPosition pos | + c = TLambdaArgumentContent(m, pos) and result = TLambdaArgumentApprox(m, pos) + ) } /** @@ -766,3 +801,15 @@ predicate containerContent(ContentSet c) { c instanceof MapKeyContent or c instanceof MapValueContent } + +Content getLambdaReturnContent(LambdaCallKind kind, ReturnKind k) { + result = TLambdaReturnContent(kind) and exists(k) +} + +Content getLambdaArgumentContent(LambdaCallKind kind, ArgumentPosition pos) { + result = TLambdaArgumentContent(kind, pos) +} + +predicate isLambdaInstanceParameter(ParameterNode p) { + exists(DataFlowCallable c | lambdaCreationHelper(_, _, c) and p.isParameterOf(c, -1)) +} diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index c1fc51bff049..3cbc5bc42b91 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -4,6 +4,7 @@ private import java private import DataFlowPrivate +private import DataFlowDispatch private import semmle.code.java.dataflow.SSA private import semmle.code.java.controlflow.Guards private import semmle.code.java.dataflow.ExternalFlow @@ -359,6 +360,27 @@ class SyntheticFieldContent extends Content, TSyntheticFieldContent { override string toString() { result = s.toString() } } +class LambdaReturnContent extends Content, TLambdaReturnContent { + Method m; + + LambdaReturnContent() { this = TLambdaReturnContent(m) } + + override DataFlowType getType() { result = getErasedRepr(m.getReturnType()) } + + override string toString() { result = "" } +} + +class LambdaArgumentContent extends Content, TLambdaArgumentContent { + Method m; + ArgumentPosition pos; + + LambdaArgumentContent() { this = TLambdaArgumentContent(m, pos) } + + override DataFlowType getType() { result = getErasedRepr(m.getParameter(pos).getType()) } + + override string toString() { result = " " + pos.toString() } +} + /** * An entity that represents a set of `Content`s. * diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 7a2f78089778..426af491409e 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -290,7 +290,9 @@ signature module InputSig { class LambdaCallKind; /** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ - predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c); + predicate lambdaCreation( + Node creation, LambdaCallKind kind, DataFlowCallable c, DataFlowCall synthCall + ); /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver); @@ -344,6 +346,14 @@ signature module InputSig { /** Holds if `fieldFlowBranchLimit` should be ignored for flow going into/out of `c`. */ default predicate ignoreFieldFlowBranchLimit(DataFlowCallable c) { none() } + + Content getLambdaReturnContent(LambdaCallKind kind, ReturnKind retKind); + + Content getLambdaArgumentContent(LambdaCallKind kind, ArgumentPosition pos); + + predicate isLambdaInstanceParameter(ParameterNode p); + + predicate isVariableCaptureContentSet(ContentSet c); } module Configs Lang> { diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index 8aa1804792be..c0b279aeafef 100644 --- a/shared/dataflow/codeql/dataflow/VariableCapture.qll +++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll @@ -1051,8 +1051,8 @@ module Flow Input> implements OutputSig * since normal use-use flow for `fn` does not take the overwrite at (2) into account. */ - storeStepClosure(_, v, node, true) - or + // storeStepClosure(_, v, node, true) + // or exists(BasicBlock bb, int i | captureWrite(v, bb, i, false, _) and node = TSynthThisQualifier(bb, i, false) diff --git a/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll index 1eaa84505419..c2cdf3b5c24e 100644 --- a/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll @@ -216,7 +216,7 @@ module MakeImplContentDataFlow Lang> { private predicate readStep(Node node1, State state1, ContentSet c, Node node2, ReadState state2) { exists(int size | - readSet(node1, c, node2) and + readSet(any(NodeEx n1 | n1.asNode() = node1), c, any(NodeEx n2 | n2.asNode() = node2)) and // todo ContentConfig::isRelevantContent(c) and state2.decode(size + 1, true) | diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index d4c73c234beb..bef0c69b470f 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -423,7 +423,7 @@ module MakeImpl Lang> { pragma[nomagic] private predicate readSetEx(NodeEx node1, ContentSet c, NodeEx node2) { - readSet(pragma[only_bind_into](node1.asNode()), c, pragma[only_bind_into](node2.asNode())) and + readSet(node1, c, node2) and stepFilter(node1, node2) or exists(Node n | @@ -450,20 +450,19 @@ module MakeImpl Lang> { bindingset[c] private predicate expectsContentEx(NodeEx n, Content c) { exists(ContentSet cs | - expectsContentCached(n.asNode(), cs) and + expectsContentCached(n, cs) and pragma[only_bind_out](c) = pragma[only_bind_into](cs).getAReadContent() ) } pragma[nomagic] - private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } + private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n, _) } pragma[nomagic] private predicate storeExUnrestricted( NodeEx node1, Content c, NodeEx node2, DataFlowType contentType, DataFlowType containerType ) { - store(pragma[only_bind_into](node1.asNode()), c, pragma[only_bind_into](node2.asNode()), - contentType, containerType) and + store(node1, c, node2, contentType, containerType) and stepFilter(node1, node2) } @@ -478,16 +477,6 @@ module MakeImpl Lang> { hasReadStep(c) } - pragma[nomagic] - private predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { - viableReturnPosOut(call, pos, out.asNode()) - } - - pragma[nomagic] - private predicate viableParamArgEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { - viableParamArg(call, p.asNode(), arg.asNode()) - } - /** * Holds if field flow should be used for the given configuration. */ @@ -2629,7 +2618,7 @@ module MakeImpl Lang> { ( castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) or + expectsContentCached(this, _) or neverSkipInPathGraph(this.asNode()) or Config::neverSkip(this.asNode()) ) @@ -2665,7 +2654,7 @@ module MakeImpl Lang> { or node instanceof ParamNodeEx or - node.asNode() instanceof OutNodeExt + node instanceof OutNodeEx or storeStepCand(_, _, _, node, _, _) or @@ -2899,15 +2888,9 @@ module MakeImpl Lang> { predicate isHidden() { not Config::includeHiddenNodes() and - ( - hiddenNode(this.getNodeEx().asNode()) and - not this.isSource() and - not this instanceof PathNodeSink - or - this.getNodeEx() instanceof TNodeImplicitRead - or - hiddenNode(this.getNodeEx().asParamReturnNode()) - ) + hiddenNode(this.getNodeEx()) and + not this.isSource() and + not this instanceof PathNodeSink } /** Gets a textual representation of this element. */ @@ -5444,7 +5427,7 @@ module MakeImpl Lang> { exists(ReturnKindExt kind, DataFlowCall call | partialPathOutOfCallable1(mid, call, kind, state, cc, t, ap) | - out.asNode() = kind.getAnOutNode(call) + out = kind.getAnOutNodeEx(call) ) } @@ -5529,7 +5512,7 @@ module MakeImpl Lang> { ) { exists(DataFlowCall call, ReturnKindExt kind | partialPathThroughCallable0(call, mid, kind, state, cc, t, ap) and - out.asNode() = kind.getAnOutNode(call) + out = kind.getAnOutNodeEx(call) ) } diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 81f9946126db..e1001d00fe50 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1,7 +1,7 @@ private import codeql.dataflow.DataFlow private import codeql.typetracking.TypeTracking as Tt private import codeql.util.Location -private import codeql.util.Option +private import codeql.util.Boolean private import codeql.util.Unit private import codeql.util.Option @@ -118,10 +118,12 @@ module MakeImplCommon Lang> { } // TODO: support setters + // TODO extend predicate storeStep(Node n1, Node n2, Content f) { storeSet(n1, f, n2, _, _) } private predicate loadStep0(Node n1, Node n2, Content f) { - readSet(n1, f, n2) + // TODO extend + readStep(n1, f, n2) or argumentValueFlowsThrough(n1, TReadStepTypesSome(_, f, _), n2, _) } @@ -139,7 +141,9 @@ module MakeImplCommon Lang> { predicate callStep(Node n1, LocalSourceNode n2) { viableParamArg(_, n2, n1) } predicate returnStep(Node n1, LocalSourceNode n2) { - viableReturnPosOut(_, [getValueReturnPosition(n1), getParamReturnPosition(n1, _)], n2) + // TODO: extend to NodeEx + viableReturnPosOut(_, + [getValueReturnPosition(n1), getParamReturnPosition(any(NodeEx n | n.asNode() = n1), _)], n2) } predicate hasFeatureBacktrackStoreTarget() { none() } @@ -183,6 +187,24 @@ module MakeImplCommon Lang> { ) } + /** + * Holds if `arg` is an argument of `call` with an argument position that matches + * parameter position `ppos`. + */ + pragma[noinline] + private predicate argumentPositionMatchEx(DataFlowCall call, ArgNodeEx arg, ParameterPosition ppos) { + exists(ArgumentPosition apos | + arg.argumentOf(call, apos) and + parameterMatch(ppos, apos) + ) + } + + pragma[nomagic] + private predicate hasSimpleReturnKindIn(ReturnNode ret, ReturnKind kind, DataFlowCallable c) { + c = getNodeEnclosingCallable(ret) and + kind = ret.getKind() + } + /** * Provides a simple data-flow analysis for resolving lambda calls. The analysis * currently excludes read-steps, store-steps, and flow-through. @@ -192,9 +214,24 @@ module MakeImplCommon Lang> { * calls. For this reason, we cannot reuse the code from `DataFlowImpl.qll` directly. */ private module LambdaFlow { + private predicate lambdaLocalFlow(Node lambda, Node node) { + lambdaCreation(lambda, _, _, _) and + node = lambda + or + exists(Node mid | + lambdaLocalFlow(lambda, mid) and + simpleLocalFlowStep(mid, node, _) and + validParameterAliasStep(mid, node) + ) + } + + predicate lambdaFlowsToPostUpdate(Node lambda, PostUpdateNode post) { + lambdaLocalFlow(lambda, post.getPreUpdateNode()) + } + pragma[noinline] private predicate viableParamNonLambda(DataFlowCall call, ParameterPosition ppos, ParamNode p) { - p.isParameterOf(viableCallable(call), ppos) + p.isParameterOf(viableCallableCached(call), ppos) } pragma[noinline] @@ -224,12 +261,6 @@ module MakeImplCommon Lang> { ) } - pragma[nomagic] - private predicate hasSimpleReturnKindIn(ReturnNode ret, ReturnKind kind, DataFlowCallable c) { - c = getNodeEnclosingCallable(ret) and - kind = ret.getKind() - } - pragma[nomagic] private TReturnPositionSimple getReturnPositionSimple(ReturnNode ret) { exists(ReturnKind kind, DataFlowCallable c | @@ -240,7 +271,7 @@ module MakeImplCommon Lang> { pragma[nomagic] private TReturnPositionSimple viableReturnPosNonLambda(DataFlowCall call, ReturnKind kind) { - result = TReturnPositionSimple0(viableCallable(call), kind) + result = TReturnPositionSimple0(viableCallableCached(call), kind) } pragma[nomagic] @@ -857,6 +888,21 @@ module MakeImplCommon Lang> { exists(Node n | this.isImplicitReadNode(n) | result = n.toString() + " [Ext]") or result = this.asParamReturnNode().toString() + " [Return]" + or + result = this.asLambdaMallocNode().toString() + " [LambdaMalloc]" + or + result = this.asLambdaArgsNode().toString() + " [LambdaArgs]" + or + result = this.asLambdaCaptureNode().toString() + " [LambdaCapture]" + or + result = this.asLambdaInstancePostUpdateNode().toString() + " [LambdaPostUpdate]" + or + exists(DataFlowCall synthCall, ArgumentPosition apos, boolean isPost | + this.isLambdaArgNode(synthCall, apos, isPost) + | + result = + synthCall.toString() + "-" + apos.toString() + "-" + isPost.toString() + " [LambdaArg]" + ) } Node asNode() { this = TNodeNormal(result) } @@ -868,10 +914,39 @@ module MakeImplCommon Lang> { ParameterNode asParamReturnNode() { this = TParamReturnNode(result, _) } + ParameterNode asLambdaInstancePostUpdateNode() { this = TNodeLambdaInstancePostUpdate(result) } + + Node asLambdaMallocNode() { this = TNodeLambdaMalloc(result) } + + Node asLambdaArgsNode() { this = TNodeLambdaArgs(result) } + + Node asLambdaCaptureNode() { this = TNodeLambdaCapture(result) } + + predicate isLambdaArgNode(DataFlowCall synthCall, ArgumentPosition apos, boolean isPost) { + this = TNodeLambdaArg(synthCall, apos, isPost) + } + Node projectToNode() { - this = TNodeNormal(result) or - this = TNodeImplicitRead(result) or + this = TNodeNormal(result) + or + this = TNodeImplicitRead(result) + or this = TParamReturnNode(result, _) + or + this = TNodeLambdaInstancePostUpdate(result) + or + this = TNodeLambdaMalloc(result) + or + this = TNodeLambdaArgs(result) + or + this = TNodeLambdaCapture(result) + or + this = TNodeLambdaCapture(result) + or + exists(DataFlowCall synthCall | + this = TNodeLambdaArg(synthCall, _, _) and + lambdaCreation(result, _, _, synthCall) + ) } pragma[nomagic] @@ -889,6 +964,25 @@ module MakeImplCommon Lang> { nodeDataFlowType(this.asNode(), result) or nodeDataFlowType(this.asParamReturnNode(), result) + or + nodeDataFlowType(this.asLambdaInstancePostUpdateNode(), result) + or + nodeDataFlowType(this.asLambdaMallocNode(), result) + or + nodeDataFlowType(this.asLambdaArgsNode(), result) + or + nodeDataFlowType(this.asLambdaCaptureNode(), result) + or + exists( + DataFlowCall synthCall, ArgumentPosition apos, DataFlowCallable c, ParameterNode p, + ParameterPosition ppos + | + this.isLambdaArgNode(synthCall, apos, _) and + lambdaCreation(_, _, c, synthCall) and + isParameterNode(p, c, ppos) and + parameterMatch(ppos, apos) and + nodeDataFlowType(p, result) + ) } pragma[inline] @@ -900,9 +994,29 @@ module MakeImplCommon Lang> { } final class ArgNodeEx extends NodeEx { - ArgNodeEx() { this.asNode() instanceof ArgNode } + private DataFlowCall call_; + private ArgumentPosition pos_; - DataFlowCall getCall() { this.asNode().(ArgNode).argumentOf(result, _) } + ArgNodeEx() { + this.asNode().(ArgNode).argumentOf(call_, pos_) + or + this.isLambdaArgNode(call_, pos_, false) + or + exists(Node lambda, DataFlowCallable c, ParameterNode p, ParameterPosition ppos | + lambda = this.asLambdaMallocNode() and + lambdaCreation(lambda, _, c, call_) and + isParameterNode(p, c, ppos) and + isLambdaInstanceParameter(p) and + parameterMatch(ppos, pos_) + ) + } + + final DataFlowCall getCall() { this.argumentOf(result, _) } + + final predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + call = call_ and + pos = pos_ + } } final class ParamNodeEx extends NodeEx { @@ -929,6 +1043,35 @@ module MakeImplCommon Lang> { ReturnKindExt getKind() { result = pos.getKind() } } + final class OutNodeEx extends NodeEx { + OutNodeEx() { + this.asNode() instanceof OutNodeExt + or + this.(PostUpdateNodeEx).getPreUpdateNode() instanceof ArgNodeEx + } + } + + class PostUpdateNodeEx extends NodeEx { + private NodeEx pre; + + PostUpdateNodeEx() { + pre.asNode() = this.asNode().(PostUpdateNode).getPreUpdateNode() + or + pre.asNode() = this.asLambdaInstancePostUpdateNode() + or + // Every argument in the synthetic call has a post update node + // corresponding to the argument node. + exists(DataFlowCall synthCall, ArgumentPosition apos | + this.isLambdaArgNode(synthCall, apos, true) and + pre.isLambdaArgNode(synthCall, apos, false) + ) + or + pre.asLambdaMallocNode() = this.asNode() + } + + NodeEx getPreUpdateNode() { result = pre } + } + cached private module Cached { /** @@ -979,7 +1122,12 @@ module MakeImplCommon Lang> { predicate clearsContentCached(Node n, ContentSet c) { clearsContent(n, c) } cached - predicate expectsContentCached(Node n, ContentSet c) { expectsContent(n, c) } + predicate expectsContentCached(NodeEx n, ContentSet c) { + expectsContent(n.asNode(), c) + or + exists(n.asLambdaCaptureNode()) and + isVariableCaptureContentSet(c) + } cached predicate isUnreachableInCallCached(NodeRegion nr, DataFlowCall call) { @@ -994,7 +1142,16 @@ module MakeImplCommon Lang> { } cached - predicate hiddenNode(Node n) { nodeIsHidden(n) } + predicate hiddenNode(NodeEx n) { + nodeIsHidden(n.asNode()) or + n.isImplicitReadNode(_) or + exists(n.asLambdaInstancePostUpdateNode()) or + exists(n.asLambdaMallocNode()) or + exists(n.asLambdaArgsNode()) or + exists(n.asLambdaCaptureNode()) or + n.isLambdaArgNode(_, _, _) or + hiddenNode(any(NodeEx p | n.asParamReturnNode() = p.asNode())) + } cached OutNodeExt getAnOutNodeExt(DataFlowCall call, ReturnKindExt k) { @@ -1006,18 +1163,49 @@ module MakeImplCommon Lang> { ) } + cached + OutNodeEx getAnOutNodeEx(DataFlowCall call, ReturnKindExt k) { + result.asNode() = getAnOutNodeExt(call, k) + or + exists(ArgNodeEx arg | + result.(PostUpdateNodeEx).getPreUpdateNode() = arg and + arg.argumentOf(call, k.(ParamUpdateReturnKind).getAMatchingArgumentPosition()) + ) + } + pragma[nomagic] private predicate paramReturnNode( - PostUpdateNode n, ParamNode p, SndLevelScopeOption scope, ReturnKindExt k + PostUpdateNodeEx n, ParamNode p, SndLevelScopeOption scope, ReturnKindExt k ) { exists(ParameterPosition pos | - parameterValueFlowsToPreUpdate(p, n) and + parameterValueFlowsToPreUpdate(p, n.asNode()) and p.isParameterOf(_, pos) and k = TParamUpdate(pos) and - scope = getSecondLevelScopeCached(n) + scope = getSecondLevelScopeCached(n.asNode()) + ) + or + exists(ParameterPosition pos | + n.asLambdaInstancePostUpdateNode() = p and + p.isParameterOf(_, pos) and + scope = getSecondLevelScopeCached(p) and + k = TParamUpdate(pos) ) } + /* + * lambda = (x) = x.addTaint(); + * synthcall(lambda, lambda.arg0); // arg0[post] --store(Argument0)--> lambda (post-update) [Argument0] + * + * + * foo(lambda) + * + * foo(l1) { + * l1(x); // x --store(Argument0)--> l1 (post-update) [Argument0] + * // l1 [Argument0] --read(Argument0)--> x (post-update) + * // l1 [ReturnValue] --read(ReturnValue)--> l1(x) + * } + */ + cached predicate castNode(Node n) { n instanceof CastNode } @@ -1029,7 +1217,7 @@ module MakeImplCommon Lang> { // For reads, `x.f`, we want to check that the tracked type after the read (which // is obtained by popping the head of the access path stack) is compatible with // the type of `x.f`. - readSet(_, _, n) + readStep(_, _, n) } cached @@ -1043,7 +1231,88 @@ module MakeImplCommon Lang> { } cached - DataFlowCallable viableCallableCached(DataFlowCall call) { result = viableCallable(call) } + DataFlowCallable viableCallableCached(DataFlowCall call) { + result = viableCallable(call) + or + lambdaCreation(_, _, result, call) + } + + /* + * foo(x => sink(x), notaint) + * foo(x => safe(x), taint) + * + * foo(lambda, x) { + * lambda(x); + * } + * + * x.Field = taint; + * taint --store(Field) --> x [Field] + * + * y = x; // x [Field] --> y [Field] + * + * sink(y.Field) // y [Field] --read(Field)--> y.Field + * + * + * + * + * lambda = () => "taint"; + * + * "taint" --store(ReturnValue)--> this (post-update) [ReturnValue] + * + * lambda.synth_call(); + * + * this (post-update) [ReturnValue] --> lambda (post-update) [ReturnValue] + * + * sink(lambda_1()); + * + * "taint" --store(ReturnValue)--> () => "taint" [ReturnValue] + * () => "taint" [ReturnValue] --> lambda [ReturnValue] + * lambda [ReturnValue] --> lambda_1 [ReturnValue] + * lambda_1 [ReturnValue] --read(ReturnValue)--> lambda_1() + * + * + * setField(p, value) { + * sink(p.Field); + * p.Field = value; // value --store(Field)--> p (post-update) [Field] + * } + * + * // p (post-update) [Field] --> x (post-update) [Field] + * + * setField(x, "taint"); + * sink(x.Field); + * + * + * lambda = (x) => sink(x); + * lambda.synth_call_lambda(lambda_arg0, lambda_arg1) + * + * + * + * foo(lambda); + * + * foo(l1) { + * bar(l1) + * } + * + * bar(l2) { + * l2("taint"); // taint --store(Argument0)--> l2 (post-update) [Argument0] + * } + * + * l2 (post-update) [Argument0] --> l1 (post-update) [Argument0] + * + * l1 (post-update) [Argument0] --> lambda (post-update) [Argument0] + * + * + * id = (x) => x; + * id.synth_call(arg0) + * foo(id); + * + * foo(l) { + * x = l("taint"); + * y = l("safe"); + * sink(x); + * sink(y); + * } + */ /** * Gets a viable target for the lambda call `call`. @@ -1053,9 +1322,10 @@ module MakeImplCommon Lang> { */ cached DataFlowCallable viableCallableLambda(DataFlowCall call, DataFlowCallOption lastCall) { + none() and exists(Node creation, LambdaCallKind kind | LambdaFlow::revLambdaFlow(call, kind, creation, _, _, _, lastCall) and - lambdaCreation(creation, kind, result) + lambdaCreation(creation, kind, result, _) ) } @@ -1080,7 +1350,7 @@ module MakeImplCommon Lang> { cached DataFlowCallable viableImplInCallContextExt(DataFlowCall call, DataFlowCall ctx) { result = viableImplInCallContext(call, ctx) and - result = viableCallable(call) + result = viableCallableCached(call) or result = viableCallableLambda(call, TDataFlowCallSome(ctx)) or @@ -1224,6 +1494,35 @@ module MakeImplCommon Lang> { ) } + cached + predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { + viableReturnPosOut(call, pos, out.asNode()) + or + exists(ReturnKindExt kind | + pos = viableReturnPos(call, kind) and + out = kind.getAnOutNodeEx(call) + ) + } + + bindingset[call, p, arg] + private predicate golangSpecificParamArgFilterEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { + golangSpecificParamArgFilter(call, p.asNode(), arg.asNode()) + or + not p.asNode() instanceof ParamNode + or + not arg.asNode() instanceof ArgNode + } + + cached + predicate viableParamArgEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { + exists(ParameterPosition ppos | + viableParam(call, ppos, p.asNode()) and + argumentPositionMatchEx(call, arg, ppos) and + compatibleTypesFilter(arg.getDataFlowType(), p.getDataFlowType()) and + golangSpecificParamArgFilterEx(call, p, arg) + ) + } + /** Provides predicates for calculating flow-through summaries. */ private module FlowThrough { /** @@ -1255,7 +1554,7 @@ module MakeImplCommon Lang> { // read exists(Node mid | parameterValueFlowCand(p, mid, false) and - readSet(mid, _, node) and + readStep(mid, _, node) and read = true ) or @@ -1271,7 +1570,7 @@ module MakeImplCommon Lang> { argumentValueFlowsThroughCand(arg, node, false) ) ) and - not expectsContentCached(node, _) + not expectsContent(node, _) } pragma[nomagic] @@ -1502,7 +1801,37 @@ module MakeImplCommon Lang> { } cached - predicate readSet(Node node1, ContentSet c, Node node2) { readStep(node1, c, node2) } + predicate readSet(NodeEx node1, ContentSet c, NodeEx node2) { + readStep(pragma[only_bind_into](node1.asNode()), c, pragma[only_bind_into](node2.asNode())) + or + exists(DataFlowCall call, LambdaCallKind k, Node receiver, ReturnKind kind | + lambdaCall(call, k, receiver) and + node1.asNode() = receiver + | + c.getAReadContent() = getLambdaReturnContent(k, kind) and + getAnOutNode(call, kind) = node2.asNode() + or + exists(ArgumentPosition apos | + c.getAReadContent() = getLambdaArgumentContent(k, apos) and + node2.asNode().(PostUpdateNode).getPreUpdateNode().(ArgNode).argumentOf(call, apos) and + // we should never read from the lambda itself + not any(ArgNodeEx arg | exists(arg.asLambdaMallocNode())).argumentOf(_, apos) + ) + ) + or + //read step from malloc to args + //lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c, DataFlowCall synthCall) + exists(Node lambda, DataFlowCall synthCall, LambdaCallKind k, ArgumentPosition apos | + lambdaCreation(lambda, k, _, synthCall) and + lambda = node1.asLambdaArgsNode() and + c.getAReadContent() = getLambdaArgumentContent(k, apos) + | + node2.isLambdaArgNode(synthCall, apos, false) + or + node2.asLambdaMallocNode() = lambda and + node2.(ArgNodeEx).argumentOf(_, apos) + ) + } cached predicate storeSet( @@ -1518,7 +1847,7 @@ module MakeImplCommon Lang> { | argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, c, contentType), n1, _) // TODO or - readSet(n2, c, n1) and + readStep(n2, c, n1) and contentType = getNodeDataFlowType(n1) and containerType = getNodeDataFlowType(n2) ) @@ -1533,10 +1862,42 @@ module MakeImplCommon Lang> { */ cached predicate store( - Node node1, Content c, Node node2, DataFlowType contentType, DataFlowType containerType + NodeEx node1, Content c, NodeEx node2, DataFlowType contentType, DataFlowType containerType ) { exists(ContentSet cs | - c = cs.getAStoreContent() and storeSet(node1, cs, node2, contentType, containerType) + c = cs.getAStoreContent() and + storeSet(pragma[only_bind_into](node1.asNode()), cs, pragma[only_bind_into](node2.asNode()), + contentType, containerType) + ) + or + contentType = node1.getDataFlowType() and + containerType = node2.getDataFlowType() and + ( + // Arguments in a call to a lambda write to the receiving node at the + // `Content` corresponding to the argument position. + exists(DataFlowCall call, LambdaCallKind k, Node receiver, ArgumentPosition pos | + lambdaCall(call, k, receiver) and + node1.asNode().(ArgNode).argumentOf(call, pos) and + c = getLambdaArgumentContent(k, pos) and + node2.asNode().(PostUpdateNode).getPreUpdateNode() = receiver + ) + or + // Simple returns in a lambda write to the post node for the + // lambda instance argument. + exists(DataFlowCallable lambda, LambdaCallKind k, ReturnKind kind | + lambdaCreation(_, k, lambda, _) and + hasSimpleReturnKindIn(node1.asNode(), kind, lambda) and + nodeGetEnclosingCallable(node2.asLambdaInstancePostUpdateNode()) = lambda and + c = getLambdaReturnContent(k, kind) + ) + or + // Argument nodes to a synthetic call node for a lamda write to the + // lambda at the `Content` corresponding to the argument position. + exists(DataFlowCall synthCall, LambdaCallKind k, ArgumentPosition pos | + lambdaCreation(node2.asNode(), k, _, synthCall) and + node1.isLambdaArgNode(synthCall, pos, true) and + c = getLambdaArgumentContent(k, pos) + ) ) } @@ -1572,7 +1933,9 @@ module MakeImplCommon Lang> { } cached - predicate allowParameterReturnInSelfCached(ParamNode p) { allowParameterReturnInSelf(p) } + predicate allowParameterReturnInSelfCached(ParamNode p) { + allowParameterReturnInSelf(p) or isLambdaInstanceParameter(p) + } cached predicate paramMustFlow(ParamNode p, ArgNode arg) { localMustFlowStep+(p, arg) } @@ -1625,9 +1988,10 @@ module MakeImplCommon Lang> { pragma[nomagic] private predicate hasParamReturnKindIn( - PostUpdateNode n, ParamNode p, ReturnKindExt kind, DataFlowCallable c + PostUpdateNodeEx n, ParamNode p, ReturnKindExt kind, DataFlowCallable c ) { - c = getNodeEnclosingCallable(n) and + // c = getNodeEnclosingCallable(n) and + c = n.getEnclosingCallable() and paramReturnNode(n, p, _, kind) } @@ -1648,7 +2012,7 @@ module MakeImplCommon Lang> { } cached - ReturnPosition getParamReturnPosition(PostUpdateNode n, ParamNode p) { + ReturnPosition getParamReturnPosition(PostUpdateNodeEx n, ParamNode p) { exists(ReturnKindExt kind, DataFlowCallable c | hasParamReturnKindIn(n, p, kind, c) and result = TReturnPosition0(c, kind) @@ -1707,7 +2071,40 @@ module MakeImplCommon Lang> { TNodeImplicitRead(Node n) or // will be restricted to nodes with actual implicit reads in `DataFlowImpl.qll` TParamReturnNode(ParameterNode p, SndLevelScopeOption scope) { paramReturnNode(_, p, scope, _) - } + } or + TNodeLambdaInstancePostUpdate(ParameterNode pre) { isLambdaInstanceParameter(pre) } or + TNodeLambdaMalloc(Node lambda) { lambdaCreation(lambda, _, _, _) } or + TNodeLambdaArgs(Node lambda) { lambdaCreation(lambda, _, _, _) } or + TNodeLambdaArg(DataFlowCall synthCall, ArgumentPosition apos, Boolean ispost) { + exists(DataFlowCallable c, ParameterNode p, ParameterPosition ppos | + lambdaCreation(_, _, c, synthCall) and + isParameterNode(p, c, ppos) and + parameterMatch(ppos, apos) and + // not isLambdaInstanceParameter(p) and + exists(ispost) + ) + } or + TNodeLambdaCapture(Node receiver) { lambdaCall(_, _, receiver) } + + /* + * foo(() => "taint"); // taint --store(ReturnValue)--> this (post-update) [ReturnValue] + * // this (post-update) [ReturnValue] --> lambda (post-update) [ReturnValue] + * // + */ + + /* + * lambda = (x) = x.addTaint(); + * synthcall(lambda, lambda.arg0); // arg0[post] --store(Argument0)--> lambda (post-update) [Argument0] + * + * + * foo(lambda) + * + * foo(l1) { + * l1(x); // x --store(Argument0)--> l1 (post-update) [Argument0] + * // l1 [Argument0] --read(Argument0)--> x (post-update) + * // l1 [ReturnValue] --read(ReturnValue)--> l1(x) + * } + */ /** * Holds if data can flow in one local step from `node1` to `node2`. @@ -1720,13 +2117,25 @@ module MakeImplCommon Lang> { simpleLocalFlowStepExt(pragma[only_bind_into](n1), pragma[only_bind_into](n2), model) ) or - exists(Node n1, Node n2, SndLevelScopeOption scope | - node1.asNode() = n1 and + exists(Node n2, SndLevelScopeOption scope | node2 = TParamReturnNode(n2, scope) and - paramReturnNode(pragma[only_bind_into](n1), pragma[only_bind_into](n2), - pragma[only_bind_into](scope), _) and + paramReturnNode(node1, pragma[only_bind_into](n2), pragma[only_bind_into](scope), _) and model = "" ) + or + LambdaFlow::lambdaFlowsToPostUpdate(node2.asLambdaArgsNode(), node1.asNode()) and + model = "" + or + // When data is stored in a captured variable content and reaches a lambda call, + // we need it to propagate back out to the lambda. We do this by adding flow + // from the lambda receiver to the post-update of the lambda receiver, but _only_ + // for captured variable content. The latter restriction is enforced by going via + // an intermediate `expectsContent` node. + node1.asNode() = node2.asLambdaCaptureNode() and + model = "" + or + node2.asNode().(PostUpdateNode).getPreUpdateNode() = node1.asLambdaCaptureNode() and + model = "" } cached @@ -2160,7 +2569,7 @@ module MakeImplCommon Lang> { private predicate readStepWithTypes( Node n1, DataFlowType container, ContentSet c, Node n2, DataFlowType content ) { - readSet(n1, c, n2) and + readStep(n1, c, n2) and container = getNodeDataFlowType(n1) and content = getNodeDataFlowType(n2) } @@ -2263,6 +2672,9 @@ module MakeImplCommon Lang> { /** Gets a node corresponding to data flow out of `call`. */ final OutNodeExt getAnOutNode(DataFlowCall call) { result = getAnOutNodeExt(call, this) } + + /** Gets a node corresponding to data flow out of `call`. */ + final OutNodeEx getAnOutNodeEx(DataFlowCall call) { result = getAnOutNodeEx(call, this) } } class ValueReturnKind extends ReturnKindExt, TValueReturn { diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 4f6a88b6b28a..7421dade0216 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -699,7 +699,8 @@ module Make< c.propagatesFlow(input, output, preservesValue, model) or // observe side effects of callbacks on input arguments - c.propagatesFlow(output, input, preservesValue, model) and + summary(c, output, input, preservesValue, model) and + // c.propagatesFlow(output, input, preservesValue, model) and preservesValue = true and isCallbackParameter(input) and isContentOfArgument(output, _)