From 5ae444192c763e3fe8f0030896a56d9613a979a6 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 18 Sep 2023 14:06:24 +0200 Subject: [PATCH] temp --- ruby/ql/lib/codeql/ruby/ApiGraphs.qll | 27 +- .../dataflow/internal/DataFlowPrivate.qll | 69 ++- .../internal/FlowSummaryImplSpecific.qll | 6 + .../lib/codeql/ruby/frameworks/core/Array.qll | 8 +- .../dataflow/params/TypeTracker.expected | 545 +++++++++--------- .../dataflow/params/params-flow.expected | 5 + .../type-tracker/TypeTracker.expected | 100 ++-- 7 files changed, 398 insertions(+), 362 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/ApiGraphs.qll b/ruby/ql/lib/codeql/ruby/ApiGraphs.qll index 0a650ea4ca248..285ee03f53420 100644 --- a/ruby/ql/lib/codeql/ruby/ApiGraphs.qll +++ b/ruby/ql/lib/codeql/ruby/ApiGraphs.qll @@ -887,7 +887,9 @@ module API { or implicitCallEdge(pred, succ) or - exists(DataFlow::HashLiteralNode splat | hashSplatEdge(splat, pred, succ)) + exists(DataFlow::HashLiteralNode literal | hashSplatEdge(literal, pred, succ)) + or + exists(DataFlow::ArrayLiteralNode literal | splatEdge(literal, pred, succ)) } /** @@ -1009,6 +1011,29 @@ module API { ) } + pragma[nomagic] + private DataFlow::Node getSplatArgument(DataFlow::ArrayLiteralNode literal) { + result = DataFlowPrivate::TSynthSplatArgumentNode(literal.asExpr()) + } + + /** + * Holds if the epsilon edge `pred -> succ` should be generated to account for the members of an array literal. + * + * This currently exists because array literals are desugared to `Array.[]` calls, whose summary relies on `WithContent`. + * However, `contentEdge` does not currently generate edges for `WithContent` steps. + */ + bindingset[literal] + pragma[inline_late] + private predicate splatEdge(DataFlow::ArrayLiteralNode literal, ApiNode pred, ApiNode succ) { + exists(TypeTracker t | + pred = Impl::MkForwardNode(getALocalSourceStrict(getSplatArgument(literal)), t) and + succ = Impl::MkForwardNode(pragma[only_bind_out](literal), pragma[only_bind_out](t)) + or + succ = Impl::MkBackwardNode(getALocalSourceStrict(getSplatArgument(literal)), t) and + pred = Impl::MkBackwardNode(pragma[only_bind_out](literal), pragma[only_bind_out](t)) + ) + } + pragma[nomagic] private DataFlow::LocalSourceNode getAModuleReference(DataFlow::ModuleNode mod) { result = mod.getAnImmediateReference() diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 03417269e626d..56167b81e5ab1 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -1255,6 +1255,25 @@ module ArgumentNodes { } } + abstract class SynthHashSplatOrSplatArgumentNode extends ArgumentNode, NodeImpl { + CfgNodes::ExprNodes::CallCfgNode call_; + + final string getMethodName() { + result = call_.(CfgNodes::ExprNodes::MethodCallCfgNode).getMethodName() + or + not call_ instanceof CfgNodes::ExprNodes::MethodCallCfgNode and + result = "yield" + } + + final override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + this.sourceArgumentOf(call.asCall(), pos) + } + + final override CfgScope getCfgScope() { result = call_.getExpr().getCfgScope() } + + final override Location getLocationImpl() { result = call_.getLocation() } + } + /** * A data-flow node that represents all keyword arguments wrapped in a hash. * @@ -1262,9 +1281,9 @@ module ArgumentNodes { * part of the method signature, such that those cannot end up in the hash-splat * parameter. See also `SynthHashSplatParameterNode`. */ - class SynthHashSplatArgumentNode extends ArgumentNode, NodeImpl, TSynthHashSplatArgumentNode { - CfgNodes::ExprNodes::CallCfgNode call_; - + class SynthHashSplatArgumentNode extends SynthHashSplatOrSplatArgumentNode, + TSynthHashSplatArgumentNode + { SynthHashSplatArgumentNode() { this = TSynthHashSplatArgumentNode(call_) } /** @@ -1295,19 +1314,11 @@ module ArgumentNodes { ) } - override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { - this.sourceArgumentOf(call.asCall(), pos) - } - override predicate sourceArgumentOf(CfgNodes::ExprNodes::CallCfgNode call, ArgumentPosition pos) { call = call_ and pos.isSynthHashSplat() } - override CfgScope getCfgScope() { result = call_.getExpr().getCfgScope() } - - override Location getLocationImpl() { result = call_.getLocation() } - override string toStringImpl() { result = "synthetic hash-splat argument" } } @@ -1318,9 +1329,7 @@ module ArgumentNodes { * part of the method signature, such that those cannot end up in the splat * parameter. See also `SynthSplatParameterNode`. */ - class SynthSplatArgumentNode extends ArgumentNode, NodeImpl, TSynthSplatArgumentNode { - CfgNodes::ExprNodes::CallCfgNode call_; - + class SynthSplatArgumentNode extends SynthHashSplatOrSplatArgumentNode, TSynthSplatArgumentNode { SynthSplatArgumentNode() { this = TSynthSplatArgumentNode(call_) } /** @@ -1331,24 +1340,18 @@ module ArgumentNodes { exists(ArgumentPosition pos, int n | arg.asExpr().(Argument).isArgumentOf(call_, pos) and pos.isPositional(n) and - c = getSplatContent(n, false) and - not exists(int i | splatArgumentAt(call_, i) and i < n) + not exists(int i | splatArgumentAt(call_, i) and i < n) and + if call_ instanceof CfgNodes::ExprNodes::ArrayLiteralCfgNode + then c = getArrayContent(n) + else c = getSplatContent(n, false) ) } - override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { - this.sourceArgumentOf(call.asCall(), pos) - } - override predicate sourceArgumentOf(CfgNodes::ExprNodes::CallCfgNode call, ArgumentPosition pos) { call = call_ and pos.isSynthSplat() } - override CfgScope getCfgScope() { result = call_.getExpr().getCfgScope() } - - override Location getLocationImpl() { result = call_.getLocation() } - override string toStringImpl() { result = "synthetic splat argument" } } @@ -1741,8 +1744,13 @@ predicate expectsContent(Node n, ContentSet c) { private newtype TDataFlowType = TLambdaDataFlowType(Callable c) { c = any(LambdaSelfReferenceNode n).getCallable() } or - // TSynthHashSplatArgumentType(SynthHashSplatArgumentNode n) or - // TSynthSplatArgumentType(SynthSplatArgumentNode n) or + TSynthHashSplatOrSplatArgumentType(string methodName) { + // In order to reduce the set of cons-candidates, we annotate all implicit (hash) splat + // creations with the name of the method that they are passed into. This includes + // array/hash literals as well (where the name is simply `[]`), because of how they + // are modelled (see `Array.qll` and `Hash.qll`). + methodName = any(SynthHashSplatOrSplatArgumentNode n).getMethodName() + } or TUnknownDataFlowType() class DataFlowType extends TDataFlowType { @@ -1772,14 +1780,11 @@ DataFlowType getNodeType(Node n) { result = TLambdaDataFlowType(c) ) or - // or - // result = TSynthHashSplatArgumentType(n) - // or - // result = TSynthSplatArgumentType(n) + result = TSynthHashSplatOrSplatArgumentType(n.(SynthHashSplatOrSplatArgumentNode).getMethodName()) + or not n instanceof LambdaSelfReferenceNode and not mustHaveLambdaType(n, _) and - // not n instanceof SynthHashSplatArgumentNode and - // not n instanceof SynthSplatArgumentNode and + not n instanceof SynthHashSplatOrSplatArgumentNode and result = TUnknownDataFlowType() } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll index c0098ec2f21d4..a7294868ffcb0 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll @@ -128,6 +128,9 @@ SummaryComponent interpretComponentSpecific(AccessPathToken c) { or arg = "hash-splat" and ppos.isHashSplat() + or + arg = "splat" and + ppos.isSynthSplat() ) or result = interpretElementArg(c.getAnArgument("Element")) @@ -229,6 +232,9 @@ string getParameterPosition(ParameterPosition pos) { or pos.isHashSplat() and result = "hash-splat" + or + pos.isSynthSplat() and + result = "splat" } /** Gets the textual representation of an argument position in the format used for flow summaries. */ diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll index 6d0c22da2f05d..1bc67dadcb450 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll @@ -47,11 +47,9 @@ module Array { override MethodCall getACallSimple() { result = getAStaticArrayCall("[]") } override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { - exists(ArrayIndex i | - input = "Argument[" + i + "]" and - output = "ReturnValue.Element[" + i + "]" and - preservesValue = true - ) + input = "Argument[splat].WithElement[any]" and + output = "ReturnValue" and + preservesValue = true } } diff --git a/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected b/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected index 20506ffd4e101..7f1e3b8db6fac 100644 --- a/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected +++ b/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected @@ -46,19 +46,18 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:110:10:110:13 | ...[...] | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:134:10:134:16 | ...[...] | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:108:40:108:41 | *b | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:64:16:64:17 | *x | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 or unknown | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | @@ -210,59 +209,87 @@ track | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content attribute [] | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element | params_flow.rb:116:5:116:6 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element | params_flow.rb:118:12:118:13 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:43:8:43:18 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:57:8:57:18 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:131:10:131:14 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:67:12:67:16 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:27:105:48 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:34:128:60 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:27:105:48 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:46:128:59 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 or unknown | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:131:10:131:14 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:38:8:38:13 | ** ... | @@ -288,63 +315,35 @@ track | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | @@ -1076,9 +1075,9 @@ track | params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps | params_flow.rb:43:9:43:17 | call to taint | -| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:43:8:43:18 | call to [] | -| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | +| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:43:9:43:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:43:9:43:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:43:9:43:17 | synthetic splat argument | @@ -1092,9 +1091,9 @@ track | params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps | params_flow.rb:43:9:43:17 | call to taint | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps | params_flow.rb:43:15:43:16 | 17 | -| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 or unknown | params_flow.rb:43:8:43:18 | call to [] | -| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 or unknown | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content splat position 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | +| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content splat position 0 | params_flow.rb:43:9:43:17 | synthetic splat argument | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:44:1:44:28 | call to positional | type tracker without call steps | params_flow.rb:44:1:44:28 | call to positional | @@ -1136,56 +1135,56 @@ track | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps | params_flow.rb:46:9:46:17 | call to taint | -| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:9:46:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:9:46:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps | params_flow.rb:46:9:46:17 | call to taint | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps | params_flow.rb:46:15:46:16 | 18 | -| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 or unknown | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content splat position 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content splat position 0 | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content element 1 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps | params_flow.rb:46:20:46:28 | call to taint | -| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:20:46:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:20:46:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:20:46:28 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content element 1 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps | params_flow.rb:46:20:46:28 | call to taint | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps | params_flow.rb:46:26:46:27 | 19 | -| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 or unknown | params_flow.rb:46:8:46:29 | call to [] | -| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 or unknown | params_flow.rb:47:12:47:16 | * ... | +| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | +| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content splat position 0 | params_flow.rb:46:20:46:28 | synthetic splat argument | -| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content splat position 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:47:1:47:17 | call to positional | type tracker without call steps | params_flow.rb:47:1:47:17 | call to positional | | params_flow.rb:47:12:47:16 | * ... | type tracker with call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:47:12:47:16 | * ... | type tracker without call steps | params_flow.rb:47:12:47:16 | * ... | @@ -1296,15 +1295,14 @@ track | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:17:49:24 | *posargs | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps | params_flow.rb:57:9:57:17 | call to taint | -| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:57:8:57:18 | call to [] | -| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | +| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:57:9:57:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:57:9:57:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:57:9:57:17 | synthetic splat argument | @@ -1312,7 +1310,6 @@ track | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:17:49:24 | *posargs | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | @@ -1320,9 +1317,9 @@ track | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps | params_flow.rb:57:9:57:17 | call to taint | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps | params_flow.rb:57:15:57:16 | 22 | -| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 or unknown | params_flow.rb:57:8:57:18 | call to [] | -| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 or unknown | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content splat position 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | +| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content splat position 0 | params_flow.rb:57:9:57:17 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:58:1:58:25 | call to posargs | type tracker without call steps | params_flow.rb:58:1:58:25 | call to posargs | @@ -1365,58 +1362,58 @@ track | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps | params_flow.rb:60:9:60:17 | call to taint | -| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:9:60:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:9:60:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps | params_flow.rb:60:9:60:17 | call to taint | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps | params_flow.rb:60:15:60:16 | 24 | -| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 or unknown | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content splat position 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content splat position 0 | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 1 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps | params_flow.rb:60:20:60:28 | call to taint | -| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:20:60:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:20:60:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:20:60:28 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 1 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps | params_flow.rb:60:20:60:28 | call to taint | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps | params_flow.rb:60:26:60:27 | 25 | -| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 or unknown | params_flow.rb:60:8:60:29 | call to [] | -| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 or unknown | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | +| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content splat position 0 | params_flow.rb:60:20:60:28 | synthetic splat argument | -| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content splat position 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:61:1:61:14 | call to posargs | type tracker without call steps | params_flow.rb:61:1:61:14 | call to posargs | | params_flow.rb:61:9:61:13 | * ... | type tracker with call steps | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:61:9:61:13 | * ... | type tracker without call steps | params_flow.rb:61:9:61:13 | * ... | @@ -1654,9 +1651,9 @@ track | params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps | params_flow.rb:80:9:80:17 | call to taint | -| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:9:80:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:9:80:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:9:80:17 | synthetic splat argument | @@ -1670,16 +1667,16 @@ track | params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps | params_flow.rb:80:9:80:17 | call to taint | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps | params_flow.rb:80:15:80:16 | 33 | -| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content splat position 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content splat position 0 | params_flow.rb:80:9:80:17 | synthetic splat argument | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:20:80:28 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps | params_flow.rb:80:20:80:28 | call to taint | -| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:20:80:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:20:80:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:20:80:28 | synthetic splat argument | @@ -1688,16 +1685,16 @@ track | params_flow.rb:80:26:80:27 | 34 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps | params_flow.rb:80:20:80:28 | call to taint | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps | params_flow.rb:80:26:80:27 | 34 | -| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 or unknown | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content splat position 0 | params_flow.rb:80:20:80:28 | synthetic splat argument | -| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content splat position 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:31:80:39 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps | params_flow.rb:80:31:80:39 | call to taint | -| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:31:80:39 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:31:80:39 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:31:80:39 | synthetic splat argument | @@ -1706,16 +1703,16 @@ track | params_flow.rb:80:37:80:38 | 35 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps | params_flow.rb:80:31:80:39 | call to taint | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps | params_flow.rb:80:37:80:38 | 35 | -| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 or unknown | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content splat position 0 | params_flow.rb:80:31:80:39 | synthetic splat argument | -| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content splat position 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:42:80:50 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps | params_flow.rb:80:42:80:50 | call to taint | -| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content splat position 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:42:80:50 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:42:80:50 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:42:80:50 | synthetic splat argument | @@ -1724,10 +1721,10 @@ track | params_flow.rb:80:48:80:49 | 36 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps | params_flow.rb:80:42:80:50 | call to taint | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps | params_flow.rb:80:48:80:49 | 36 | -| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 or unknown | params_flow.rb:80:8:80:51 | call to [] | -| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 or unknown | params_flow.rb:81:21:81:25 | * ... | +| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | +| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content splat position 0 | params_flow.rb:80:42:80:50 | synthetic splat argument | -| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content splat position 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:81:1:81:37 | call to splatmid | type tracker without call steps | params_flow.rb:81:1:81:37 | call to splatmid | | params_flow.rb:81:1:81:37 | synthetic splat argument | type tracker with call steps | params_flow.rb:69:1:76:3 | synthetic splat parameter | @@ -1852,9 +1849,9 @@ track | params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | | params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps | params_flow.rb:93:9:93:17 | call to taint | -| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:9:93:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:9:93:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:9:93:17 | synthetic splat argument | @@ -1868,9 +1865,9 @@ track | params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps | params_flow.rb:93:9:93:17 | call to taint | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps | params_flow.rb:93:15:93:16 | 40 | -| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content splat position 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content splat position 0 | params_flow.rb:93:9:93:17 | synthetic splat argument | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | @@ -1880,9 +1877,9 @@ track | params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps | params_flow.rb:93:20:93:28 | call to taint | -| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:20:93:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:20:93:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:20:93:28 | synthetic splat argument | @@ -1896,10 +1893,10 @@ track | params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps | params_flow.rb:93:20:93:28 | call to taint | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps | params_flow.rb:93:26:93:27 | 41 | -| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 or unknown | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content splat position 0 | params_flow.rb:93:20:93:28 | synthetic splat argument | -| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content splat position 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps | params_flow.rb:83:26:83:26 | x | @@ -1908,9 +1905,9 @@ track | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps | params_flow.rb:93:31:93:39 | call to taint | -| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:31:93:39 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:31:93:39 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:31:93:39 | synthetic splat argument | @@ -1924,10 +1921,10 @@ track | params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps | params_flow.rb:93:31:93:39 | call to taint | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps | params_flow.rb:93:37:93:38 | 42 | -| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 or unknown | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content splat position 0 | params_flow.rb:93:31:93:39 | synthetic splat argument | -| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content splat position 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps | params_flow.rb:83:29:83:29 | y | @@ -1936,9 +1933,9 @@ track | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 5 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps | params_flow.rb:93:42:93:50 | call to taint | -| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content splat position 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content splat position 5 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:42:93:50 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:42:93:50 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:42:93:50 | synthetic splat argument | @@ -1952,10 +1949,10 @@ track | params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 5 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps | params_flow.rb:93:42:93:50 | call to taint | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps | params_flow.rb:93:48:93:49 | 43 | -| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 or unknown | params_flow.rb:93:8:93:51 | call to [] | -| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 or unknown | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | +| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content splat position 0 | params_flow.rb:93:42:93:50 | synthetic splat argument | -| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content splat position 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content splat position 5 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:1:94:48 | call to pos_many | type tracker without call steps | params_flow.rb:94:1:94:48 | call to pos_many | | params_flow.rb:94:1:94:48 | synthetic splat argument | type tracker with call steps | params_flow.rb:83:1:91:3 | synthetic splat parameter | @@ -2079,9 +2076,9 @@ track | params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:34:96:42 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps | params_flow.rb:96:34:96:42 | call to taint | -| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:34:96:42 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:34:96:42 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:34:96:42 | synthetic splat argument | @@ -2090,16 +2087,16 @@ track | params_flow.rb:96:40:96:41 | 47 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps | params_flow.rb:96:34:96:42 | call to taint | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps | params_flow.rb:96:40:96:41 | 47 | -| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content splat position 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content splat position 0 | params_flow.rb:96:34:96:42 | synthetic splat argument | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:45:96:53 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps | params_flow.rb:96:45:96:53 | call to taint | -| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:45:96:53 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:45:96:53 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:45:96:53 | synthetic splat argument | @@ -2108,16 +2105,16 @@ track | params_flow.rb:96:51:96:52 | 48 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps | params_flow.rb:96:45:96:53 | call to taint | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps | params_flow.rb:96:51:96:52 | 48 | -| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 or unknown | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content splat position 0 | params_flow.rb:96:45:96:53 | synthetic splat argument | -| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content splat position 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:56:96:64 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps | params_flow.rb:96:56:96:64 | call to taint | -| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:33:96:65 | call to [] | -| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:56:96:64 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:56:96:64 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:56:96:64 | synthetic splat argument | @@ -2126,10 +2123,10 @@ track | params_flow.rb:96:62:96:63 | 49 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps | params_flow.rb:96:56:96:64 | call to taint | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps | params_flow.rb:96:62:96:63 | 49 | -| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 or unknown | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | +| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | +| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content splat position 0 | params_flow.rb:96:56:96:64 | synthetic splat argument | -| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content splat position 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps | params_flow.rb:69:24:69:24 | w | @@ -2250,9 +2247,9 @@ track | params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:28:105:36 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps | params_flow.rb:105:28:105:36 | call to taint | -| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:27:105:48 | call to [] | -| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:28:105:36 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:105:28:105:36 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:28:105:36 | synthetic splat argument | @@ -2261,16 +2258,16 @@ track | params_flow.rb:105:34:105:35 | 53 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps | params_flow.rb:105:28:105:36 | call to taint | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps | params_flow.rb:105:34:105:35 | 53 | -| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:27:105:48 | call to [] | -| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content splat position 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content splat position 0 | params_flow.rb:105:28:105:36 | synthetic splat argument | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:39:105:47 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps | params_flow.rb:105:39:105:47 | call to taint | -| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:27:105:48 | call to [] | -| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:39:105:47 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:105:39:105:47 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:39:105:47 | synthetic splat argument | @@ -2279,10 +2276,10 @@ track | params_flow.rb:105:45:105:46 | 54 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps | params_flow.rb:105:39:105:47 | call to taint | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps | params_flow.rb:105:45:105:46 | 54 | -| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 or unknown | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | +| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | +| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content splat position 0 | params_flow.rb:105:39:105:47 | synthetic splat argument | -| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content splat position 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:106:1:106:46 | call to splatmidsmall | type tracker without call steps | params_flow.rb:106:1:106:46 | call to splatmidsmall | | params_flow.rb:106:1:106:46 | synthetic splat argument | type tracker with call steps | params_flow.rb:98:1:103:3 | synthetic splat parameter | @@ -2571,65 +2568,65 @@ track | params_flow.rb:128:10:128:31 | call to [] | type tracker without call steps with content splat position 0 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:10:128:31 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps | params_flow.rb:128:11:128:19 | call to taint | -| params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | +| params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:11:128:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:11:128:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:11:128:19 | synthetic splat argument | | params_flow.rb:128:17:128:18 | 62 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:17:128:18 | 62 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps | params_flow.rb:128:11:128:19 | call to taint | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps | params_flow.rb:128:17:128:18 | 62 | -| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content splat position 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | +| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content splat position 0 | params_flow.rb:128:11:128:19 | synthetic splat argument | | params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps | params_flow.rb:128:22:128:30 | call to taint | -| params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | +| params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:22:128:30 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:22:128:30 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:22:128:30 | synthetic splat argument | | params_flow.rb:128:28:128:29 | 63 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:28:128:29 | 63 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps | params_flow.rb:128:22:128:30 | call to taint | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps | params_flow.rb:128:28:128:29 | 63 | -| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | +| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content splat position 0 | params_flow.rb:128:22:128:30 | synthetic splat argument | -| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content splat position 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:34:128:60 | Array | type tracker without call steps | params_flow.rb:128:34:128:60 | Array | | params_flow.rb:128:34:128:60 | call to [] | type tracker without call steps | params_flow.rb:128:34:128:60 | call to [] | | params_flow.rb:128:34:128:60 | call to [] | type tracker without call steps with content splat position 1 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:34:128:60 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:34:128:60 | synthetic splat argument | | params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps | params_flow.rb:128:35:128:43 | call to taint | -| params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:34:128:60 | call to [] | -| params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | +| params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | +| params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | | params_flow.rb:128:35:128:43 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:35:128:43 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:35:128:43 | synthetic splat argument | | params_flow.rb:128:41:128:42 | 64 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:41:128:42 | 64 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps | params_flow.rb:128:35:128:43 | call to taint | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps | params_flow.rb:128:41:128:42 | 64 | -| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:34:128:60 | call to [] | -| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content splat position 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | +| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | +| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content splat position 0 | params_flow.rb:128:35:128:43 | synthetic splat argument | | params_flow.rb:128:46:128:59 | Array | type tracker without call steps | params_flow.rb:128:46:128:59 | Array | | params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps | params_flow.rb:128:46:128:59 | call to [] | -| params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:34:128:60 | call to [] | -| params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps with content splat position 1 | params_flow.rb:128:34:128:60 | synthetic splat argument | +| params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:128:34:128:60 | call to [] | +| params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:128:34:128:60 | synthetic splat argument | | params_flow.rb:128:46:128:59 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:128:47:128:47 | 0 | type tracker without call steps | params_flow.rb:128:47:128:47 | 0 | -| params_flow.rb:128:47:128:47 | 0 | type tracker without call steps with content element 0 or unknown | params_flow.rb:128:46:128:59 | call to [] | -| params_flow.rb:128:47:128:47 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:128:46:128:59 | synthetic splat argument | +| params_flow.rb:128:47:128:47 | 0 | type tracker without call steps with content element 0 | params_flow.rb:128:46:128:59 | call to [] | +| params_flow.rb:128:47:128:47 | 0 | type tracker without call steps with content element 0 | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps | params_flow.rb:128:50:128:58 | call to taint | -| params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:46:128:59 | call to [] | -| params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | +| params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | +| params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:128:50:128:58 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:50:128:58 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:50:128:58 | synthetic splat argument | | params_flow.rb:128:56:128:57 | 65 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:56:128:57 | 65 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps | params_flow.rb:128:50:128:58 | call to taint | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps | params_flow.rb:128:56:128:57 | 65 | -| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 1 or unknown | params_flow.rb:128:46:128:59 | call to [] | +| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | +| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content splat position 0 | params_flow.rb:128:50:128:58 | synthetic splat argument | -| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content splat position 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:130:1:130:4 | args | type tracker without call steps | params_flow.rb:130:1:130:4 | args | | params_flow.rb:130:8:130:29 | Array | type tracker without call steps | params_flow.rb:130:8:130:29 | Array | | params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | @@ -2643,56 +2640,56 @@ track | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps | params_flow.rb:130:9:130:17 | call to taint | -| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:9:130:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:9:130:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content element 0 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps | params_flow.rb:130:9:130:17 | call to taint | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps | params_flow.rb:130:15:130:16 | 66 | -| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 or unknown | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content splat position 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content splat position 0 | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content element 1 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps | params_flow.rb:130:20:130:28 | call to taint | -| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:20:130:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:20:130:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:20:130:28 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content element 1 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps | params_flow.rb:130:20:130:28 | call to taint | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps | params_flow.rb:130:26:130:27 | 67 | -| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 or unknown | params_flow.rb:130:8:130:29 | call to [] | -| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 or unknown | params_flow.rb:131:10:131:14 | * ... | +| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | call to [] | +| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content splat position 0 | params_flow.rb:130:20:130:28 | synthetic splat argument | -| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content splat position 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:131:1:131:46 | call to pos_many | type tracker without call steps | params_flow.rb:131:1:131:46 | call to pos_many | | params_flow.rb:131:10:131:14 | * ... | type tracker with call steps | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:131:10:131:14 | * ... | type tracker without call steps | params_flow.rb:131:10:131:14 | * ... | @@ -2764,64 +2761,64 @@ track | params_flow.rb:137:11:137:43 | call to [] | type tracker without call steps | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:11:137:43 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:11:137:43 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:12:137:20 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:12:137:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps | params_flow.rb:137:12:137:20 | call to taint | -| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:12:137:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:12:137:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:12:137:20 | synthetic splat argument | | params_flow.rb:137:18:137:19 | 69 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:137:18:137:19 | 69 | type tracker with call steps with content element 0 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:18:137:19 | 69 | type tracker with call steps with content element 0 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:18:137:19 | 69 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps | params_flow.rb:137:12:137:20 | call to taint | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps | params_flow.rb:137:18:137:19 | 69 | -| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content splat position 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content splat position 0 | params_flow.rb:137:12:137:20 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps | params_flow.rb:134:10:134:16 | ...[...] | -| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content element 1 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps | params_flow.rb:137:23:137:31 | call to taint | -| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:23:137:31 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:23:137:31 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:23:137:31 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:134:10:134:16 | ...[...] | -| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content element 1 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps | params_flow.rb:137:23:137:31 | call to taint | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps | params_flow.rb:137:29:137:30 | 70 | -| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 or unknown | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content splat position 0 | params_flow.rb:137:23:137:31 | synthetic splat argument | -| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content splat position 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:34:137:42 | call to taint | type tracker with call steps with content element 2 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:34:137:42 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps | params_flow.rb:137:34:137:42 | call to taint | -| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:11:137:43 | call to [] | -| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:34:137:42 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:34:137:42 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:34:137:42 | synthetic splat argument | | params_flow.rb:137:40:137:41 | 71 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:137:40:137:41 | 71 | type tracker with call steps with content element 2 or unknown | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:137:40:137:41 | 71 | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:40:137:41 | 71 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps | params_flow.rb:137:34:137:42 | call to taint | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps | params_flow.rb:137:40:137:41 | 71 | -| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:10:137:43 | * ... | -| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 or unknown | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | +| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | +| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content splat position 0 | params_flow.rb:137:34:137:42 | synthetic splat argument | -| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content splat position 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | trackEnd | params_flow.rb:1:1:3:3 | &block | params_flow.rb:1:1:3:3 | &block | | params_flow.rb:1:1:3:3 | self in taint | params_flow.rb:1:1:3:3 | self in taint | diff --git a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected index 17f1a103781a2..07a3bc076971c 100644 --- a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected @@ -59,6 +59,8 @@ edges | params_flow.rb:47:13:47:16 | args [element 1] | params_flow.rb:47:12:47:16 | * ... [element 1] | | params_flow.rb:49:13:49:14 | p1 | params_flow.rb:50:10:50:11 | p1 | | params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | +| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | +| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:51:10:51:21 | ( ... ) | | params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | @@ -67,6 +69,7 @@ edges | params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:1:57:4 | args [element 0] | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | | params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | +| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | | params_flow.rb:58:21:58:24 | args [element 0] | params_flow.rb:58:20:58:24 | * ... [element 0] | | params_flow.rb:60:1:60:4 | args [element 0] | params_flow.rb:61:10:61:13 | args [element 0] | | params_flow.rb:60:1:60:4 | args [element 1] | params_flow.rb:61:10:61:13 | args [element 1] | @@ -221,9 +224,11 @@ nodes | params_flow.rb:47:13:47:16 | args [element 1] | semmle.label | args [element 1] | | params_flow.rb:49:13:49:14 | p1 | semmle.label | p1 | | params_flow.rb:49:17:49:24 | *posargs [element 0] | semmle.label | *posargs [element 0] | +| params_flow.rb:49:17:49:24 | *posargs [element 0] | semmle.label | *posargs [element 0] | | params_flow.rb:50:10:50:11 | p1 | semmle.label | p1 | | params_flow.rb:51:10:51:21 | ( ... ) | semmle.label | ( ... ) | | params_flow.rb:51:11:51:17 | posargs [element 0] | semmle.label | posargs [element 0] | +| params_flow.rb:51:11:51:17 | posargs [element 0] | semmle.label | posargs [element 0] | | params_flow.rb:51:11:51:20 | ...[...] | semmle.label | ...[...] | | params_flow.rb:55:9:55:17 | call to taint | semmle.label | call to taint | | params_flow.rb:55:20:55:28 | call to taint | semmle.label | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected b/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected index d51ef0ffae42b..a490c7cf98733 100644 --- a/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected +++ b/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected @@ -165,10 +165,10 @@ track | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element | type_tracker.rb:38:13:38:25 | call to [] | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 or unknown | type_tracker.rb:35:11:35:15 | call to [] | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 | type_tracker.rb:35:11:35:15 | call to [] | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 | type_tracker.rb:35:11:35:15 | synthetic splat argument | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 or unknown | type_tracker.rb:42:14:42:26 | call to [] | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 0 | type_tracker.rb:35:11:35:15 | synthetic splat argument | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:39:5:39:12 | synthetic splat argument | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:43:5:43:13 | synthetic splat argument | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:47:5:47:13 | synthetic splat argument | @@ -195,23 +195,23 @@ track | type_tracker.rb:38:13:38:25 | synthetic splat argument | type tracker without call steps | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps | type_tracker.rb:38:14:38:14 | 1 | | type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps | type_tracker.rb:40:5:40:12 | ...[...] | -| type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps with content element 0 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:14:38:14 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:16:38:16 | 2 | type tracker without call steps | type_tracker.rb:38:16:38:16 | 2 | -| type_tracker.rb:38:16:38:16 | 2 | type tracker without call steps with content element 1 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:16:38:16 | 2 | type tracker without call steps with content splat position 1 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:16:38:16 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:16:38:16 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:18:38:18 | 3 | type tracker without call steps | type_tracker.rb:38:18:38:18 | 3 | -| type_tracker.rb:38:18:38:18 | 3 | type tracker without call steps with content element 2 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:18:38:18 | 3 | type tracker without call steps with content splat position 2 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:18:38:18 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:18:38:18 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:20:38:20 | 4 | type tracker without call steps | type_tracker.rb:38:20:38:20 | 4 | -| type_tracker.rb:38:20:38:20 | 4 | type tracker without call steps with content element 3 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:20:38:20 | 4 | type tracker without call steps with content splat position 3 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:20:38:20 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:20:38:20 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:22:38:22 | 5 | type tracker without call steps | type_tracker.rb:38:22:38:22 | 5 | -| type_tracker.rb:38:22:38:22 | 5 | type tracker without call steps with content element 4 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:22:38:22 | 5 | type tracker without call steps with content splat position 4 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:22:38:22 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:22:38:22 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:38:24:38:24 | 6 | type tracker without call steps | type_tracker.rb:38:24:38:24 | 6 | -| type_tracker.rb:38:24:38:24 | 6 | type tracker without call steps with content element 5 or unknown | type_tracker.rb:38:13:38:25 | call to [] | -| type_tracker.rb:38:24:38:24 | 6 | type tracker without call steps with content splat position 5 | type_tracker.rb:38:13:38:25 | synthetic splat argument | +| type_tracker.rb:38:24:38:24 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:38:13:38:25 | call to [] | +| type_tracker.rb:38:24:38:24 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:38:13:38:25 | synthetic splat argument | | type_tracker.rb:39:5:39:9 | [post] array | type tracker without call steps | type_tracker.rb:39:5:39:9 | [post] array | | type_tracker.rb:39:5:39:12 | call to []= | type tracker without call steps | type_tracker.rb:39:5:39:12 | call to []= | | type_tracker.rb:39:5:39:12 | synthetic splat argument | type tracker without call steps | type_tracker.rb:39:5:39:12 | synthetic splat argument | @@ -226,28 +226,28 @@ track | type_tracker.rb:42:14:42:26 | synthetic splat argument | type tracker without call steps | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps | type_tracker.rb:42:15:42:15 | 1 | | type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps with content element 0 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:15:42:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps | type_tracker.rb:42:17:42:17 | 2 | | type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps with content element 1 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps with content splat position 1 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:17:42:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps | type_tracker.rb:42:19:42:19 | 3 | | type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps with content element 2 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps with content splat position 2 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:19:42:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps | type_tracker.rb:42:21:42:21 | 4 | | type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps with content element 3 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps with content splat position 3 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:21:42:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps | type_tracker.rb:42:23:42:23 | 5 | | type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps with content element 4 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps with content splat position 4 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:23:42:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps | type_tracker.rb:42:25:42:25 | 6 | | type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | -| type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps with content element 5 or unknown | type_tracker.rb:42:14:42:26 | call to [] | -| type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps with content splat position 5 | type_tracker.rb:42:14:42:26 | synthetic splat argument | +| type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:42:14:42:26 | call to [] | +| type_tracker.rb:42:25:42:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:42:14:42:26 | synthetic splat argument | | type_tracker.rb:43:5:43:10 | [post] array2 | type tracker without call steps | type_tracker.rb:43:5:43:10 | [post] array2 | | type_tracker.rb:43:5:43:13 | call to []= | type tracker without call steps | type_tracker.rb:43:5:43:13 | call to []= | | type_tracker.rb:43:5:43:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:43:5:43:13 | synthetic splat argument | @@ -261,24 +261,24 @@ track | type_tracker.rb:46:14:46:26 | call to [] | type tracker without call steps | type_tracker.rb:46:14:46:26 | call to [] | | type_tracker.rb:46:14:46:26 | synthetic splat argument | type tracker without call steps | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:15:46:15 | 1 | type tracker without call steps | type_tracker.rb:46:15:46:15 | 1 | -| type_tracker.rb:46:15:46:15 | 1 | type tracker without call steps with content element 0 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:15:46:15 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:15:46:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:15:46:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps | type_tracker.rb:46:17:46:17 | 2 | | type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps | type_tracker.rb:48:5:48:13 | ...[...] | -| type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps with content element 1 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps with content splat position 1 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:17:46:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:19:46:19 | 3 | type tracker without call steps | type_tracker.rb:46:19:46:19 | 3 | -| type_tracker.rb:46:19:46:19 | 3 | type tracker without call steps with content element 2 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:19:46:19 | 3 | type tracker without call steps with content splat position 2 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:19:46:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:19:46:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:21:46:21 | 4 | type tracker without call steps | type_tracker.rb:46:21:46:21 | 4 | -| type_tracker.rb:46:21:46:21 | 4 | type tracker without call steps with content element 3 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:21:46:21 | 4 | type tracker without call steps with content splat position 3 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:21:46:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:21:46:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:23:46:23 | 5 | type tracker without call steps | type_tracker.rb:46:23:46:23 | 5 | -| type_tracker.rb:46:23:46:23 | 5 | type tracker without call steps with content element 4 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:23:46:23 | 5 | type tracker without call steps with content splat position 4 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:23:46:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:23:46:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:46:25:46:25 | 6 | type tracker without call steps | type_tracker.rb:46:25:46:25 | 6 | -| type_tracker.rb:46:25:46:25 | 6 | type tracker without call steps with content element 5 or unknown | type_tracker.rb:46:14:46:26 | call to [] | -| type_tracker.rb:46:25:46:25 | 6 | type tracker without call steps with content splat position 5 | type_tracker.rb:46:14:46:26 | synthetic splat argument | +| type_tracker.rb:46:25:46:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:46:14:46:26 | call to [] | +| type_tracker.rb:46:25:46:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:46:14:46:26 | synthetic splat argument | | type_tracker.rb:47:5:47:10 | [post] array3 | type tracker without call steps | type_tracker.rb:47:5:47:10 | [post] array3 | | type_tracker.rb:47:5:47:13 | call to []= | type tracker without call steps | type_tracker.rb:47:5:47:13 | call to []= | | type_tracker.rb:47:5:47:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:47:5:47:13 | synthetic splat argument | @@ -295,28 +295,28 @@ track | type_tracker.rb:50:14:50:26 | synthetic splat argument | type tracker without call steps | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps | type_tracker.rb:50:15:50:15 | 1 | | type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps with content element 0 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:15:50:15 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps | type_tracker.rb:50:17:50:17 | 2 | | type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps with content element 1 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps with content splat position 1 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:17:50:17 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps | type_tracker.rb:50:19:50:19 | 3 | | type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps with content element 2 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps with content splat position 2 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:19:50:19 | 3 | type tracker without call steps with content element 2 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps | type_tracker.rb:50:21:50:21 | 4 | | type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps with content element 3 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps with content splat position 3 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:21:50:21 | 4 | type tracker without call steps with content element 3 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps | type_tracker.rb:50:23:50:23 | 5 | | type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps with content element 4 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps with content splat position 4 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:23:50:23 | 5 | type tracker without call steps with content element 4 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps | type_tracker.rb:50:25:50:25 | 6 | | type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps | type_tracker.rb:52:5:52:13 | ...[...] | -| type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps with content element 5 or unknown | type_tracker.rb:50:14:50:26 | call to [] | -| type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps with content splat position 5 | type_tracker.rb:50:14:50:26 | synthetic splat argument | +| type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:50:14:50:26 | call to [] | +| type_tracker.rb:50:25:50:25 | 6 | type tracker without call steps with content element 5 | type_tracker.rb:50:14:50:26 | synthetic splat argument | | type_tracker.rb:51:5:51:10 | [post] array4 | type tracker without call steps | type_tracker.rb:51:5:51:10 | [post] array4 | | type_tracker.rb:51:5:51:13 | call to []= | type tracker without call steps | type_tracker.rb:51:5:51:13 | call to []= | | type_tracker.rb:51:5:51:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:51:5:51:13 | synthetic splat argument |