Ruby: Track types in data flow

This commit is contained in:
Tom Hvitved
2023-12-13 09:44:50 +01:00
parent b0062fc727
commit 978a816f11
39 changed files with 9606 additions and 8845 deletions

View File

@@ -44,6 +44,14 @@ private module Input implements InputSig<Location, RubyDataFlow> {
n.getASplit() instanceof Split::ConditionalCompletionSplit
)
}
predicate uniqueTypeExclude(Node n) {
n =
any(DataFlow::CallNode call |
Private::isStandardNewCall(call.getExprNode(), _, _) and
not call.getReceiver().asExpr().getExpr() instanceof ConstantReadAccess
)
}
}
import MakeConsistency<Location, RubyDataFlow, RubyTaintTracking, Input>

View File

@@ -237,7 +237,7 @@ class NormalCall extends DataFlowCall, TNormalCall {
* need to track the `View` instance (2) into the receiver of the adjusted method
* call, in order to figure out that the call target is in fact `view.html.erb`.
*/
private module ViewComponentRenderModeling {
module ViewComponentRenderModeling {
private import codeql.ruby.frameworks.ViewComponent
private class RenderMethod extends SummarizedCallable, LibraryCallableToIncludeInTypeTracking {
@@ -333,7 +333,7 @@ private predicate selfInModule(SelfVariable self, Module m) {
/** Holds if `self` belongs to method `method` inside module `m`. */
pragma[nomagic]
private predicate selfInMethod(SelfVariable self, MethodBase method, Module m) {
predicate selfInMethod(SelfVariable self, MethodBase method, Module m) {
exists(ModuleBase encl |
method = self.getDeclaringScope() and
encl = method.getEnclosingModule() and
@@ -343,67 +343,6 @@ private predicate selfInMethod(SelfVariable self, MethodBase method, Module m) {
)
}
/** Holds if `self` belongs to the top-level. */
pragma[nomagic]
private predicate selfInToplevel(SelfVariable self, Module m) {
ViewComponentRenderModeling::selfInErbToplevel(self, m)
or
not ViewComponentRenderModeling::selfInErbToplevel(self, _) and
self.getDeclaringScope() instanceof Toplevel and
m = Module::TResolved("Object")
}
/**
* Holds if SSA definition `def` belongs to a variable introduced via pattern
* matching on type `m`. For example, in
*
* ```rb
* case object
* in C => c then c.foo
* end
* ```
*
* the SSA definition for `c` is introduced by matching on `C`.
*/
private predicate asModulePattern(SsaDefinitionExtNode def, Module m) {
exists(AsPattern ap |
m = Module::resolveConstantReadAccess(ap.getPattern()) and
def.getDefinitionExt().(Ssa::WriteDefinition).getWriteAccess().getAstNode() =
ap.getVariableAccess()
)
}
/**
* Holds if `read1` and `read2` are adjacent reads of SSA definition `def`,
* and `read2` is checked to have type `m`. For example, in
*
* ```rb
* case object
* when C then object.foo
* end
* ```
*
* the two reads of `object` are adjacent, and the second is checked to have type `C`.
*/
private predicate hasAdjacentTypeCheckedReads(
Ssa::Definition def, CfgNodes::ExprCfgNode read1, CfgNodes::ExprCfgNode read2, Module m
) {
exists(
CfgNodes::ExprCfgNode pattern, ConditionBlock cb, CfgNodes::ExprNodes::CaseExprCfgNode case
|
m = Module::resolveConstantReadAccess(pattern.getExpr()) and
cb.getLastNode() = pattern and
cb.controls(read2.getBasicBlock(),
any(SuccessorTypes::MatchingSuccessor match | match.getValue() = true)) and
def.hasAdjacentReads(read1, read2) and
case.getValue() = read1
|
pattern = case.getBranch(_).(CfgNodes::ExprNodes::WhenClauseCfgNode).getPattern(_)
or
pattern = case.getBranch(_).(CfgNodes::ExprNodes::InClauseCfgNode).getPattern()
)
}
/** Holds if `new` is a user-defined `self.new` method. */
predicate isUserDefinedNew(SingletonMethod new) {
exists(Expr object | singletonMethod(new, "new", object) |
@@ -638,7 +577,7 @@ private predicate hasUserDefinedNew(Module m) {
* `self.new` on `m`.
*/
pragma[nomagic]
private predicate isStandardNewCall(RelevantCall new, Module m, boolean exact) {
predicate isStandardNewCall(RelevantCall new, Module m, boolean exact) {
exists(DataFlow::LocalSourceNode sourceNode |
flowsToMethodCallReceiver(TNormalCall(new), sourceNode, "new") and
// `m` should not have a user-defined `self.new` method
@@ -667,106 +606,11 @@ private predicate localFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo,
}
private module TrackInstanceInput implements CallGraphConstruction::InputSig {
pragma[nomagic]
private predicate isInstanceNoCall(DataFlow::Node n, Module tp, boolean exact) {
n.asExpr().getExpr() instanceof NilLiteral and
tp = Module::TResolved("NilClass") and
exact = true
or
n.asExpr().getExpr().(BooleanLiteral).isFalse() and
tp = Module::TResolved("FalseClass") and
exact = true
or
n.asExpr().getExpr().(BooleanLiteral).isTrue() and
tp = Module::TResolved("TrueClass") and
exact = true
or
n.asExpr().getExpr() instanceof IntegerLiteral and
tp = Module::TResolved("Integer") and
exact = true
or
n.asExpr().getExpr() instanceof FloatLiteral and
tp = Module::TResolved("Float") and
exact = true
or
n.asExpr().getExpr() instanceof RationalLiteral and
tp = Module::TResolved("Rational") and
exact = true
or
n.asExpr().getExpr() instanceof ComplexLiteral and
tp = Module::TResolved("Complex") and
exact = true
or
n.asExpr().getExpr() instanceof StringlikeLiteral and
tp = Module::TResolved("String") and
exact = true
or
n.asExpr() instanceof CfgNodes::ExprNodes::ArrayLiteralCfgNode and
tp = Module::TResolved("Array") and
exact = true
or
n.asExpr() instanceof CfgNodes::ExprNodes::HashLiteralCfgNode and
tp = Module::TResolved("Hash") and
exact = true
or
n.asExpr().getExpr() instanceof MethodBase and
tp = Module::TResolved("Symbol") and
exact = true
or
n.asParameter() instanceof BlockParameter and
tp = Module::TResolved("Proc") and
exact = true
or
n.asExpr().getExpr() instanceof Lambda and
tp = Module::TResolved("Proc") and
exact = true
or
// `self` reference in method or top-level (but not in module or singleton method,
// where instance methods cannot be called; only singleton methods)
n =
any(SelfLocalSourceNode self |
exists(MethodBase m |
selfInMethod(self.getVariable(), m, tp) and
not m instanceof SingletonMethod and
if m.getEnclosingModule() instanceof Toplevel then exact = true else exact = false
)
or
selfInToplevel(self.getVariable(), tp) and
exact = true
)
or
// `in C => c then c.foo`
asModulePattern(n, tp) and
exact = false
or
// `case object when C then object.foo`
hasAdjacentTypeCheckedReads(_, _, n.asExpr(), tp) and
exact = false
}
pragma[nomagic]
private predicate isInstanceCall(DataFlow::Node n, Module tp, boolean exact) {
isStandardNewCall(n.asExpr(), tp, exact)
}
/** Holds if `n` is an instance of type `tp`. */
pragma[inline]
private predicate isInstance(DataFlow::Node n, Module tp, boolean exact) {
isInstanceNoCall(n, tp, exact)
or
isInstanceCall(n, tp, exact)
}
pragma[nomagic]
private predicate hasAdjacentTypeCheckedReads(DataFlow::Node node) {
hasAdjacentTypeCheckedReads(_, _, node.asExpr(), _)
}
newtype State = additional MkState(Module m, Boolean exact)
predicate start(DataFlow::Node start, State state) {
exists(Module tp, boolean exact | state = MkState(tp, exact) |
isInstance(start, tp, exact)
TypeInference::hasType(start, tp, exact)
or
exists(Module m |
(if m.isClass() then tp = Module::TResolved("Class") else tp = Module::TResolved("Module")) and
@@ -784,6 +628,11 @@ private module TrackInstanceInput implements CallGraphConstruction::InputSig {
)
}
pragma[nomagic]
private predicate hasAdjacentTypeCheckedRead(DataFlow::Node node) {
TypeInference::hasAdjacentTypeCheckedRead(node.asExpr(), _)
}
pragma[nomagic]
predicate stepNoCall(DataFlow::Node nodeFrom, DataFlow::Node nodeTo, StepSummary summary) {
smallStepNoCall(nodeFrom, nodeTo, summary)
@@ -791,8 +640,8 @@ private module TrackInstanceInput implements CallGraphConstruction::InputSig {
// We exclude steps into type checked variables. For those, we instead rely on the
// type being checked against
localFlowStep(nodeFrom, nodeTo, summary) and
not hasAdjacentTypeCheckedReads(nodeTo) and
not asModulePattern(nodeTo, _)
not hasAdjacentTypeCheckedRead(nodeTo) and
not TypeInference::asModulePattern(nodeTo.(SsaDefinitionExtNode).getDefinitionExt(), _)
}
predicate stepCall(DataFlow::Node nodeFrom, DataFlow::Node nodeTo, StepSummary summary) {

View File

@@ -93,6 +93,14 @@ module SsaFlow {
result = TSelfToplevelParameterNode(p.asToplevelSelf())
}
ParameterNodeImpl toParameterNodeImpl(SsaDefinitionExtNode node) {
exists(SsaImpl::WriteDefinition def, SsaImpl::ParameterExt p |
def = node.getDefinitionExt() and
result = toParameterNode(p) and
p.isInitializedBy(def)
)
}
Impl::Node asNode(Node n) {
n = TSsaNode(result)
or
@@ -694,7 +702,9 @@ private module Cached {
cached
newtype TDataFlowType =
TModuleDataFlowType(Module m) or
TLambdaDataFlowType(Callable c) { c = any(LambdaSelfReferenceNode n).getCallable() } or
TCollectionType() or
TUnknownDataFlowType()
}
@@ -1883,21 +1893,83 @@ predicate expectsContent(Node n, ContentSet c) {
}
class DataFlowType extends TDataFlowType {
string toString() { result = "" }
string toString() {
exists(Module m |
this = TModuleDataFlowType(m) and
result = m.toString()
)
or
this = TLambdaDataFlowType(_) and result = "[lambda]"
or
this = TCollectionType() and result = "[collection]"
or
this = TUnknownDataFlowType() and
result = ""
}
predicate isUnknown() { this = TUnknownDataFlowType() }
Location getLocation() {
exists(Module m |
this = TModuleDataFlowType(m) and
result = m.getLocation()
)
or
exists(Callable c | this = TLambdaDataFlowType(c) and result = c.getLocation())
}
}
pragma[nomagic]
private predicate isProcClass(DataFlowType t) {
t = TModuleDataFlowType(any(TypeInference::ProcClass m))
}
pragma[nomagic]
private predicate isArrayClass(DataFlowType t) {
t = TModuleDataFlowType(any(TypeInference::ArrayClass m).getADescendent())
}
pragma[nomagic]
private predicate isHashClass(DataFlowType t) {
t = TModuleDataFlowType(any(TypeInference::HashClass m).getADescendent())
}
private predicate isCollectionClass(DataFlowType t) { isArrayClass(t) or isHashClass(t) }
predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) {
t1 != TUnknownDataFlowType() and
t2 = TUnknownDataFlowType()
not t1.isUnknown() and
t2.isUnknown()
or
exists(Module m1, Module m2 |
t1 = TModuleDataFlowType(m1) and
t2 = TModuleDataFlowType(m2) and
m1.getAnImmediateAncestor+() = m2
)
or
t1 instanceof TLambdaDataFlowType and
isProcClass(t2)
}
private predicate mustHaveLambdaType(ExprNode n, Callable c) {
private predicate mustHaveLambdaType(Node n, Callable c) {
exists(VariableCapture::ClosureExpr ce, CfgNodes::ExprCfgNode e |
e = n.asExpr() and ce.hasBody(c)
|
e = ce or
ce.hasAliasedAccess(e)
)
or
n.(CaptureNode).getSynthesizedCaptureNode().isInstanceAccess() and
c = n.(CaptureNode).getSynthesizedCaptureNode().getEnclosingCallable()
}
private predicate mustHaveCollectionType(Node n, DataFlowType t) {
exists(ContentSet c | readStep(n, c, _) or storeStep(_, c, n) or expectsContent(n, c) |
c.isElement() and
t = TCollectionType()
) and
not n instanceof SynthHashSplatOrSplatArgumentNode and
not n instanceof SynthHashSplatParameterNode and
not n instanceof SynthSplatParameterNode
}
predicate localMustFlowStep(Node node1, Node node2) { none() }
@@ -1911,15 +1983,40 @@ DataFlowType getNodeType(Node n) {
result = TLambdaDataFlowType(c)
)
or
mustHaveCollectionType(n, result)
or
not n instanceof LambdaSelfReferenceNode and
not mustHaveLambdaType(n, _) and
result = TUnknownDataFlowType()
not mustHaveCollectionType(n, _) and
(
TypeInference::hasModuleType(n, result)
or
not TypeInference::hasModuleType(n, _) and
result.isUnknown()
)
}
pragma[inline]
pragma[nomagic]
private predicate compatibleTypesNonSymRefl(DataFlowType t1, DataFlowType t2) {
t1 != TUnknownDataFlowType() and
t2 = TUnknownDataFlowType()
not t1.isUnknown() and
t2.isUnknown()
or
t1 instanceof TLambdaDataFlowType and
isProcClass(t2)
or
t1 instanceof TCollectionType and
isCollectionClass(t2)
}
pragma[nomagic]
private predicate compatibleModuleTypes(TModuleDataFlowType t1, TModuleDataFlowType t2) {
exists(Module m1, Module m2, Module m3 |
t1 = TModuleDataFlowType(m1) and
t2 = TModuleDataFlowType(m2)
|
m3.getAnAncestor() = m1 and
m3.getAnAncestor() = m2
)
}
/**
@@ -1932,6 +2029,8 @@ predicate compatibleTypes(DataFlowType t1, DataFlowType t2) {
compatibleTypesNonSymRefl(t1, t2)
or
compatibleTypesNonSymRefl(t2, t1)
or
compatibleModuleTypes(t1, t2)
}
abstract class PostUpdateNodeImpl extends Node {
@@ -1991,7 +2090,11 @@ private import PostUpdateNodes
/** A node that performs a type cast. */
class CastNode extends Node {
CastNode() { none() }
CastNode() {
TypeInference::hasAdjacentTypeCheckedRead(this.asExpr(), _)
or
TypeInference::asModulePattern(this.(SsaDefinitionNode).getDefinition(), _)
}
}
/**
@@ -2191,3 +2294,245 @@ class AdditionalJumpStep extends Unit {
*/
abstract predicate step(Node pred, Node succ);
}
/** Provides logic for assigning types to data flow nodes. */
module TypeInference {
private import codeql.ruby.ast.internal.Module
private import DataFlowDispatch
/** The built-in `Proc` class. */
class ProcClass extends Module {
ProcClass() { this = TResolved("Proc") }
}
/** The built-in `Array` class. */
class ArrayClass extends Module {
ArrayClass() { this = TResolved("Array") }
}
/** The built-in `Hash` class. */
class HashClass extends Module {
HashClass() { this = TResolved("Hash") }
}
/** The built-in `String` class. */
class StringClass extends Module {
StringClass() { this = TResolved("String") }
}
/** Holds if `self` belongs to the top-level. */
pragma[nomagic]
private predicate selfInToplevel(SelfVariable self, Module m) {
ViewComponentRenderModeling::selfInErbToplevel(self, m)
or
not ViewComponentRenderModeling::selfInErbToplevel(self, _) and
self.getDeclaringScope() instanceof Toplevel and
m = TResolved("Object")
}
/**
* Holds if SSA definition `def` belongs to a variable introduced via pattern
* matching on type `m`. For example, in
*
* ```rb
* case object
* in C => c then c.foo
* end
* ```
*
* the SSA definition for `c` is introduced by matching on `C`.
*/
predicate asModulePattern(Ssa::WriteDefinition def, Module m) {
exists(AsPattern ap |
m = resolveConstantReadAccess(ap.getPattern()) and
def.getWriteAccess().getAstNode() = ap.getVariableAccess()
)
}
/**
* Holds if `caseRead` and `read` are reads of SSA definition `def`,
* and `read` is checked to have type `m`. For example, in
*
* ```rb
* case object
* when C then object.foo
* end
* ```
*
* the second read of `object` is known to have type `C`.
*/
private predicate hasTypeCheckedRead(
Ssa::Definition def, CfgNodes::ExprCfgNode caseRead, CfgNodes::ExprCfgNode read, Module m
) {
exists(
CfgNodes::ExprCfgNode pattern, ConditionBlock cb, CfgNodes::ExprNodes::CaseExprCfgNode case
|
m = resolveConstantReadAccess(pattern.getExpr()) and
cb.getLastNode() = pattern and
cb.controls(read.getBasicBlock(),
any(SuccessorTypes::MatchingSuccessor match | match.getValue() = true)) and
caseRead = def.getARead() and
read = def.getARead() and
case.getValue() = caseRead
|
pattern = case.getBranch(_).(CfgNodes::ExprNodes::WhenClauseCfgNode).getPattern(_)
or
pattern = case.getBranch(_).(CfgNodes::ExprNodes::InClauseCfgNode).getPattern()
)
}
predicate hasAdjacentTypeCheckedRead(CfgNodes::ExprCfgNode read, Module m) {
exists(Ssa::Definition def, CfgNodes::ExprCfgNode caseRead |
hasTypeCheckedRead(def, caseRead, read, m) and
def.hasAdjacentReads(caseRead, read)
)
}
private predicate isTypeCheckedRead(CfgNodes::ExprCfgNode read, Module m) {
exists(Ssa::Definition def |
hasTypeCheckedRead(def, _, read, m) and
// could in principle be checked against a new type
not exists(CfgNodes::ExprCfgNode innerCaseRead |
hasTypeCheckedRead(def, _, innerCaseRead, m) and
hasTypeCheckedRead(def, innerCaseRead, read, _)
)
)
}
pragma[nomagic]
private predicate selfInMethodOrToplevelHasType(SelfVariable self, Module tp, boolean exact) {
exists(MethodBase m |
selfInMethod(self, m, tp) and
not m instanceof SingletonMethod and
if m.getEnclosingModule() instanceof Toplevel then exact = true else exact = false
)
or
selfInToplevel(self, tp) and
exact = true
}
pragma[nomagic]
private predicate parameterNodeHasType(ParameterNodeImpl p, Module tp, boolean exact) {
exists(ParameterPosition pos |
p.isParameterOf(_, pos) and
exact = true
|
(pos.isSplat(_) or pos.isSynthSplat(_)) and
tp instanceof ArrayClass
or
(pos.isHashSplat() or pos.isSynthHashSplat()) and
tp instanceof HashClass
)
or
selfInMethodOrToplevelHasType(p.(SelfParameterNodeImpl).getSelfVariable(), tp, exact)
}
pragma[nomagic]
private predicate ssaDefHasType(SsaDefinitionExtNode def, Module tp, boolean exact) {
exists(ParameterNodeImpl p |
parameterNodeHasType(p, tp, exact) and
p = SsaFlow::toParameterNodeImpl(def)
)
or
selfInMethodOrToplevelHasType(def.getVariable(), tp, exact)
or
asModulePattern(def.getDefinitionExt(), tp) and
exact = false
}
pragma[nomagic]
private predicate hasTypeNoCall(Node n, Module tp, boolean exact) {
n.asExpr().getExpr() instanceof NilLiteral and
tp = TResolved("NilClass") and
exact = true
or
n.asExpr().getExpr().(BooleanLiteral).isFalse() and
tp = TResolved("FalseClass") and
exact = true
or
n.asExpr().getExpr().(BooleanLiteral).isTrue() and
tp = TResolved("TrueClass") and
exact = true
or
n.asExpr().getExpr() instanceof IntegerLiteral and
tp = TResolved("Integer") and
exact = true
or
n.asExpr().getExpr() instanceof FloatLiteral and
tp = TResolved("Float") and
exact = true
or
n.asExpr().getExpr() instanceof RationalLiteral and
tp = TResolved("Rational") and
exact = true
or
n.asExpr().getExpr() instanceof ComplexLiteral and
tp = TResolved("Complex") and
exact = true
or
n.asExpr().getExpr() instanceof StringlikeLiteral and
tp instanceof StringClass and
exact = true
or
(
n.asExpr() instanceof CfgNodes::ExprNodes::ArrayLiteralCfgNode or
n instanceof SynthSplatArgumentNode
) and
tp instanceof ArrayClass and
exact = true
or
(
n.asExpr() instanceof CfgNodes::ExprNodes::HashLiteralCfgNode
or
n instanceof SynthHashSplatArgumentNode
) and
tp instanceof HashClass and
exact = true
or
n.asExpr().getExpr() instanceof MethodBase and
tp = TResolved("Symbol") and
exact = true
or
(
n.asParameter() instanceof BlockParameter
or
n instanceof BlockParameterNode
or
n.asExpr().getExpr() instanceof Lambda
) and
tp instanceof ProcClass and
exact = true
or
parameterNodeHasType(n, tp, exact)
or
exists(SsaDefinitionExtNode def | ssaDefHasType(def, tp, exact) |
n = def or
n.asExpr() =
any(CfgNodes::ExprCfgNode read |
read = def.getDefinitionExt().getARead() and
not isTypeCheckedRead(read, _) // could in principle be checked against a new type
)
)
or
// `case object when C then object.foo`
isTypeCheckedRead(n.asExpr(), tp) and
exact = false
}
pragma[nomagic]
private predicate hasTypeCall(Node n, Module tp, boolean exact) {
isStandardNewCall(n.asExpr(), tp, exact)
}
pragma[inline]
predicate hasType(Node n, Module tp, boolean exact) {
hasTypeNoCall(n, tp, exact)
or
hasTypeCall(n, tp, exact)
}
pragma[nomagic]
predicate hasModuleType(Node n, DataFlowType t) {
exists(Module tp | t = TModuleDataFlowType(tp) | hasType(n, tp, _))
}
}

View File

@@ -727,6 +727,25 @@ class ContentSet extends TContentSet {
this = TElementContentOfTypeContent(type, true)
}
/**
* Holds if this content set represents an element in a collection (array or hash).
*/
predicate isElement() {
this.isSingleton(any(Content::ElementContent c))
or
this.isAnyElement()
or
this.isKnownOrUnknownElement(any(Content::KnownElementContent c))
or
this.isElementLowerBound(_)
or
this.isElementLowerBoundOrUnknown(_)
or
this.isElementOfType(_)
or
this.isElementOfTypeOrUnknown(_)
}
/** Gets a textual representation of this content set. */
string toString() {
exists(Content c |

View File

@@ -117,14 +117,11 @@ private module Cached {
// Although flow through collections is modeled precisely using stores/reads, we still
// allow flow out of a _tainted_ collection. This is needed in order to support taint-
// tracking configurations where the source is a collection.
exists(DataFlow::ContentSet c | readStep(nodeFrom, c, nodeTo) |
c.isSingleton(any(DataFlow::Content::ElementContent ec))
or
c.isKnownOrUnknownElement(_)
or
c.isAnyElement()
) and
exists(DataFlow::ContentSet c |
readStep(nodeFrom, c, nodeTo) and
c.isElement() and
model = ""
)
}
cached

View File

@@ -28,9 +28,9 @@ edges
| call_sensitivity.rb:66:20:66:20 | x | call_sensitivity.rb:67:24:67:24 | x | provenance | |
| call_sensitivity.rb:67:24:67:24 | x | call_sensitivity.rb:62:18:62:18 | y | provenance | |
| call_sensitivity.rb:70:30:70:30 | x | call_sensitivity.rb:71:10:71:10 | x | provenance | |
| call_sensitivity.rb:74:18:74:18 | y | call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | provenance | |
| call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | call_sensitivity.rb:76:17:76:17 | y | provenance | |
| call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | call_sensitivity.rb:76:17:76:17 | y | provenance | heuristic-callback |
| call_sensitivity.rb:74:18:74:18 | y | call_sensitivity.rb:75:20:77:7 | do ... end : [lambda] [captured y] | provenance | |
| call_sensitivity.rb:75:20:77:7 | do ... end : [lambda] [captured y] | call_sensitivity.rb:76:17:76:17 | y | provenance | |
| call_sensitivity.rb:75:20:77:7 | do ... end : [lambda] [captured y] | call_sensitivity.rb:76:17:76:17 | y | provenance | heuristic-callback |
| call_sensitivity.rb:76:17:76:17 | y | call_sensitivity.rb:50:15:50:15 | x | provenance | |
| call_sensitivity.rb:80:15:80:15 | x | call_sensitivity.rb:81:18:81:18 | x | provenance | |
| call_sensitivity.rb:81:18:81:18 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | |
@@ -121,7 +121,7 @@ nodes
| call_sensitivity.rb:70:30:70:30 | x | semmle.label | x |
| call_sensitivity.rb:71:10:71:10 | x | semmle.label | x |
| call_sensitivity.rb:74:18:74:18 | y | semmle.label | y |
| call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | semmle.label | do ... end [captured y] |
| call_sensitivity.rb:75:20:77:7 | do ... end : [lambda] [captured y] | semmle.label | do ... end : [lambda] [captured y] |
| call_sensitivity.rb:76:17:76:17 | y | semmle.label | y |
| call_sensitivity.rb:80:15:80:15 | x | semmle.label | x |
| call_sensitivity.rb:81:18:81:18 | x | semmle.label | x |

View File

@@ -2,110 +2,110 @@ models
edges
| main.rb:3:9:3:9 | x | main.rb:4:26:4:26 | x | provenance | |
| main.rb:3:13:3:21 | call to source | main.rb:3:9:3:9 | x | provenance | |
| main.rb:4:9:4:12 | view [@x] | main.rb:5:16:5:19 | view [@x] | provenance | |
| main.rb:4:16:4:27 | call to new [@x] | main.rb:4:9:4:12 | view [@x] | provenance | |
| main.rb:4:26:4:26 | x | main.rb:4:16:4:27 | call to new [@x] | provenance | |
| main.rb:4:26:4:26 | x | view1.rb:5:20:5:20 | x | provenance | |
| main.rb:5:16:5:19 | view [@x] | view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | provenance | |
| main.rb:10:16:10:19 | [post] view [@x] | main.rb:11:9:11:12 | view [@x] | provenance | |
| main.rb:11:9:11:12 | view [@x] | view2.rb:2:5:4:7 | self in foo [@x] | provenance | |
| main.rb:4:9:4:12 | view : View1 [@x] | main.rb:5:16:5:19 | view : View1 [@x] | provenance | |
| main.rb:4:16:4:27 | call to new : View1 [@x] | main.rb:4:9:4:12 | view : View1 [@x] | provenance | |
| main.rb:4:26:4:26 | x | main.rb:4:16:4:27 | call to new : View1 [@x] | provenance | |
| main.rb:4:26:4:26 | x | view1.rb:2:20:2:20 | x | provenance | |
| main.rb:5:16:5:19 | view : View1 [@x] | view1.html.erb:2:5:8:1 | self in view1.html.erb : View1 [@x] | provenance | |
| main.rb:10:16:10:19 | [post] view : View2 [@x] | main.rb:11:9:11:12 | view : View2 [@x] | provenance | |
| main.rb:11:9:11:12 | view : View2 [@x] | view2.rb:2:5:4:7 | self in foo : View2 [@x] | provenance | |
| main.rb:15:9:15:9 | x | main.rb:16:26:16:26 | x | provenance | |
| main.rb:15:13:15:21 | call to source | main.rb:15:9:15:9 | x | provenance | |
| main.rb:16:9:16:12 | view [@x] | main.rb:17:16:17:19 | view [@x] | provenance | |
| main.rb:16:16:16:27 | call to new [@x] | main.rb:16:9:16:12 | view [@x] | provenance | |
| main.rb:16:26:16:26 | x | main.rb:16:16:16:27 | call to new [@x] | provenance | |
| main.rb:16:9:16:12 | view : View3 [@x] | main.rb:17:16:17:19 | view : View3 [@x] | provenance | |
| main.rb:16:16:16:27 | call to new : View3 [@x] | main.rb:16:9:16:12 | view : View3 [@x] | provenance | |
| main.rb:16:26:16:26 | x | main.rb:16:16:16:27 | call to new : View3 [@x] | provenance | |
| main.rb:16:26:16:26 | x | view3.rb:2:20:2:20 | x | provenance | |
| main.rb:17:16:17:19 | view [@x] | view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | provenance | |
| view1.html.erb:2:5:2:9 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | |
| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:2:5:2:9 | self [@x] | provenance | |
| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:7:1:7:5 | self [@x] | provenance | |
| view1.html.erb:6:1:6:14 | [post] self [@x] | view1.html.erb:7:1:7:5 | self [@x] | provenance | |
| view1.html.erb:6:5:6:13 | call to source | view1.html.erb:6:1:6:14 | [post] self [@x] | provenance | |
| view1.html.erb:6:5:6:13 | call to source | view1.rb:13:13:13:13 | x | provenance | |
| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | |
| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | |
| view1.rb:5:20:5:20 | x | view1.rb:6:14:6:14 | x | provenance | |
| view1.rb:6:14:6:14 | x | view1.rb:6:9:6:10 | [post] self [@x] | provenance | |
| view1.rb:9:5:11:7 | self in foo [@x] | view1.rb:10:14:10:15 | self [@x] | provenance | |
| view1.rb:10:14:10:15 | self [@x] | view1.rb:10:14:10:15 | @x | provenance | |
| view1.rb:13:13:13:13 | x | view1.rb:14:14:14:14 | x | provenance | |
| view1.rb:14:9:14:10 | [post] self [@x] | view1.rb:13:5:15:7 | self in set [Return] [@x] | provenance | |
| view1.rb:14:14:14:14 | x | view1.rb:14:9:14:10 | [post] self [@x] | provenance | |
| view2.html.erb:3:1:3:14 | [post] self [@x] | view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] [@x] | provenance | |
| view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] [@x] | main.rb:10:16:10:19 | [post] view [@x] | provenance | |
| view2.html.erb:3:5:3:13 | call to source | view2.html.erb:3:1:3:14 | [post] self [@x] | provenance | |
| main.rb:17:16:17:19 | view : View3 [@x] | view3.html.erb:3:1:4:1 | self in view3.html.erb : View3 [@x] | provenance | |
| view1.html.erb:2:5:2:9 | self : View1 [@x] | view1.rb:6:5:8:7 | self in foo : View1 [@x] | provenance | |
| view1.html.erb:2:5:8:1 | self in view1.html.erb : View1 [@x] | view1.html.erb:2:5:2:9 | self : View1 [@x] | provenance | |
| view1.html.erb:2:5:8:1 | self in view1.html.erb : View1 [@x] | view1.html.erb:7:1:7:5 | self : View1 [@x] | provenance | |
| view1.html.erb:6:1:6:14 | [post] self : View1 [@x] | view1.html.erb:7:1:7:5 | self : View1 [@x] | provenance | |
| view1.html.erb:6:5:6:13 | call to source | view1.html.erb:6:1:6:14 | [post] self : View1 [@x] | provenance | |
| view1.html.erb:6:5:6:13 | call to source | view1.rb:10:13:10:13 | x | provenance | |
| view1.html.erb:7:1:7:5 | self : View1 [@x] | view1.rb:6:5:8:7 | self in foo : View1 [@x] | provenance | |
| view1.html.erb:7:1:7:5 | self : View1 [@x] | view1.rb:6:5:8:7 | self in foo : View1 [@x] | provenance | |
| view1.rb:2:20:2:20 | x | view1.rb:3:14:3:14 | x | provenance | |
| view1.rb:3:14:3:14 | x | view1.rb:3:9:3:10 | [post] self [@x] | provenance | |
| view1.rb:6:5:8:7 | self in foo : View1 [@x] | view1.rb:7:14:7:15 | self : View1 [@x] | provenance | |
| view1.rb:7:14:7:15 | self : View1 [@x] | view1.rb:7:14:7:15 | @x | provenance | |
| view1.rb:10:13:10:13 | x | view1.rb:11:14:11:14 | x | provenance | |
| view1.rb:11:9:11:10 | [post] self [@x] | view1.rb:10:5:12:7 | self in set [Return] : View1 [@x] | provenance | |
| view1.rb:11:14:11:14 | x | view1.rb:11:9:11:10 | [post] self [@x] | provenance | |
| view2.html.erb:3:1:3:14 | [post] self : View2 [@x] | view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] : View2 [@x] | provenance | |
| view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] : View2 [@x] | main.rb:10:16:10:19 | [post] view : View2 [@x] | provenance | |
| view2.html.erb:3:5:3:13 | call to source | view2.html.erb:3:1:3:14 | [post] self : View2 [@x] | provenance | |
| view2.html.erb:3:5:3:13 | call to source | view2.rb:6:13:6:13 | x | provenance | |
| view2.rb:2:5:4:7 | self in foo [@x] | view2.rb:3:14:3:15 | self [@x] | provenance | |
| view2.rb:3:14:3:15 | self [@x] | view2.rb:3:14:3:15 | @x | provenance | |
| view2.rb:2:5:4:7 | self in foo : View2 [@x] | view2.rb:3:14:3:15 | self : View2 [@x] | provenance | |
| view2.rb:3:14:3:15 | self : View2 [@x] | view2.rb:3:14:3:15 | @x | provenance | |
| view2.rb:6:13:6:13 | x | view2.rb:7:14:7:14 | x | provenance | |
| view2.rb:7:9:7:10 | [post] self [@x] | view2.rb:6:5:8:7 | self in set [Return] [@x] | provenance | |
| view2.rb:7:9:7:10 | [post] self [@x] | view2.rb:6:5:8:7 | self in set [Return] : View2 [@x] | provenance | |
| view2.rb:7:14:7:14 | x | view2.rb:7:9:7:10 | [post] self [@x] | provenance | |
| view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | view3.html.erb:3:6:3:8 | self [@x] | provenance | |
| view3.html.erb:3:6:3:8 | self [@x] | view3.html.erb:3:6:3:8 | call to get | provenance | |
| view3.html.erb:3:6:3:8 | self [@x] | view3.rb:6:5:8:7 | self in get [@x] | provenance | |
| view3.html.erb:3:1:4:1 | self in view3.html.erb : View3 [@x] | view3.html.erb:3:6:3:8 | self : View3 [@x] | provenance | |
| view3.html.erb:3:6:3:8 | self : View3 [@x] | view3.html.erb:3:6:3:8 | call to get | provenance | |
| view3.html.erb:3:6:3:8 | self : View3 [@x] | view3.rb:6:5:8:7 | self in get : View3 [@x] | provenance | |
| view3.rb:2:20:2:20 | x | view3.rb:3:14:3:14 | x | provenance | |
| view3.rb:3:14:3:14 | x | view3.rb:3:9:3:10 | [post] self [@x] | provenance | |
| view3.rb:6:5:8:7 | self in get [@x] | view3.rb:7:9:7:10 | self [@x] | provenance | |
| view3.rb:7:9:7:10 | self [@x] | view3.rb:7:9:7:10 | @x | provenance | |
| view3.rb:6:5:8:7 | self in get : View3 [@x] | view3.rb:7:9:7:10 | self : View3 [@x] | provenance | |
| view3.rb:7:9:7:10 | self : View3 [@x] | view3.rb:7:9:7:10 | @x | provenance | |
nodes
| main.rb:3:9:3:9 | x | semmle.label | x |
| main.rb:3:13:3:21 | call to source | semmle.label | call to source |
| main.rb:4:9:4:12 | view [@x] | semmle.label | view [@x] |
| main.rb:4:16:4:27 | call to new [@x] | semmle.label | call to new [@x] |
| main.rb:4:9:4:12 | view : View1 [@x] | semmle.label | view : View1 [@x] |
| main.rb:4:16:4:27 | call to new : View1 [@x] | semmle.label | call to new : View1 [@x] |
| main.rb:4:26:4:26 | x | semmle.label | x |
| main.rb:5:16:5:19 | view [@x] | semmle.label | view [@x] |
| main.rb:10:16:10:19 | [post] view [@x] | semmle.label | [post] view [@x] |
| main.rb:11:9:11:12 | view [@x] | semmle.label | view [@x] |
| main.rb:5:16:5:19 | view : View1 [@x] | semmle.label | view : View1 [@x] |
| main.rb:10:16:10:19 | [post] view : View2 [@x] | semmle.label | [post] view : View2 [@x] |
| main.rb:11:9:11:12 | view : View2 [@x] | semmle.label | view : View2 [@x] |
| main.rb:15:9:15:9 | x | semmle.label | x |
| main.rb:15:13:15:21 | call to source | semmle.label | call to source |
| main.rb:16:9:16:12 | view [@x] | semmle.label | view [@x] |
| main.rb:16:16:16:27 | call to new [@x] | semmle.label | call to new [@x] |
| main.rb:16:9:16:12 | view : View3 [@x] | semmle.label | view : View3 [@x] |
| main.rb:16:16:16:27 | call to new : View3 [@x] | semmle.label | call to new : View3 [@x] |
| main.rb:16:26:16:26 | x | semmle.label | x |
| main.rb:17:16:17:19 | view [@x] | semmle.label | view [@x] |
| view1.html.erb:2:5:2:9 | self [@x] | semmle.label | self [@x] |
| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | semmle.label | self in view1.html.erb [@x] |
| view1.html.erb:6:1:6:14 | [post] self [@x] | semmle.label | [post] self [@x] |
| main.rb:17:16:17:19 | view : View3 [@x] | semmle.label | view : View3 [@x] |
| view1.html.erb:2:5:2:9 | self : View1 [@x] | semmle.label | self : View1 [@x] |
| view1.html.erb:2:5:8:1 | self in view1.html.erb : View1 [@x] | semmle.label | self in view1.html.erb : View1 [@x] |
| view1.html.erb:6:1:6:14 | [post] self : View1 [@x] | semmle.label | [post] self : View1 [@x] |
| view1.html.erb:6:5:6:13 | call to source | semmle.label | call to source |
| view1.html.erb:7:1:7:5 | self [@x] | semmle.label | self [@x] |
| view1.html.erb:7:1:7:5 | self [@x] | semmle.label | self [@x] |
| view1.rb:5:20:5:20 | x | semmle.label | x |
| view1.rb:6:9:6:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view1.rb:6:14:6:14 | x | semmle.label | x |
| view1.rb:9:5:11:7 | self in foo [@x] | semmle.label | self in foo [@x] |
| view1.rb:10:14:10:15 | @x | semmle.label | @x |
| view1.rb:10:14:10:15 | self [@x] | semmle.label | self [@x] |
| view1.rb:13:5:15:7 | self in set [Return] [@x] | semmle.label | self in set [Return] [@x] |
| view1.rb:13:13:13:13 | x | semmle.label | x |
| view1.rb:14:9:14:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view1.rb:14:14:14:14 | x | semmle.label | x |
| view2.html.erb:3:1:3:14 | [post] self [@x] | semmle.label | [post] self [@x] |
| view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] [@x] | semmle.label | self in view2.html.erb [Return] [@x] |
| view1.html.erb:7:1:7:5 | self : View1 [@x] | semmle.label | self : View1 [@x] |
| view1.html.erb:7:1:7:5 | self : View1 [@x] | semmle.label | self : View1 [@x] |
| view1.rb:2:20:2:20 | x | semmle.label | x |
| view1.rb:3:9:3:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view1.rb:3:14:3:14 | x | semmle.label | x |
| view1.rb:6:5:8:7 | self in foo : View1 [@x] | semmle.label | self in foo : View1 [@x] |
| view1.rb:7:14:7:15 | @x | semmle.label | @x |
| view1.rb:7:14:7:15 | self : View1 [@x] | semmle.label | self : View1 [@x] |
| view1.rb:10:5:12:7 | self in set [Return] : View1 [@x] | semmle.label | self in set [Return] : View1 [@x] |
| view1.rb:10:13:10:13 | x | semmle.label | x |
| view1.rb:11:9:11:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view1.rb:11:14:11:14 | x | semmle.label | x |
| view2.html.erb:3:1:3:14 | [post] self : View2 [@x] | semmle.label | [post] self : View2 [@x] |
| view2.html.erb:3:1:4:1 | self in view2.html.erb [Return] : View2 [@x] | semmle.label | self in view2.html.erb [Return] : View2 [@x] |
| view2.html.erb:3:5:3:13 | call to source | semmle.label | call to source |
| view2.rb:2:5:4:7 | self in foo [@x] | semmle.label | self in foo [@x] |
| view2.rb:2:5:4:7 | self in foo : View2 [@x] | semmle.label | self in foo : View2 [@x] |
| view2.rb:3:14:3:15 | @x | semmle.label | @x |
| view2.rb:3:14:3:15 | self [@x] | semmle.label | self [@x] |
| view2.rb:6:5:8:7 | self in set [Return] [@x] | semmle.label | self in set [Return] [@x] |
| view2.rb:3:14:3:15 | self : View2 [@x] | semmle.label | self : View2 [@x] |
| view2.rb:6:5:8:7 | self in set [Return] : View2 [@x] | semmle.label | self in set [Return] : View2 [@x] |
| view2.rb:6:13:6:13 | x | semmle.label | x |
| view2.rb:7:9:7:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view2.rb:7:14:7:14 | x | semmle.label | x |
| view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | semmle.label | self in view3.html.erb [@x] |
| view3.html.erb:3:1:4:1 | self in view3.html.erb : View3 [@x] | semmle.label | self in view3.html.erb : View3 [@x] |
| view3.html.erb:3:6:3:8 | call to get | semmle.label | call to get |
| view3.html.erb:3:6:3:8 | self [@x] | semmle.label | self [@x] |
| view3.html.erb:3:6:3:8 | self : View3 [@x] | semmle.label | self : View3 [@x] |
| view3.rb:2:20:2:20 | x | semmle.label | x |
| view3.rb:3:9:3:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| view3.rb:3:14:3:14 | x | semmle.label | x |
| view3.rb:6:5:8:7 | self in get [@x] | semmle.label | self in get [@x] |
| view3.rb:6:5:8:7 | self in get : View3 [@x] | semmle.label | self in get : View3 [@x] |
| view3.rb:7:9:7:10 | @x | semmle.label | @x |
| view3.rb:7:9:7:10 | self [@x] | semmle.label | self [@x] |
| view3.rb:7:9:7:10 | self : View3 [@x] | semmle.label | self : View3 [@x] |
subpaths
| main.rb:4:26:4:26 | x | view1.rb:5:20:5:20 | x | view1.rb:6:9:6:10 | [post] self [@x] | main.rb:4:16:4:27 | call to new [@x] |
| main.rb:16:26:16:26 | x | view3.rb:2:20:2:20 | x | view3.rb:3:9:3:10 | [post] self [@x] | main.rb:16:16:16:27 | call to new [@x] |
| view1.html.erb:6:5:6:13 | call to source | view1.rb:13:13:13:13 | x | view1.rb:13:5:15:7 | self in set [Return] [@x] | view1.html.erb:6:1:6:14 | [post] self [@x] |
| view2.html.erb:3:5:3:13 | call to source | view2.rb:6:13:6:13 | x | view2.rb:6:5:8:7 | self in set [Return] [@x] | view2.html.erb:3:1:3:14 | [post] self [@x] |
| view3.html.erb:3:6:3:8 | self [@x] | view3.rb:6:5:8:7 | self in get [@x] | view3.rb:7:9:7:10 | @x | view3.html.erb:3:6:3:8 | call to get |
| main.rb:4:26:4:26 | x | view1.rb:2:20:2:20 | x | view1.rb:3:9:3:10 | [post] self [@x] | main.rb:4:16:4:27 | call to new : View1 [@x] |
| main.rb:16:26:16:26 | x | view3.rb:2:20:2:20 | x | view3.rb:3:9:3:10 | [post] self [@x] | main.rb:16:16:16:27 | call to new : View3 [@x] |
| view1.html.erb:6:5:6:13 | call to source | view1.rb:10:13:10:13 | x | view1.rb:10:5:12:7 | self in set [Return] : View1 [@x] | view1.html.erb:6:1:6:14 | [post] self : View1 [@x] |
| view2.html.erb:3:5:3:13 | call to source | view2.rb:6:13:6:13 | x | view2.rb:6:5:8:7 | self in set [Return] : View2 [@x] | view2.html.erb:3:1:3:14 | [post] self : View2 [@x] |
| view3.html.erb:3:6:3:8 | self : View3 [@x] | view3.rb:6:5:8:7 | self in get : View3 [@x] | view3.rb:7:9:7:10 | @x | view3.html.erb:3:6:3:8 | call to get |
testFailures
#select
| view1.rb:10:14:10:15 | @x | main.rb:3:13:3:21 | call to source | view1.rb:10:14:10:15 | @x | $@ | main.rb:3:13:3:21 | call to source | call to source |
| view1.rb:10:14:10:15 | @x | view1.html.erb:6:5:6:13 | call to source | view1.rb:10:14:10:15 | @x | $@ | view1.html.erb:6:5:6:13 | call to source | call to source |
| view1.rb:7:14:7:15 | @x | main.rb:3:13:3:21 | call to source | view1.rb:7:14:7:15 | @x | $@ | main.rb:3:13:3:21 | call to source | call to source |
| view1.rb:7:14:7:15 | @x | view1.html.erb:6:5:6:13 | call to source | view1.rb:7:14:7:15 | @x | $@ | view1.html.erb:6:5:6:13 | call to source | call to source |
| view2.rb:3:14:3:15 | @x | view2.html.erb:3:5:3:13 | call to source | view2.rb:3:14:3:15 | @x | $@ | view2.html.erb:3:5:3:13 | call to source | call to source |
| view3.html.erb:3:6:3:8 | call to get | main.rb:15:13:15:21 | call to source | view3.html.erb:3:6:3:8 | call to get | $@ | main.rb:15:13:15:21 | call to source | call to source |

View File

@@ -23,3 +23,6 @@ class App
render(view)
end
end
class ViewComponent::Base
end

View File

@@ -1,6 +1,3 @@
class ViewComponent::Base
end
class View1 < ViewComponent::Base
def initialize(x)
@x = x

View File

@@ -5,254 +5,263 @@ edges
| blocks.rb:18:11:18:11 | x | blocks.rb:24:18:24:18 | x | provenance | |
| blocks.rb:24:3:24:11 | call to source | blocks.rb:17:10:17:10 | x | provenance | |
| blocks.rb:24:18:24:18 | x | blocks.rb:25:8:25:8 | x | provenance | |
| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:11:5:11:6 | fn [captured x] | provenance | |
| captured_variables.rb:11:5:11:6 | fn [captured x] | captured_variables.rb:10:20:10:20 | x | provenance | |
| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:11:5:11:6 | fn : [lambda] [captured x] | provenance | |
| captured_variables.rb:11:5:11:6 | fn : [lambda] [captured x] | captured_variables.rb:10:20:10:20 | x | provenance | |
| captured_variables.rb:13:20:13:29 | call to taint | captured_variables.rb:9:24:9:24 | x | provenance | |
| captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | provenance | |
| captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | captured_variables.rb:17:14:17:14 | x | provenance | |
| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | provenance | |
| captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } : [lambda] [captured x] | provenance | |
| captured_variables.rb:20:1:20:35 | ( ... ) : [lambda] [captured x] | captured_variables.rb:17:14:17:14 | x | provenance | |
| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 : [lambda] [captured x] | captured_variables.rb:20:1:20:35 | ( ... ) : [lambda] [captured x] | provenance | |
| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:15:28:15:28 | x | provenance | |
| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | provenance | |
| captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } [captured x] | provenance | |
| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | captured_variables.rb:24:14:24:14 | x | provenance | heuristic-callback |
| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 : [lambda] [captured x] | provenance | |
| captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } : [lambda] [captured x] | provenance | |
| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 : [lambda] [captured x] | captured_variables.rb:24:14:24:14 | x | provenance | heuristic-callback |
| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | provenance | |
| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | provenance | |
| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:33:29:33:30 | fn [captured x] | provenance | |
| captured_variables.rb:33:29:33:30 | fn [captured x] | captured_variables.rb:31:14:31:14 | x | provenance | heuristic-callback |
| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 : [lambda] [captured x] | provenance | |
| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:33:29:33:30 | fn : [lambda] [captured x] | provenance | |
| captured_variables.rb:33:29:33:30 | fn : [lambda] [captured x] | captured_variables.rb:31:14:31:14 | x | provenance | heuristic-callback |
| captured_variables.rb:35:29:35:38 | call to taint | captured_variables.rb:29:33:29:33 | x | provenance | |
| captured_variables.rb:37:13:37:14 | fn [captured x] | captured_variables.rb:38:5:38:6 | fn [captured x] | provenance | |
| captured_variables.rb:38:5:38:6 | fn [captured x] | captured_variables.rb:42:14:42:14 | x | provenance | |
| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:44:13:44:14 | fn [captured x] | provenance | |
| captured_variables.rb:44:13:44:14 | fn [captured x] | captured_variables.rb:37:13:37:14 | fn [captured x] | provenance | |
| captured_variables.rb:37:13:37:14 | fn : [lambda] [captured x] | captured_variables.rb:38:5:38:6 | fn : [lambda] [captured x] | provenance | |
| captured_variables.rb:38:5:38:6 | fn : [lambda] [captured x] | captured_variables.rb:42:14:42:14 | x | provenance | |
| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:44:13:44:14 | fn : [lambda] [captured x] | provenance | |
| captured_variables.rb:44:13:44:14 | fn : [lambda] [captured x] | captured_variables.rb:37:13:37:14 | fn : [lambda] [captured x] | provenance | |
| captured_variables.rb:46:27:46:36 | call to taint | captured_variables.rb:40:31:40:31 | x | provenance | |
| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:49:16:52:3 | do ... end [captured x] | provenance | |
| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:49:16:52:3 | do ... end : [lambda] [captured x] | provenance | |
| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:54:6:54:6 | x | provenance | |
| captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | captured_variables.rb:54:6:54:6 | x | provenance | |
| captured_variables.rb:49:16:52:3 | do ... end [captured x] | captured_variables.rb:50:10:50:10 | x | provenance | |
| captured_variables.rb:49:16:52:3 | do ... end [captured x] | captured_variables.rb:50:10:50:10 | x | provenance | heuristic-callback |
| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | provenance | |
| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | provenance | heuristic-callback |
| captured_variables.rb:49:16:52:3 | [post] do ... end : [lambda] [captured x] | captured_variables.rb:54:6:54:6 | x | provenance | |
| captured_variables.rb:49:16:52:3 | do ... end : [lambda] [captured x] | captured_variables.rb:50:10:50:10 | x | provenance | |
| captured_variables.rb:49:16:52:3 | do ... end : [lambda] [captured x] | captured_variables.rb:50:10:50:10 | x | provenance | heuristic-callback |
| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end : [lambda] [captured x] | provenance | |
| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end : [lambda] [captured x] | provenance | heuristic-callback |
| captured_variables.rb:57:19:57:19 | x | captured_variables.rb:58:18:58:18 | x | provenance | |
| captured_variables.rb:58:9:58:14 | [post] self [@field] | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | provenance | |
| captured_variables.rb:58:9:58:14 | [post] self [@field] | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | provenance | |
| captured_variables.rb:58:18:58:18 | x | captured_variables.rb:58:9:58:14 | [post] self [@field] | provenance | |
| captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:16:61:21 | self [@field] | provenance | |
| captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:16:61:21 | self : Foo [@field] | provenance | |
| captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:16:61:21 | self : Foo [@field] | provenance | |
| captured_variables.rb:61:16:61:21 | @field | captured_variables.rb:61:9:61:21 | return | provenance | |
| captured_variables.rb:61:16:61:21 | self [@field] | captured_variables.rb:61:16:61:21 | @field | provenance | |
| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | provenance | |
| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:72:6:72:8 | foo [@field] | provenance | |
| captured_variables.rb:61:16:61:21 | @field | captured_variables.rb:61:9:61:21 | return | provenance | |
| captured_variables.rb:61:16:61:21 | self : Foo [@field] | captured_variables.rb:61:16:61:21 | @field | provenance | |
| captured_variables.rb:61:16:61:21 | self : Foo [@field] | captured_variables.rb:61:16:61:21 | @field | provenance | |
| captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] | captured_variables.rb:67:16:70:3 | do ... end : [lambda] [captured foo, @field] | provenance | |
| captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] | captured_variables.rb:72:6:72:8 | foo : Foo [@field] | provenance | |
| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:66:1:66:3 | [post] foo [@field] | provenance | |
| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] | provenance | |
| captured_variables.rb:66:15:66:22 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | captured_variables.rb:72:6:72:8 | foo [@field] | provenance | |
| captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | provenance | |
| captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | provenance | heuristic-callback |
| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:67:16:70:3 | [post] do ... end : [lambda] [captured foo, @field] | captured_variables.rb:72:6:72:8 | foo [@field] | provenance | |
| captured_variables.rb:67:16:70:3 | do ... end : [lambda] [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | provenance | |
| captured_variables.rb:67:16:70:3 | do ... end : [lambda] [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | provenance | heuristic-callback |
| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:68:10:68:22 | call to get_field | provenance | |
| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:69:5:69:7 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | provenance | |
| captured_variables.rb:69:5:69:7 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | provenance | heuristic-callback |
| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end : [lambda] [captured foo, @field] | provenance | |
| captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end : [lambda] [captured foo, @field] | provenance | heuristic-callback |
| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:69:5:69:7 | [post] foo [@field] | provenance | |
| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] | provenance | |
| captured_variables.rb:69:19:69:26 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | captured_variables.rb:72:6:72:18 | call to get_field | provenance | |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:72:6:72:18 | call to get_field | provenance | |
| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | captured_variables.rb:83:6:83:8 | foo [@field] | provenance | |
| captured_variables.rb:79:9:79:11 | [post] foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | provenance | |
| captured_variables.rb:79:9:79:11 | [post] foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | provenance | heuristic-callback |
| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:78:20:80:7 | [post] do ... end : [lambda] [captured foo, @field] | captured_variables.rb:83:6:83:8 | foo [@field] | provenance | |
| captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end : [lambda] [captured foo, @field] | provenance | |
| captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end : [lambda] [captured foo, @field] | provenance | heuristic-callback |
| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:79:9:79:11 | [post] foo [@field] | provenance | |
| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] | provenance | |
| captured_variables.rb:79:23:79:30 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:83:6:83:18 | call to get_field | provenance | |
| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:90:1:90:2 | fn [captured y] | provenance | |
| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:90:1:90:2 | fn : [lambda] [captured y] | provenance | |
| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:91:6:91:6 | y | provenance | |
| captured_variables.rb:88:9:88:16 | call to taint | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | provenance | |
| captured_variables.rb:90:1:90:2 | [post] fn [captured y] | captured_variables.rb:91:6:91:6 | y | provenance | |
| captured_variables.rb:90:1:90:2 | fn [captured y] | captured_variables.rb:87:10:87:10 | y | provenance | |
| captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | provenance | |
| captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | captured_variables.rb:95:14:95:14 | x | provenance | |
| captured_variables.rb:88:9:88:16 | call to taint | captured_variables.rb:90:1:90:2 | [post] fn : [lambda] [captured y] | provenance | |
| captured_variables.rb:90:1:90:2 | [post] fn : [lambda] [captured y] | captured_variables.rb:91:6:91:6 | y | provenance | |
| captured_variables.rb:90:1:90:2 | fn : [lambda] [captured y] | captured_variables.rb:87:10:87:10 | y | provenance | |
| captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } : [lambda] [captured x] | provenance | |
| captured_variables.rb:98:1:98:21 | call to capture_arg : [lambda] [captured x] | captured_variables.rb:95:14:95:14 | x | provenance | |
| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | provenance | |
| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | provenance | |
| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:98:1:98:21 | call to capture_arg : [lambda] [captured x] | provenance | |
| captured_variables.rb:100:21:100:21 | x | captured_variables.rb:101:11:101:11 | x | provenance | |
| captured_variables.rb:101:11:101:11 | x | captured_variables.rb:104:31:104:31 | x | provenance | |
| captured_variables.rb:104:17:104:24 | call to taint | captured_variables.rb:100:21:100:21 | x | provenance | |
| captured_variables.rb:104:31:104:31 | x | captured_variables.rb:105:10:105:10 | x | provenance | |
| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:117:5:117:10 | middle [captured x] | provenance | |
| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:117:5:117:10 | middle : [lambda] [captured x] | provenance | |
| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:118:10:118:10 | x | provenance | |
| captured_variables.rb:113:17:113:25 | call to taint | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | provenance | |
| captured_variables.rb:115:9:115:13 | [post] inner [captured x] | captured_variables.rb:117:5:117:10 | [post] middle [captured x] | provenance | |
| captured_variables.rb:115:9:115:13 | inner [captured x] | captured_variables.rb:112:18:112:18 | x | provenance | |
| captured_variables.rb:117:5:117:10 | [post] middle [captured x] | captured_variables.rb:118:10:118:10 | x | provenance | |
| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | provenance | |
| captured_variables.rb:147:5:147:6 | [post] self [@x] | captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | provenance | |
| captured_variables.rb:113:17:113:25 | call to taint | captured_variables.rb:115:9:115:13 | [post] inner : [lambda] [captured x] | provenance | |
| captured_variables.rb:115:9:115:13 | [post] inner : [lambda] [captured x] | captured_variables.rb:117:5:117:10 | [post] middle : [lambda] [captured x] | provenance | |
| captured_variables.rb:115:9:115:13 | inner : [lambda] [captured x] | captured_variables.rb:112:18:112:18 | x | provenance | |
| captured_variables.rb:117:5:117:10 | [post] middle : [lambda] [captured x] | captured_variables.rb:118:10:118:10 | x | provenance | |
| captured_variables.rb:117:5:117:10 | middle : [lambda] [captured x] | captured_variables.rb:115:9:115:13 | inner : [lambda] [captured x] | provenance | |
| captured_variables.rb:147:5:147:6 | [post] self [@x] | captured_variables.rb:153:14:155:7 | do ... end : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:147:10:147:18 | call to taint | captured_variables.rb:147:5:147:6 | [post] self [@x] | provenance | |
| captured_variables.rb:149:5:151:7 | &block [captured self, @x] | captured_variables.rb:154:14:154:15 | self [@x] | provenance | |
| captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | captured_variables.rb:149:5:151:7 | &block [captured self, @x] | provenance | |
| captured_variables.rb:149:5:151:7 | &block : [lambda] [captured self, @x] | captured_variables.rb:154:14:154:15 | self [@x] | provenance | |
| captured_variables.rb:153:14:155:7 | do ... end : [lambda] [captured self, @x] | captured_variables.rb:149:5:151:7 | &block : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:154:14:154:15 | self [@x] | captured_variables.rb:154:14:154:15 | @x | provenance | |
| captured_variables.rb:160:9:160:10 | [post] self [@x] | captured_variables.rb:174:1:174:24 | call to new [@x] | provenance | |
| captured_variables.rb:160:9:160:10 | [post] self [@x] | captured_variables.rb:174:1:174:24 | call to new : CaptureInstanceSelf1 [@x] | provenance | |
| captured_variables.rb:160:14:160:22 | call to taint | captured_variables.rb:160:9:160:10 | [post] self [@x] | provenance | |
| captured_variables.rb:163:5:165:7 | &block [captured self, @x] | captured_variables.rb:169:18:169:19 | self [@x] | provenance | |
| captured_variables.rb:167:5:171:7 | self in baz [@x] | captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | provenance | |
| captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | captured_variables.rb:163:5:165:7 | &block [captured self, @x] | provenance | |
| captured_variables.rb:169:18:169:19 | self [@x] | captured_variables.rb:169:18:169:19 | @x | provenance | |
| captured_variables.rb:174:1:174:24 | call to new [@x] | captured_variables.rb:167:5:171:7 | self in baz [@x] | provenance | |
| captured_variables.rb:177:5:179:7 | self in foo [Return] [@x] | captured_variables.rb:193:1:193:1 | [post] c [@x] | provenance | |
| captured_variables.rb:178:9:178:10 | [post] self [@x] | captured_variables.rb:177:5:179:7 | self in foo [Return] [@x] | provenance | |
| captured_variables.rb:163:5:165:7 | &block : [lambda] [captured self, @x] | captured_variables.rb:169:18:169:19 | self : CaptureInstanceSelf1 [@x] | provenance | |
| captured_variables.rb:167:5:171:7 | self in baz : CaptureInstanceSelf1 [@x] | captured_variables.rb:168:18:170:11 | do ... end : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:168:18:170:11 | do ... end : [lambda] [captured self, @x] | captured_variables.rb:163:5:165:7 | &block : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:169:18:169:19 | self : CaptureInstanceSelf1 [@x] | captured_variables.rb:169:18:169:19 | @x | provenance | |
| captured_variables.rb:174:1:174:24 | call to new : CaptureInstanceSelf1 [@x] | captured_variables.rb:167:5:171:7 | self in baz : CaptureInstanceSelf1 [@x] | provenance | |
| captured_variables.rb:177:5:179:7 | self in foo [Return] : CaptureInstanceSelf2 [@x] | captured_variables.rb:193:1:193:1 | [post] c : CaptureInstanceSelf2 [@x] | provenance | |
| captured_variables.rb:178:9:178:10 | [post] self [@x] | captured_variables.rb:177:5:179:7 | self in foo [Return] : CaptureInstanceSelf2 [@x] | provenance | |
| captured_variables.rb:178:14:178:22 | call to taint | captured_variables.rb:178:9:178:10 | [post] self [@x] | provenance | |
| captured_variables.rb:181:5:183:7 | &block [captured self, @x] | captured_variables.rb:187:18:187:19 | self [@x] | provenance | |
| captured_variables.rb:185:5:189:7 | self in baz [@x] | captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | provenance | |
| captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | captured_variables.rb:181:5:183:7 | &block [captured self, @x] | provenance | |
| captured_variables.rb:187:18:187:19 | self [@x] | captured_variables.rb:187:18:187:19 | @x | provenance | |
| captured_variables.rb:193:1:193:1 | [post] c [@x] | captured_variables.rb:194:1:194:1 | c [@x] | provenance | |
| captured_variables.rb:194:1:194:1 | c [@x] | captured_variables.rb:185:5:189:7 | self in baz [@x] | provenance | |
| captured_variables.rb:181:5:183:7 | &block : [lambda] [captured self, @x] | captured_variables.rb:187:18:187:19 | self : CaptureInstanceSelf2 [@x] | provenance | |
| captured_variables.rb:185:5:189:7 | self in baz : CaptureInstanceSelf2 [@x] | captured_variables.rb:186:18:188:11 | do ... end : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:186:18:188:11 | do ... end : [lambda] [captured self, @x] | captured_variables.rb:181:5:183:7 | &block : [lambda] [captured self, @x] | provenance | |
| captured_variables.rb:187:18:187:19 | self : CaptureInstanceSelf2 [@x] | captured_variables.rb:187:18:187:19 | @x | provenance | |
| captured_variables.rb:193:1:193:1 | [post] c : CaptureInstanceSelf2 [@x] | captured_variables.rb:194:1:194:1 | c : CaptureInstanceSelf2 [@x] | provenance | |
| captured_variables.rb:194:1:194:1 | c : CaptureInstanceSelf2 [@x] | captured_variables.rb:185:5:189:7 | self in baz : CaptureInstanceSelf2 [@x] | provenance | |
| captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | provenance | |
| captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | provenance | |
| captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:226:5:226:7 | fn1 [captured x] | provenance | |
| captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | captured_variables.rb:227:10:227:10 | y | provenance | |
| captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:223:13:223:13 | x | provenance | |
| captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | provenance | |
| captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:226:5:226:7 | fn1 : [lambda] [captured x] | provenance | |
| captured_variables.rb:226:5:226:7 | [post] fn1 : [lambda] [captured y] | captured_variables.rb:227:10:227:10 | y | provenance | |
| captured_variables.rb:226:5:226:7 | fn1 : [lambda] [captured x] | captured_variables.rb:223:13:223:13 | x | provenance | |
| captured_variables.rb:226:5:226:7 | fn1 : [lambda] [captured x] | captured_variables.rb:226:5:226:7 | [post] fn1 : [lambda] [captured y] | provenance | |
| instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | provenance | |
| instance_variables.rb:11:9:11:14 | [post] self [@field] | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | provenance | |
| instance_variables.rb:11:9:11:14 | [post] self [@field] | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | provenance | |
| instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | provenance | |
| instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:16:14:21 | self [@field] | provenance | |
| instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:16:14:21 | self : Foo [@field] | provenance | |
| instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:16:14:21 | self : Foo [@field] | provenance | |
| instance_variables.rb:14:16:14:21 | @field | instance_variables.rb:14:9:14:21 | return | provenance | |
| instance_variables.rb:14:16:14:21 | self [@field] | instance_variables.rb:14:16:14:21 | @field | provenance | |
| instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | provenance | |
| instance_variables.rb:14:16:14:21 | @field | instance_variables.rb:14:9:14:21 | return | provenance | |
| instance_variables.rb:14:16:14:21 | self : Foo [@field] | instance_variables.rb:14:16:14:21 | @field | provenance | |
| instance_variables.rb:14:16:14:21 | self : Foo [@field] | instance_variables.rb:14:16:14:21 | @field | provenance | |
| instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | provenance | |
| instance_variables.rb:17:9:17:14 | [post] self [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | provenance | |
| instance_variables.rb:19:5:19:8 | [post] self [@foo] | instance_variables.rb:20:10:20:13 | self [@foo] | provenance | |
| instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:19:5:19:8 | [post] self [@foo] | provenance | |
| instance_variables.rb:20:10:20:13 | self [@foo] | instance_variables.rb:20:10:20:13 | @foo | provenance | |
| instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:18:23:22 | field | provenance | |
| instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:22:5:25:7 | self in initialize [Return] [@field] | provenance | |
| instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:22:5:25:7 | self in initialize [Return] : Foo [@field] | provenance | |
| instance_variables.rb:23:18:23:22 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | provenance | |
| instance_variables.rb:24:9:24:17 | call to taint | instance_variables.rb:28:9:28:25 | call to initialize | provenance | |
| instance_variables.rb:27:25:27:29 | field | instance_variables.rb:28:20:28:24 | field | provenance | |
| instance_variables.rb:28:9:28:25 | [post] self [@field] | instance_variables.rb:27:5:29:7 | self in call_initialize [Return] [@field] | provenance | |
| instance_variables.rb:28:9:28:25 | [post] self : Foo [@field] | instance_variables.rb:27:5:29:7 | self in call_initialize [Return] : Foo [@field] | provenance | |
| instance_variables.rb:28:9:28:25 | call to initialize | instance_variables.rb:119:6:119:37 | call to call_initialize | provenance | |
| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | provenance | |
| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:28:9:28:25 | [post] self [@field] | provenance | |
| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:28:9:28:25 | [post] self : Foo [@field] | provenance | |
| instance_variables.rb:31:18:31:18 | x | instance_variables.rb:33:13:33:13 | x | provenance | |
| instance_variables.rb:32:13:32:21 | call to taint | instance_variables.rb:48:20:48:20 | x | provenance | |
| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | provenance | |
| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:33:9:33:14 | call to new [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:36:10:36:33 | call to get_field | provenance | |
| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:33:9:33:14 | call to new : Foo [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | instance_variables.rb:36:10:36:33 | call to get_field | provenance | |
| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:22:20:22:24 | field | provenance | |
| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:23 | call to new [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:39:6:39:33 | call to get_field | provenance | |
| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | instance_variables.rb:39:6:39:33 | call to get_field | provenance | |
| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:31:18:31:18 | x | provenance | |
| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:23 | call to bar [@field] | provenance | |
| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | provenance | |
| instance_variables.rb:43:9:43:17 | call to taint | instance_variables.rb:121:7:121:24 | call to new | provenance | |
| instance_variables.rb:48:20:48:20 | x | instance_variables.rb:49:14:49:14 | x | provenance | |
| instance_variables.rb:54:1:54:3 | [post] foo [@field] | instance_variables.rb:55:6:55:8 | foo [@field] | provenance | |
| instance_variables.rb:54:1:54:3 | [post] foo : Foo [@field] | instance_variables.rb:55:6:55:8 | foo : Foo [@field] | provenance | |
| instance_variables.rb:54:15:54:23 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:54:1:54:3 | [post] foo [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:55:6:55:18 | call to get_field | provenance | |
| instance_variables.rb:58:1:58:3 | [post] bar [@field] | instance_variables.rb:59:6:59:8 | bar [@field] | provenance | |
| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:54:1:54:3 | [post] foo : Foo [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | instance_variables.rb:55:6:55:18 | call to get_field | provenance | |
| instance_variables.rb:58:1:58:3 | [post] bar : Foo [@field] | instance_variables.rb:59:6:59:8 | bar : Foo [@field] | provenance | |
| instance_variables.rb:58:15:58:22 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:58:1:58:3 | [post] bar [@field] | provenance | |
| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | provenance | |
| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:59:6:59:18 | call to inc_field | provenance | |
| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:58:1:58:3 | [post] bar : Foo [@field] | provenance | |
| instance_variables.rb:59:6:59:8 | bar : Foo [@field] | instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | provenance | |
| instance_variables.rb:59:6:59:8 | bar : Foo [@field] | instance_variables.rb:59:6:59:18 | call to inc_field | provenance | |
| instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | instance_variables.rb:63:6:63:9 | foo1 [@field] | provenance | |
| instance_variables.rb:62:14:62:22 | call to taint | instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | provenance | |
| instance_variables.rb:63:6:63:9 | foo1 [@field] | instance_variables.rb:63:6:63:15 | call to field | provenance | |
| instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | instance_variables.rb:67:6:67:9 | foo2 [@field] | provenance | |
| instance_variables.rb:66:14:66:22 | call to taint | instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | provenance | |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:67:6:67:19 | call to get_field | provenance | |
| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:71:6:71:9 | foo3 [@field] | provenance | |
| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:83:6:83:9 | foo3 [@field] | provenance | |
| instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] | instance_variables.rb:71:6:71:9 | foo3 : Foo [@field] | provenance | |
| instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] | instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | provenance | |
| instance_variables.rb:70:16:70:24 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | provenance | |
| instance_variables.rb:71:6:71:9 | foo3 [@field] | instance_variables.rb:71:6:71:15 | call to field | provenance | |
| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:79:6:79:9 | foo5 [@field] | provenance | |
| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:84:6:84:9 | foo5 [@field] | provenance | |
| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] | provenance | |
| instance_variables.rb:71:6:71:9 | foo3 : Foo [@field] | instance_variables.rb:71:6:71:15 | call to field | provenance | |
| instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] | instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | provenance | |
| instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] | instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | provenance | |
| instance_variables.rb:78:18:78:26 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:79:6:79:19 | call to get_field | provenance | |
| instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | instance_variables.rb:85:6:85:9 | foo6 [@field] | provenance | |
| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | instance_variables.rb:79:6:79:19 | call to get_field | provenance | |
| instance_variables.rb:82:15:82:18 | [post] foo6 : Foo [@field] | instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | provenance | |
| instance_variables.rb:82:32:82:40 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:83:6:83:19 | call to get_field | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:84:6:84:19 | call to get_field | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:85:6:85:19 | call to get_field | provenance | |
| instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | instance_variables.rb:90:6:90:9 | foo7 [@field] | provenance | |
| instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | instance_variables.rb:91:6:91:9 | foo8 [@field] | provenance | |
| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:82:15:82:18 | [post] foo6 : Foo [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | instance_variables.rb:83:6:83:19 | call to get_field | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | instance_variables.rb:84:6:84:19 | call to get_field | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | instance_variables.rb:85:6:85:19 | call to get_field | provenance | |
| instance_variables.rb:89:15:89:18 | [post] foo7 : Foo [@field] | instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | provenance | |
| instance_variables.rb:89:25:89:28 | [post] foo8 : Foo [@field] | instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:90:6:90:19 | call to get_field | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:91:6:91:19 | call to get_field | provenance | |
| instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | instance_variables.rb:96:6:96:9 | foo9 [@field] | provenance | |
| instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | instance_variables.rb:97:6:97:10 | foo10 [@field] | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:15:89:18 | [post] foo7 : Foo [@field] | provenance | |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:25:89:28 | [post] foo8 : Foo [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | instance_variables.rb:90:6:90:19 | call to get_field | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | instance_variables.rb:91:6:91:19 | call to get_field | provenance | |
| instance_variables.rb:95:22:95:25 | [post] foo9 : Foo [@field] | instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | provenance | |
| instance_variables.rb:95:32:95:36 | [post] foo10 : Foo [@field] | instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:96:6:96:19 | call to get_field | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:97:6:97:20 | call to get_field | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] [@field] | instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] [@field] | instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] [@field] | instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | provenance | |
| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:99:18:99:18 | x [Return] [@field] | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:22:95:25 | [post] foo9 : Foo [@field] | provenance | |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:32:95:36 | [post] foo10 : Foo [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | instance_variables.rb:96:6:96:19 | call to get_field | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | instance_variables.rb:97:6:97:20 | call to get_field | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] : Foo [@field] | instance_variables.rb:104:14:104:18 | [post] foo11 : Foo [@field] | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] : Foo [@field] | instance_variables.rb:108:15:108:19 | [post] foo12 : Foo [@field] | provenance | |
| instance_variables.rb:99:18:99:18 | x [Return] : Foo [@field] | instance_variables.rb:113:22:113:26 | [post] foo13 : Foo [@field] | provenance | |
| instance_variables.rb:100:5:100:5 | [post] x : Foo [@field] | instance_variables.rb:99:18:99:18 | x [Return] : Foo [@field] | provenance | |
| instance_variables.rb:100:17:100:25 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | |
| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | |
| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:100:5:100:5 | [post] x [@field] | provenance | |
| instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | instance_variables.rb:105:6:105:10 | foo11 [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:105:6:105:20 | call to get_field | provenance | |
| instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | instance_variables.rb:109:6:109:10 | foo12 [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:109:6:109:20 | call to get_field | provenance | |
| instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | instance_variables.rb:114:6:114:10 | foo13 [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:114:6:114:20 | call to get_field | provenance | |
| instance_variables.rb:116:1:116:5 | foo15 [@field] | instance_variables.rb:117:6:117:10 | foo15 [@field] | provenance | |
| instance_variables.rb:116:9:116:26 | call to new [@field] | instance_variables.rb:116:1:116:5 | foo15 [@field] | provenance | |
| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:100:5:100:5 | [post] x : Foo [@field] | provenance | |
| instance_variables.rb:104:14:104:18 | [post] foo11 : Foo [@field] | instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | instance_variables.rb:105:6:105:20 | call to get_field | provenance | |
| instance_variables.rb:108:15:108:19 | [post] foo12 : Foo [@field] | instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | instance_variables.rb:109:6:109:20 | call to get_field | provenance | |
| instance_variables.rb:113:22:113:26 | [post] foo13 : Foo [@field] | instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | instance_variables.rb:114:6:114:20 | call to get_field | provenance | |
| instance_variables.rb:116:1:116:5 | foo15 : Foo [@field] | instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | provenance | |
| instance_variables.rb:116:9:116:26 | call to new : Foo [@field] | instance_variables.rb:116:1:116:5 | foo15 : Foo [@field] | provenance | |
| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:22:20:22:24 | field | provenance | |
| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:116:9:116:26 | call to new [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:117:6:117:20 | call to get_field | provenance | |
| instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | instance_variables.rb:120:6:120:10 | foo16 [@field] | provenance | |
| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:116:9:116:26 | call to new : Foo [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | instance_variables.rb:117:6:117:20 | call to get_field | provenance | |
| instance_variables.rb:119:6:119:10 | [post] foo16 : Foo [@field] | instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | provenance | |
| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:27:25:27:29 | field | provenance | |
| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:120:6:120:20 | call to get_field | provenance | |
| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:119:6:119:10 | [post] foo16 : Foo [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | provenance | |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | instance_variables.rb:120:6:120:20 | call to get_field | provenance | |
| instance_variables.rb:121:1:121:3 | bar | instance_variables.rb:122:6:122:8 | bar | provenance | |
| instance_variables.rb:121:7:121:24 | call to new | instance_variables.rb:121:1:121:3 | bar | provenance | |
nodes
@@ -265,68 +274,73 @@ nodes
| blocks.rb:25:8:25:8 | x | semmle.label | x |
| captured_variables.rb:9:24:9:24 | x | semmle.label | x |
| captured_variables.rb:10:20:10:20 | x | semmle.label | x |
| captured_variables.rb:11:5:11:6 | fn [captured x] | semmle.label | fn [captured x] |
| captured_variables.rb:11:5:11:6 | fn : [lambda] [captured x] | semmle.label | fn : [lambda] [captured x] |
| captured_variables.rb:13:20:13:29 | call to taint | semmle.label | call to taint |
| captured_variables.rb:15:28:15:28 | x | semmle.label | x |
| captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] |
| captured_variables.rb:16:5:18:5 | -> { ... } : [lambda] [captured x] | semmle.label | -> { ... } : [lambda] [captured x] |
| captured_variables.rb:17:14:17:14 | x | semmle.label | x |
| captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | semmle.label | ( ... ) [captured x] |
| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | semmle.label | call to capture_escape_return1 [captured x] |
| captured_variables.rb:20:1:20:35 | ( ... ) : [lambda] [captured x] | semmle.label | ( ... ) : [lambda] [captured x] |
| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 : [lambda] [captured x] | semmle.label | call to capture_escape_return1 : [lambda] [captured x] |
| captured_variables.rb:20:25:20:34 | call to taint | semmle.label | call to taint |
| captured_variables.rb:22:28:22:28 | x | semmle.label | x |
| captured_variables.rb:23:5:25:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] |
| captured_variables.rb:23:5:25:5 | -> { ... } : [lambda] [captured x] | semmle.label | -> { ... } : [lambda] [captured x] |
| captured_variables.rb:24:14:24:14 | x | semmle.label | x |
| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | semmle.label | call to capture_escape_return2 [captured x] |
| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 : [lambda] [captured x] | semmle.label | call to capture_escape_return2 : [lambda] [captured x] |
| captured_variables.rb:27:48:27:57 | call to taint | semmle.label | call to taint |
| captured_variables.rb:29:33:29:33 | x | semmle.label | x |
| captured_variables.rb:31:14:31:14 | x | semmle.label | x |
| captured_variables.rb:33:29:33:30 | fn [captured x] | semmle.label | fn [captured x] |
| captured_variables.rb:33:29:33:30 | fn : [lambda] [captured x] | semmle.label | fn : [lambda] [captured x] |
| captured_variables.rb:35:29:35:38 | call to taint | semmle.label | call to taint |
| captured_variables.rb:37:13:37:14 | fn [captured x] | semmle.label | fn [captured x] |
| captured_variables.rb:38:5:38:6 | fn [captured x] | semmle.label | fn [captured x] |
| captured_variables.rb:37:13:37:14 | fn : [lambda] [captured x] | semmle.label | fn : [lambda] [captured x] |
| captured_variables.rb:38:5:38:6 | fn : [lambda] [captured x] | semmle.label | fn : [lambda] [captured x] |
| captured_variables.rb:40:31:40:31 | x | semmle.label | x |
| captured_variables.rb:42:14:42:14 | x | semmle.label | x |
| captured_variables.rb:44:13:44:14 | fn [captured x] | semmle.label | fn [captured x] |
| captured_variables.rb:44:13:44:14 | fn : [lambda] [captured x] | semmle.label | fn : [lambda] [captured x] |
| captured_variables.rb:46:27:46:36 | call to taint | semmle.label | call to taint |
| captured_variables.rb:48:5:48:12 | call to taint | semmle.label | call to taint |
| captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | semmle.label | [post] do ... end [captured x] |
| captured_variables.rb:49:16:52:3 | do ... end [captured x] | semmle.label | do ... end [captured x] |
| captured_variables.rb:49:16:52:3 | [post] do ... end : [lambda] [captured x] | semmle.label | [post] do ... end : [lambda] [captured x] |
| captured_variables.rb:49:16:52:3 | do ... end : [lambda] [captured x] | semmle.label | do ... end : [lambda] [captured x] |
| captured_variables.rb:50:10:50:10 | x | semmle.label | x |
| captured_variables.rb:51:9:51:16 | call to taint | semmle.label | call to taint |
| captured_variables.rb:54:6:54:6 | x | semmle.label | x |
| captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | semmle.label | self in set_field [Return] [@field] |
| captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | semmle.label | self in set_field [Return] : Foo [@field] |
| captured_variables.rb:57:19:57:19 | x | semmle.label | x |
| captured_variables.rb:58:9:58:14 | [post] self [@field] | semmle.label | [post] self [@field] |
| captured_variables.rb:58:18:58:18 | x | semmle.label | x |
| captured_variables.rb:60:5:62:7 | self in get_field [@field] | semmle.label | self in get_field [@field] |
| captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | semmle.label | self in get_field : Foo [@field] |
| captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | semmle.label | self in get_field : Foo [@field] |
| captured_variables.rb:61:9:61:21 | return | semmle.label | return |
| captured_variables.rb:61:9:61:21 | return | semmle.label | return |
| captured_variables.rb:61:16:61:21 | @field | semmle.label | @field |
| captured_variables.rb:61:16:61:21 | self [@field] | semmle.label | self [@field] |
| captured_variables.rb:66:1:66:3 | [post] foo [@field] | semmle.label | [post] foo [@field] |
| captured_variables.rb:61:16:61:21 | @field | semmle.label | @field |
| captured_variables.rb:61:16:61:21 | self : Foo [@field] | semmle.label | self : Foo [@field] |
| captured_variables.rb:61:16:61:21 | self : Foo [@field] | semmle.label | self : Foo [@field] |
| captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] | semmle.label | [post] foo : Foo [@field] |
| captured_variables.rb:66:15:66:22 | call to taint | semmle.label | call to taint |
| captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | semmle.label | [post] do ... end [captured foo, @field] |
| captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | semmle.label | do ... end [captured foo, @field] |
| captured_variables.rb:67:16:70:3 | [post] do ... end : [lambda] [captured foo, @field] | semmle.label | [post] do ... end : [lambda] [captured foo, @field] |
| captured_variables.rb:67:16:70:3 | do ... end : [lambda] [captured foo, @field] | semmle.label | do ... end : [lambda] [captured foo, @field] |
| captured_variables.rb:68:10:68:12 | foo [@field] | semmle.label | foo [@field] |
| captured_variables.rb:68:10:68:22 | call to get_field | semmle.label | call to get_field |
| captured_variables.rb:69:5:69:7 | [post] foo [@field] | semmle.label | [post] foo [@field] |
| captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] | semmle.label | [post] foo : Foo [@field] |
| captured_variables.rb:69:19:69:26 | call to taint | semmle.label | call to taint |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | semmle.label | foo : Foo [@field] |
| captured_variables.rb:72:6:72:8 | foo [@field] | semmle.label | foo [@field] |
| captured_variables.rb:72:6:72:18 | call to get_field | semmle.label | call to get_field |
| captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | semmle.label | [post] do ... end [captured foo, @field] |
| captured_variables.rb:79:9:79:11 | [post] foo [@field] | semmle.label | [post] foo [@field] |
| captured_variables.rb:78:20:80:7 | [post] do ... end : [lambda] [captured foo, @field] | semmle.label | [post] do ... end : [lambda] [captured foo, @field] |
| captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] | semmle.label | [post] foo : Foo [@field] |
| captured_variables.rb:79:23:79:30 | call to taint | semmle.label | call to taint |
| captured_variables.rb:83:6:83:8 | foo [@field] | semmle.label | foo [@field] |
| captured_variables.rb:83:6:83:18 | call to get_field | semmle.label | call to get_field |
| captured_variables.rb:85:5:85:12 | call to taint | semmle.label | call to taint |
| captured_variables.rb:87:10:87:10 | y | semmle.label | y |
| captured_variables.rb:88:9:88:16 | call to taint | semmle.label | call to taint |
| captured_variables.rb:90:1:90:2 | [post] fn [captured y] | semmle.label | [post] fn [captured y] |
| captured_variables.rb:90:1:90:2 | fn [captured y] | semmle.label | fn [captured y] |
| captured_variables.rb:90:1:90:2 | [post] fn : [lambda] [captured y] | semmle.label | [post] fn : [lambda] [captured y] |
| captured_variables.rb:90:1:90:2 | fn : [lambda] [captured y] | semmle.label | fn : [lambda] [captured y] |
| captured_variables.rb:91:6:91:6 | y | semmle.label | y |
| captured_variables.rb:93:17:93:17 | x | semmle.label | x |
| captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] |
| captured_variables.rb:94:5:96:5 | -> { ... } : [lambda] [captured x] | semmle.label | -> { ... } : [lambda] [captured x] |
| captured_variables.rb:95:14:95:14 | x | semmle.label | x |
| captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | semmle.label | call to capture_arg [captured x] |
| captured_variables.rb:98:1:98:21 | call to capture_arg : [lambda] [captured x] | semmle.label | call to capture_arg : [lambda] [captured x] |
| captured_variables.rb:98:13:98:20 | call to taint | semmle.label | call to taint |
| captured_variables.rb:100:21:100:21 | x | semmle.label | x |
| captured_variables.rb:101:11:101:11 | x | semmle.label | x |
@@ -336,88 +350,92 @@ nodes
| captured_variables.rb:109:9:109:17 | call to taint | semmle.label | call to taint |
| captured_variables.rb:112:18:112:18 | x | semmle.label | x |
| captured_variables.rb:113:17:113:25 | call to taint | semmle.label | call to taint |
| captured_variables.rb:115:9:115:13 | [post] inner [captured x] | semmle.label | [post] inner [captured x] |
| captured_variables.rb:115:9:115:13 | inner [captured x] | semmle.label | inner [captured x] |
| captured_variables.rb:117:5:117:10 | [post] middle [captured x] | semmle.label | [post] middle [captured x] |
| captured_variables.rb:117:5:117:10 | middle [captured x] | semmle.label | middle [captured x] |
| captured_variables.rb:115:9:115:13 | [post] inner : [lambda] [captured x] | semmle.label | [post] inner : [lambda] [captured x] |
| captured_variables.rb:115:9:115:13 | inner : [lambda] [captured x] | semmle.label | inner : [lambda] [captured x] |
| captured_variables.rb:117:5:117:10 | [post] middle : [lambda] [captured x] | semmle.label | [post] middle : [lambda] [captured x] |
| captured_variables.rb:117:5:117:10 | middle : [lambda] [captured x] | semmle.label | middle : [lambda] [captured x] |
| captured_variables.rb:118:10:118:10 | x | semmle.label | x |
| captured_variables.rb:147:5:147:6 | [post] self [@x] | semmle.label | [post] self [@x] |
| captured_variables.rb:147:10:147:18 | call to taint | semmle.label | call to taint |
| captured_variables.rb:149:5:151:7 | &block [captured self, @x] | semmle.label | &block [captured self, @x] |
| captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | semmle.label | do ... end [captured self, @x] |
| captured_variables.rb:149:5:151:7 | &block : [lambda] [captured self, @x] | semmle.label | &block : [lambda] [captured self, @x] |
| captured_variables.rb:153:14:155:7 | do ... end : [lambda] [captured self, @x] | semmle.label | do ... end : [lambda] [captured self, @x] |
| captured_variables.rb:154:14:154:15 | @x | semmle.label | @x |
| captured_variables.rb:154:14:154:15 | self [@x] | semmle.label | self [@x] |
| captured_variables.rb:160:9:160:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| captured_variables.rb:160:14:160:22 | call to taint | semmle.label | call to taint |
| captured_variables.rb:163:5:165:7 | &block [captured self, @x] | semmle.label | &block [captured self, @x] |
| captured_variables.rb:167:5:171:7 | self in baz [@x] | semmle.label | self in baz [@x] |
| captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | semmle.label | do ... end [captured self, @x] |
| captured_variables.rb:163:5:165:7 | &block : [lambda] [captured self, @x] | semmle.label | &block : [lambda] [captured self, @x] |
| captured_variables.rb:167:5:171:7 | self in baz : CaptureInstanceSelf1 [@x] | semmle.label | self in baz : CaptureInstanceSelf1 [@x] |
| captured_variables.rb:168:18:170:11 | do ... end : [lambda] [captured self, @x] | semmle.label | do ... end : [lambda] [captured self, @x] |
| captured_variables.rb:169:18:169:19 | @x | semmle.label | @x |
| captured_variables.rb:169:18:169:19 | self [@x] | semmle.label | self [@x] |
| captured_variables.rb:174:1:174:24 | call to new [@x] | semmle.label | call to new [@x] |
| captured_variables.rb:177:5:179:7 | self in foo [Return] [@x] | semmle.label | self in foo [Return] [@x] |
| captured_variables.rb:169:18:169:19 | self : CaptureInstanceSelf1 [@x] | semmle.label | self : CaptureInstanceSelf1 [@x] |
| captured_variables.rb:174:1:174:24 | call to new : CaptureInstanceSelf1 [@x] | semmle.label | call to new : CaptureInstanceSelf1 [@x] |
| captured_variables.rb:177:5:179:7 | self in foo [Return] : CaptureInstanceSelf2 [@x] | semmle.label | self in foo [Return] : CaptureInstanceSelf2 [@x] |
| captured_variables.rb:178:9:178:10 | [post] self [@x] | semmle.label | [post] self [@x] |
| captured_variables.rb:178:14:178:22 | call to taint | semmle.label | call to taint |
| captured_variables.rb:181:5:183:7 | &block [captured self, @x] | semmle.label | &block [captured self, @x] |
| captured_variables.rb:185:5:189:7 | self in baz [@x] | semmle.label | self in baz [@x] |
| captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | semmle.label | do ... end [captured self, @x] |
| captured_variables.rb:181:5:183:7 | &block : [lambda] [captured self, @x] | semmle.label | &block : [lambda] [captured self, @x] |
| captured_variables.rb:185:5:189:7 | self in baz : CaptureInstanceSelf2 [@x] | semmle.label | self in baz : CaptureInstanceSelf2 [@x] |
| captured_variables.rb:186:18:188:11 | do ... end : [lambda] [captured self, @x] | semmle.label | do ... end : [lambda] [captured self, @x] |
| captured_variables.rb:187:18:187:19 | @x | semmle.label | @x |
| captured_variables.rb:187:18:187:19 | self [@x] | semmle.label | self [@x] |
| captured_variables.rb:193:1:193:1 | [post] c [@x] | semmle.label | [post] c [@x] |
| captured_variables.rb:194:1:194:1 | c [@x] | semmle.label | c [@x] |
| captured_variables.rb:187:18:187:19 | self : CaptureInstanceSelf2 [@x] | semmle.label | self : CaptureInstanceSelf2 [@x] |
| captured_variables.rb:193:1:193:1 | [post] c : CaptureInstanceSelf2 [@x] | semmle.label | [post] c : CaptureInstanceSelf2 [@x] |
| captured_variables.rb:194:1:194:1 | c : CaptureInstanceSelf2 [@x] | semmle.label | c : CaptureInstanceSelf2 [@x] |
| captured_variables.rb:197:9:197:17 | call to taint | semmle.label | call to taint |
| captured_variables.rb:199:10:199:10 | x | semmle.label | x |
| captured_variables.rb:206:13:206:21 | call to taint | semmle.label | call to taint |
| captured_variables.rb:208:14:208:14 | x | semmle.label | x |
| captured_variables.rb:219:9:219:17 | call to taint | semmle.label | call to taint |
| captured_variables.rb:223:13:223:13 | x | semmle.label | x |
| captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | semmle.label | [post] fn1 [captured y] |
| captured_variables.rb:226:5:226:7 | fn1 [captured x] | semmle.label | fn1 [captured x] |
| captured_variables.rb:226:5:226:7 | [post] fn1 : [lambda] [captured y] | semmle.label | [post] fn1 : [lambda] [captured y] |
| captured_variables.rb:226:5:226:7 | fn1 : [lambda] [captured x] | semmle.label | fn1 : [lambda] [captured x] |
| captured_variables.rb:227:10:227:10 | y | semmle.label | y |
| instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | semmle.label | self in set_field [Return] [@field] |
| instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | semmle.label | self in set_field [Return] : Foo [@field] |
| instance_variables.rb:10:19:10:19 | x | semmle.label | x |
| instance_variables.rb:11:9:11:14 | [post] self [@field] | semmle.label | [post] self [@field] |
| instance_variables.rb:11:18:11:18 | x | semmle.label | x |
| instance_variables.rb:13:5:15:7 | self in get_field [@field] | semmle.label | self in get_field [@field] |
| instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | semmle.label | self in get_field : Foo [@field] |
| instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | semmle.label | self in get_field : Foo [@field] |
| instance_variables.rb:14:9:14:21 | return | semmle.label | return |
| instance_variables.rb:14:9:14:21 | return | semmle.label | return |
| instance_variables.rb:14:16:14:21 | @field | semmle.label | @field |
| instance_variables.rb:14:16:14:21 | self [@field] | semmle.label | self [@field] |
| instance_variables.rb:16:5:18:7 | self in inc_field [@field] | semmle.label | self in inc_field [@field] |
| instance_variables.rb:14:16:14:21 | @field | semmle.label | @field |
| instance_variables.rb:14:16:14:21 | self : Foo [@field] | semmle.label | self : Foo [@field] |
| instance_variables.rb:14:16:14:21 | self : Foo [@field] | semmle.label | self : Foo [@field] |
| instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | semmle.label | self in inc_field : Foo [@field] |
| instance_variables.rb:17:9:17:14 | [post] self [@field] | semmle.label | [post] self [@field] |
| instance_variables.rb:19:5:19:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| instance_variables.rb:19:12:19:21 | call to taint | semmle.label | call to taint |
| instance_variables.rb:20:10:20:13 | @foo | semmle.label | @foo |
| instance_variables.rb:20:10:20:13 | self [@foo] | semmle.label | self [@foo] |
| instance_variables.rb:22:5:25:7 | self in initialize [Return] [@field] | semmle.label | self in initialize [Return] [@field] |
| instance_variables.rb:22:5:25:7 | self in initialize [Return] : Foo [@field] | semmle.label | self in initialize [Return] : Foo [@field] |
| instance_variables.rb:22:20:22:24 | field | semmle.label | field |
| instance_variables.rb:23:9:23:14 | [post] self [@field] | semmle.label | [post] self [@field] |
| instance_variables.rb:23:18:23:22 | field | semmle.label | field |
| instance_variables.rb:24:9:24:17 | call to taint | semmle.label | call to taint |
| instance_variables.rb:27:5:29:7 | self in call_initialize [Return] [@field] | semmle.label | self in call_initialize [Return] [@field] |
| instance_variables.rb:27:5:29:7 | self in call_initialize [Return] : Foo [@field] | semmle.label | self in call_initialize [Return] : Foo [@field] |
| instance_variables.rb:27:25:27:29 | field | semmle.label | field |
| instance_variables.rb:28:9:28:25 | [post] self [@field] | semmle.label | [post] self [@field] |
| instance_variables.rb:28:9:28:25 | [post] self : Foo [@field] | semmle.label | [post] self : Foo [@field] |
| instance_variables.rb:28:9:28:25 | call to initialize | semmle.label | call to initialize |
| instance_variables.rb:28:20:28:24 | field | semmle.label | field |
| instance_variables.rb:31:18:31:18 | x | semmle.label | x |
| instance_variables.rb:32:13:32:21 | call to taint | semmle.label | call to taint |
| instance_variables.rb:33:9:33:14 | call to new [@field] | semmle.label | call to new [@field] |
| instance_variables.rb:33:9:33:14 | call to new : Foo [@field] | semmle.label | call to new : Foo [@field] |
| instance_variables.rb:33:13:33:13 | x | semmle.label | x |
| instance_variables.rb:36:10:36:23 | call to new [@field] | semmle.label | call to new [@field] |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | semmle.label | call to new : Foo [@field] |
| instance_variables.rb:36:10:36:33 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:36:14:36:22 | call to taint | semmle.label | call to taint |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | semmle.label | call to bar [@field] |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | semmle.label | call to bar : Foo [@field] |
| instance_variables.rb:39:6:39:33 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:39:14:39:22 | call to taint | semmle.label | call to taint |
| instance_variables.rb:43:9:43:17 | call to taint | semmle.label | call to taint |
| instance_variables.rb:48:20:48:20 | x | semmle.label | x |
| instance_variables.rb:49:14:49:14 | x | semmle.label | x |
| instance_variables.rb:54:1:54:3 | [post] foo [@field] | semmle.label | [post] foo [@field] |
| instance_variables.rb:54:1:54:3 | [post] foo : Foo [@field] | semmle.label | [post] foo : Foo [@field] |
| instance_variables.rb:54:15:54:23 | call to taint | semmle.label | call to taint |
| instance_variables.rb:55:6:55:8 | foo [@field] | semmle.label | foo [@field] |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | semmle.label | foo : Foo [@field] |
| instance_variables.rb:55:6:55:18 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:58:1:58:3 | [post] bar [@field] | semmle.label | [post] bar [@field] |
| instance_variables.rb:58:1:58:3 | [post] bar : Foo [@field] | semmle.label | [post] bar : Foo [@field] |
| instance_variables.rb:58:15:58:22 | call to taint | semmle.label | call to taint |
| instance_variables.rb:59:6:59:8 | bar [@field] | semmle.label | bar [@field] |
| instance_variables.rb:59:6:59:8 | bar : Foo [@field] | semmle.label | bar : Foo [@field] |
| instance_variables.rb:59:6:59:18 | call to inc_field | semmle.label | call to inc_field |
| instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | semmle.label | [post] foo1 [@field] |
| instance_variables.rb:62:14:62:22 | call to taint | semmle.label | call to taint |
@@ -427,140 +445,142 @@ nodes
| instance_variables.rb:66:14:66:22 | call to taint | semmle.label | call to taint |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | semmle.label | foo2 [@field] |
| instance_variables.rb:67:6:67:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | semmle.label | [post] foo3 [@field] |
| instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] | semmle.label | [post] foo3 : Foo [@field] |
| instance_variables.rb:70:16:70:24 | call to taint | semmle.label | call to taint |
| instance_variables.rb:71:6:71:9 | foo3 [@field] | semmle.label | foo3 [@field] |
| instance_variables.rb:71:6:71:9 | foo3 : Foo [@field] | semmle.label | foo3 : Foo [@field] |
| instance_variables.rb:71:6:71:15 | call to field | semmle.label | call to field |
| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | semmle.label | [post] foo5 [@field] |
| instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] | semmle.label | [post] foo5 : Foo [@field] |
| instance_variables.rb:78:18:78:26 | call to taint | semmle.label | call to taint |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | semmle.label | foo5 [@field] |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | semmle.label | foo5 : Foo [@field] |
| instance_variables.rb:79:6:79:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | semmle.label | [post] foo6 [@field] |
| instance_variables.rb:82:15:82:18 | [post] foo6 : Foo [@field] | semmle.label | [post] foo6 : Foo [@field] |
| instance_variables.rb:82:32:82:40 | call to taint | semmle.label | call to taint |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | semmle.label | foo3 [@field] |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | semmle.label | foo3 : Foo [@field] |
| instance_variables.rb:83:6:83:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | semmle.label | foo5 [@field] |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | semmle.label | foo5 : Foo [@field] |
| instance_variables.rb:84:6:84:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | semmle.label | foo6 [@field] |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | semmle.label | foo6 : Foo [@field] |
| instance_variables.rb:85:6:85:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | semmle.label | [post] foo7 [@field] |
| instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | semmle.label | [post] foo8 [@field] |
| instance_variables.rb:89:15:89:18 | [post] foo7 : Foo [@field] | semmle.label | [post] foo7 : Foo [@field] |
| instance_variables.rb:89:25:89:28 | [post] foo8 : Foo [@field] | semmle.label | [post] foo8 : Foo [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | semmle.label | call to taint |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | semmle.label | foo7 [@field] |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | semmle.label | foo7 : Foo [@field] |
| instance_variables.rb:90:6:90:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | semmle.label | foo8 [@field] |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | semmle.label | foo8 : Foo [@field] |
| instance_variables.rb:91:6:91:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | semmle.label | [post] foo9 [@field] |
| instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | semmle.label | [post] foo10 [@field] |
| instance_variables.rb:95:22:95:25 | [post] foo9 : Foo [@field] | semmle.label | [post] foo9 : Foo [@field] |
| instance_variables.rb:95:32:95:36 | [post] foo10 : Foo [@field] | semmle.label | [post] foo10 : Foo [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | semmle.label | call to taint |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | semmle.label | foo9 [@field] |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | semmle.label | foo9 : Foo [@field] |
| instance_variables.rb:96:6:96:19 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | semmle.label | foo10 [@field] |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | semmle.label | foo10 : Foo [@field] |
| instance_variables.rb:97:6:97:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:99:18:99:18 | x [Return] [@field] | semmle.label | x [Return] [@field] |
| instance_variables.rb:100:5:100:5 | [post] x [@field] | semmle.label | [post] x [@field] |
| instance_variables.rb:99:18:99:18 | x [Return] : Foo [@field] | semmle.label | x [Return] : Foo [@field] |
| instance_variables.rb:100:5:100:5 | [post] x : Foo [@field] | semmle.label | [post] x : Foo [@field] |
| instance_variables.rb:100:17:100:25 | call to taint | semmle.label | call to taint |
| instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | semmle.label | [post] foo11 [@field] |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | semmle.label | foo11 [@field] |
| instance_variables.rb:104:14:104:18 | [post] foo11 : Foo [@field] | semmle.label | [post] foo11 : Foo [@field] |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | semmle.label | foo11 : Foo [@field] |
| instance_variables.rb:105:6:105:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | semmle.label | [post] foo12 [@field] |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | semmle.label | foo12 [@field] |
| instance_variables.rb:108:15:108:19 | [post] foo12 : Foo [@field] | semmle.label | [post] foo12 : Foo [@field] |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | semmle.label | foo12 : Foo [@field] |
| instance_variables.rb:109:6:109:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | semmle.label | [post] foo13 [@field] |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | semmle.label | foo13 [@field] |
| instance_variables.rb:113:22:113:26 | [post] foo13 : Foo [@field] | semmle.label | [post] foo13 : Foo [@field] |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | semmle.label | foo13 : Foo [@field] |
| instance_variables.rb:114:6:114:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:116:1:116:5 | foo15 [@field] | semmle.label | foo15 [@field] |
| instance_variables.rb:116:9:116:26 | call to new [@field] | semmle.label | call to new [@field] |
| instance_variables.rb:116:1:116:5 | foo15 : Foo [@field] | semmle.label | foo15 : Foo [@field] |
| instance_variables.rb:116:9:116:26 | call to new : Foo [@field] | semmle.label | call to new : Foo [@field] |
| instance_variables.rb:116:17:116:25 | call to taint | semmle.label | call to taint |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | semmle.label | foo15 [@field] |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | semmle.label | foo15 : Foo [@field] |
| instance_variables.rb:117:6:117:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | semmle.label | [post] foo16 [@field] |
| instance_variables.rb:119:6:119:10 | [post] foo16 : Foo [@field] | semmle.label | [post] foo16 : Foo [@field] |
| instance_variables.rb:119:6:119:37 | call to call_initialize | semmle.label | call to call_initialize |
| instance_variables.rb:119:28:119:36 | call to taint | semmle.label | call to taint |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | semmle.label | foo16 [@field] |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | semmle.label | foo16 : Foo [@field] |
| instance_variables.rb:120:6:120:20 | call to get_field | semmle.label | call to get_field |
| instance_variables.rb:121:1:121:3 | bar | semmle.label | bar |
| instance_variables.rb:121:7:121:24 | call to new | semmle.label | call to new |
| instance_variables.rb:122:6:122:8 | bar | semmle.label | bar |
subpaths
| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] |
| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } [captured x] | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] |
| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | captured_variables.rb:66:1:66:3 | [post] foo [@field] |
| captured_variables.rb:66:15:66:22 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | captured_variables.rb:66:1:66:3 | [post] foo [@field] |
| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:68:10:68:22 | call to get_field |
| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:68:10:68:22 | call to get_field |
| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | captured_variables.rb:69:5:69:7 | [post] foo [@field] |
| captured_variables.rb:69:19:69:26 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | captured_variables.rb:69:5:69:7 | [post] foo [@field] |
| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | captured_variables.rb:79:9:79:11 | [post] foo [@field] |
| captured_variables.rb:79:23:79:30 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | captured_variables.rb:79:9:79:11 | [post] foo [@field] |
| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:83:6:83:18 | call to get_field |
| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:83:6:83:18 | call to get_field |
| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] |
| captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] |
| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:22:5:25:7 | self in initialize [Return] [@field] | instance_variables.rb:28:9:28:25 | [post] self [@field] |
| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:33:9:33:14 | call to new [@field] |
| instance_variables.rb:36:10:36:23 | call to new [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:36:10:36:33 | call to get_field |
| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:36:10:36:33 | call to get_field |
| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:36:10:36:23 | call to new [@field] |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:39:6:39:33 | call to get_field |
| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:39:6:39:33 | call to get_field |
| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:31:18:31:18 | x | instance_variables.rb:33:9:33:14 | call to new [@field] | instance_variables.rb:39:6:39:23 | call to bar [@field] |
| instance_variables.rb:54:15:54:23 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:54:1:54:3 | [post] foo [@field] |
| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:54:1:54:3 | [post] foo [@field] |
| instance_variables.rb:55:6:55:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:55:6:55:18 | call to get_field |
| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:55:6:55:18 | call to get_field |
| instance_variables.rb:58:15:58:22 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:58:1:58:3 | [post] bar [@field] |
| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:58:1:58:3 | [post] bar [@field] |
| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:59:6:59:18 | call to inc_field |
| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | instance_variables.rb:59:6:59:18 | call to inc_field |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:67:6:67:19 | call to get_field |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:67:6:67:19 | call to get_field |
| instance_variables.rb:70:16:70:24 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:70:1:70:4 | [post] foo3 [@field] |
| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:70:1:70:4 | [post] foo3 [@field] |
| instance_variables.rb:78:18:78:26 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:78:2:78:5 | [post] foo5 [@field] |
| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:78:2:78:5 | [post] foo5 [@field] |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:79:6:79:19 | call to get_field |
| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:79:6:79:19 | call to get_field |
| instance_variables.rb:82:32:82:40 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:82:15:82:18 | [post] foo6 [@field] |
| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:82:15:82:18 | [post] foo6 [@field] |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:83:6:83:19 | call to get_field |
| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:83:6:83:19 | call to get_field |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:84:6:84:19 | call to get_field |
| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:84:6:84:19 | call to get_field |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:85:6:85:19 | call to get_field |
| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:85:6:85:19 | call to get_field |
| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:89:15:89:18 | [post] foo7 [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:89:25:89:28 | [post] foo8 [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:89:15:89:18 | [post] foo7 [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:89:25:89:28 | [post] foo8 [@field] |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:90:6:90:19 | call to get_field |
| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:90:6:90:19 | call to get_field |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:91:6:91:19 | call to get_field |
| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:91:6:91:19 | call to get_field |
| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:95:22:95:25 | [post] foo9 [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:95:32:95:36 | [post] foo10 [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:95:22:95:25 | [post] foo9 [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:95:32:95:36 | [post] foo10 [@field] |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:96:6:96:19 | call to get_field |
| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:96:6:96:19 | call to get_field |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:97:6:97:20 | call to get_field |
| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:97:6:97:20 | call to get_field |
| instance_variables.rb:100:17:100:25 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] [@field] | instance_variables.rb:100:5:100:5 | [post] x [@field] |
| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] [@field] | instance_variables.rb:100:5:100:5 | [post] x [@field] |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:105:6:105:20 | call to get_field |
| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:105:6:105:20 | call to get_field |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:109:6:109:20 | call to get_field |
| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:109:6:109:20 | call to get_field |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:114:6:114:20 | call to get_field |
| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:114:6:114:20 | call to get_field |
| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:116:9:116:26 | call to new [@field] |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:117:6:117:20 | call to get_field |
| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:117:6:117:20 | call to get_field |
| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:27:25:27:29 | field | instance_variables.rb:27:5:29:7 | self in call_initialize [Return] [@field] | instance_variables.rb:119:6:119:10 | [post] foo16 [@field] |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:120:6:120:20 | call to get_field |
| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:120:6:120:20 | call to get_field |
| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } : [lambda] [captured x] | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 : [lambda] [captured x] |
| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } : [lambda] [captured x] | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 : [lambda] [captured x] |
| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] |
| captured_variables.rb:66:15:66:22 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:66:1:66:3 | [post] foo : Foo [@field] |
| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:68:10:68:22 | call to get_field |
| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:68:10:68:22 | call to get_field |
| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] |
| captured_variables.rb:69:19:69:26 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:69:5:69:7 | [post] foo : Foo [@field] |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:72:6:72:8 | foo : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:72:6:72:18 | call to get_field |
| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] |
| captured_variables.rb:79:23:79:30 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | captured_variables.rb:79:9:79:11 | [post] foo : Foo [@field] |
| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:83:6:83:18 | call to get_field |
| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:83:6:83:18 | call to get_field |
| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } : [lambda] [captured x] | captured_variables.rb:98:1:98:21 | call to capture_arg : [lambda] [captured x] |
| captured_variables.rb:226:5:226:7 | fn1 : [lambda] [captured x] | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:226:5:226:7 | [post] fn1 : [lambda] [captured y] |
| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:22:5:25:7 | self in initialize [Return] : Foo [@field] | instance_variables.rb:28:9:28:25 | [post] self : Foo [@field] |
| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:33:9:33:14 | call to new : Foo [@field] |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:36:10:36:33 | call to get_field |
| instance_variables.rb:36:10:36:23 | call to new : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:36:10:36:33 | call to get_field |
| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:36:10:36:23 | call to new : Foo [@field] |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:39:6:39:33 | call to get_field |
| instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:39:6:39:33 | call to get_field |
| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:31:18:31:18 | x | instance_variables.rb:33:9:33:14 | call to new : Foo [@field] | instance_variables.rb:39:6:39:23 | call to bar : Foo [@field] |
| instance_variables.rb:54:15:54:23 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:54:1:54:3 | [post] foo : Foo [@field] |
| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:54:1:54:3 | [post] foo : Foo [@field] |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:55:6:55:18 | call to get_field |
| instance_variables.rb:55:6:55:8 | foo : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:55:6:55:18 | call to get_field |
| instance_variables.rb:58:15:58:22 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:58:1:58:3 | [post] bar : Foo [@field] |
| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:58:1:58:3 | [post] bar : Foo [@field] |
| instance_variables.rb:59:6:59:8 | bar : Foo [@field] | instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | instance_variables.rb:59:6:59:18 | call to inc_field |
| instance_variables.rb:59:6:59:8 | bar : Foo [@field] | instance_variables.rb:16:5:18:7 | self in inc_field : Foo [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | instance_variables.rb:59:6:59:18 | call to inc_field |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:67:6:67:19 | call to get_field |
| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:67:6:67:19 | call to get_field |
| instance_variables.rb:70:16:70:24 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] |
| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:70:1:70:4 | [post] foo3 : Foo [@field] |
| instance_variables.rb:78:18:78:26 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] |
| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:78:2:78:5 | [post] foo5 : Foo [@field] |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:79:6:79:19 | call to get_field |
| instance_variables.rb:79:6:79:9 | foo5 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:79:6:79:19 | call to get_field |
| instance_variables.rb:82:32:82:40 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:82:15:82:18 | [post] foo6 : Foo [@field] |
| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:82:15:82:18 | [post] foo6 : Foo [@field] |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:83:6:83:19 | call to get_field |
| instance_variables.rb:83:6:83:9 | foo3 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:83:6:83:19 | call to get_field |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:84:6:84:19 | call to get_field |
| instance_variables.rb:84:6:84:9 | foo5 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:84:6:84:19 | call to get_field |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:85:6:85:19 | call to get_field |
| instance_variables.rb:85:6:85:9 | foo6 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:85:6:85:19 | call to get_field |
| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:89:15:89:18 | [post] foo7 : Foo [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:89:25:89:28 | [post] foo8 : Foo [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:89:15:89:18 | [post] foo7 : Foo [@field] |
| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:89:25:89:28 | [post] foo8 : Foo [@field] |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:90:6:90:19 | call to get_field |
| instance_variables.rb:90:6:90:9 | foo7 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:90:6:90:19 | call to get_field |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:91:6:91:19 | call to get_field |
| instance_variables.rb:91:6:91:9 | foo8 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:91:6:91:19 | call to get_field |
| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:95:22:95:25 | [post] foo9 : Foo [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:95:32:95:36 | [post] foo10 : Foo [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:95:22:95:25 | [post] foo9 : Foo [@field] |
| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:95:32:95:36 | [post] foo10 : Foo [@field] |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:96:6:96:19 | call to get_field |
| instance_variables.rb:96:6:96:9 | foo9 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:96:6:96:19 | call to get_field |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:97:6:97:20 | call to get_field |
| instance_variables.rb:97:6:97:10 | foo10 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:97:6:97:20 | call to get_field |
| instance_variables.rb:100:17:100:25 | call to taint | captured_variables.rb:57:19:57:19 | x | captured_variables.rb:57:5:59:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:100:5:100:5 | [post] x : Foo [@field] |
| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:10:5:12:7 | self in set_field [Return] : Foo [@field] | instance_variables.rb:100:5:100:5 | [post] x : Foo [@field] |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:105:6:105:20 | call to get_field |
| instance_variables.rb:105:6:105:10 | foo11 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:105:6:105:20 | call to get_field |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:109:6:109:20 | call to get_field |
| instance_variables.rb:109:6:109:10 | foo12 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:109:6:109:20 | call to get_field |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:114:6:114:20 | call to get_field |
| instance_variables.rb:114:6:114:10 | foo13 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:114:6:114:20 | call to get_field |
| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:116:9:116:26 | call to new : Foo [@field] |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:117:6:117:20 | call to get_field |
| instance_variables.rb:117:6:117:10 | foo15 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:117:6:117:20 | call to get_field |
| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:27:25:27:29 | field | instance_variables.rb:27:5:29:7 | self in call_initialize [Return] : Foo [@field] | instance_variables.rb:119:6:119:10 | [post] foo16 : Foo [@field] |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field : Foo [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:120:6:120:20 | call to get_field |
| instance_variables.rb:120:6:120:10 | foo16 : Foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field : Foo [@field] | instance_variables.rb:14:9:14:21 | return | instance_variables.rb:120:6:120:20 | call to get_field |
testFailures
#select
| blocks.rb:8:10:8:14 | yield ... | blocks.rb:14:12:14:20 | call to source | blocks.rb:8:10:8:14 | yield ... | $@ | blocks.rb:14:12:14:20 | call to source | call to source |

View File

@@ -13,165 +13,167 @@ edges
| params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | |
| params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:16:13:16:14 | p1 | provenance | |
| params_flow.rb:25:12:25:13 | p1 | params_flow.rb:26:10:26:11 | p1 | provenance | |
| params_flow.rb:25:17:25:24 | **kwargs [element :p2] | params_flow.rb:28:11:28:16 | kwargs [element :p2] | provenance | |
| params_flow.rb:25:17:25:24 | **kwargs [element :p3] | params_flow.rb:29:11:29:16 | kwargs [element :p3] | provenance | |
| params_flow.rb:28:11:28:16 | kwargs [element :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | |
| params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p2] | params_flow.rb:28:11:28:16 | kwargs : Hash [element :p2] | provenance | |
| params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p3] | params_flow.rb:29:11:29:16 | kwargs : Hash [element :p3] | provenance | |
| params_flow.rb:28:11:28:16 | kwargs : Hash [element :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | |
| params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:28:10:28:22 | ( ... ) | provenance | |
| params_flow.rb:29:11:29:16 | kwargs [element :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | |
| params_flow.rb:29:11:29:16 | kwargs : Hash [element :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | |
| params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:29:10:29:22 | ( ... ) | provenance | |
| params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:25:12:25:13 | p1 | provenance | |
| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | provenance | |
| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | provenance | |
| params_flow.rb:34:1:34:4 | args [element :p3] | params_flow.rb:35:25:35:28 | args [element :p3] | provenance | |
| params_flow.rb:34:8:34:32 | call to [] [element :p3] | params_flow.rb:34:1:34:4 | args [element :p3] | provenance | |
| params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:8:34:32 | call to [] [element :p3] | provenance | |
| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p2] | provenance | |
| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p3] | provenance | |
| params_flow.rb:34:1:34:4 | args : Hash [element :p3] | params_flow.rb:35:25:35:28 | args : Hash [element :p3] | provenance | |
| params_flow.rb:34:8:34:32 | call to [] : Hash [element :p3] | params_flow.rb:34:1:34:4 | args : Hash [element :p3] | provenance | |
| params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:8:34:32 | call to [] : Hash [element :p3] | provenance | |
| params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:25:12:25:13 | p1 | provenance | |
| params_flow.rb:35:23:35:28 | ** ... [element :p3] | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | provenance | |
| params_flow.rb:35:25:35:28 | args [element :p3] | params_flow.rb:35:23:35:28 | ** ... [element :p3] | provenance | |
| params_flow.rb:37:1:37:4 | args [element :p1] | params_flow.rb:38:10:38:13 | args [element :p1] | provenance | |
| params_flow.rb:37:1:37:4 | args [element :p2] | params_flow.rb:38:10:38:13 | args [element :p2] | provenance | |
| params_flow.rb:37:8:37:44 | call to [] [element :p1] | params_flow.rb:37:1:37:4 | args [element :p1] | provenance | |
| params_flow.rb:37:8:37:44 | call to [] [element :p2] | params_flow.rb:37:1:37:4 | args [element :p2] | provenance | |
| params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:37:8:37:44 | call to [] [element :p1] | provenance | |
| params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:37:8:37:44 | call to [] [element :p2] | provenance | |
| params_flow.rb:38:8:38:13 | ** ... [element :p1] | params_flow.rb:25:12:25:13 | p1 | provenance | |
| params_flow.rb:38:8:38:13 | ** ... [element :p2] | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | provenance | |
| params_flow.rb:38:10:38:13 | args [element :p1] | params_flow.rb:38:8:38:13 | ** ... [element :p1] | provenance | |
| params_flow.rb:38:10:38:13 | args [element :p2] | params_flow.rb:38:8:38:13 | ** ... [element :p2] | provenance | |
| params_flow.rb:40:1:40:4 | args [element :p1] | params_flow.rb:41:26:41:29 | args [element :p1] | provenance | |
| params_flow.rb:40:8:40:26 | call to [] [element :p1] | params_flow.rb:40:1:40:4 | args [element :p1] | provenance | |
| params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:40:8:40:26 | call to [] [element :p1] | provenance | |
| params_flow.rb:35:23:35:28 | ** ... : Hash [element :p3] | params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p3] | provenance | |
| params_flow.rb:35:25:35:28 | args : Hash [element :p3] | params_flow.rb:35:23:35:28 | ** ... : Hash [element :p3] | provenance | |
| params_flow.rb:37:1:37:4 | args : Hash [element :p1] | params_flow.rb:38:10:38:13 | args : Hash [element :p1] | provenance | |
| params_flow.rb:37:1:37:4 | args : Hash [element :p2] | params_flow.rb:38:10:38:13 | args : Hash [element :p2] | provenance | |
| params_flow.rb:37:8:37:44 | call to [] : Hash [element :p1] | params_flow.rb:37:1:37:4 | args : Hash [element :p1] | provenance | |
| params_flow.rb:37:8:37:44 | call to [] : Hash [element :p2] | params_flow.rb:37:1:37:4 | args : Hash [element :p2] | provenance | |
| params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:37:8:37:44 | call to [] : Hash [element :p1] | provenance | |
| params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:37:8:37:44 | call to [] : Hash [element :p2] | provenance | |
| params_flow.rb:38:8:38:13 | ** ... : Hash [element :p1] | params_flow.rb:25:12:25:13 | p1 | provenance | |
| params_flow.rb:38:8:38:13 | ** ... : Hash [element :p2] | params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p2] | provenance | |
| params_flow.rb:38:10:38:13 | args : Hash [element :p1] | params_flow.rb:38:8:38:13 | ** ... : Hash [element :p1] | provenance | |
| params_flow.rb:38:10:38:13 | args : Hash [element :p2] | params_flow.rb:38:8:38:13 | ** ... : Hash [element :p2] | provenance | |
| params_flow.rb:40:1:40:4 | args : Hash [element :p1] | params_flow.rb:41:26:41:29 | args : Hash [element :p1] | provenance | |
| params_flow.rb:40:8:40:26 | call to [] : Hash [element :p1] | params_flow.rb:40:1:40:4 | args : Hash [element :p1] | provenance | |
| params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:40:8:40:26 | call to [] : Hash [element :p1] | provenance | |
| params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | |
| params_flow.rb:41:24:41:29 | ** ... [element :p1] | params_flow.rb:16:13:16:14 | p1 | provenance | |
| params_flow.rb:41:26:41:29 | args [element :p1] | params_flow.rb:41:24:41:29 | ** ... [element :p1] | provenance | |
| params_flow.rb:43:1:43:4 | args [element 0] | params_flow.rb:44:24:44:27 | args [element 0] | provenance | |
| params_flow.rb:43:8:43:18 | call to [] [element 0] | params_flow.rb:43:1:43:4 | args [element 0] | provenance | |
| params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:43:8:43:18 | call to [] [element 0] | provenance | |
| params_flow.rb:41:24:41:29 | ** ... : Hash [element :p1] | params_flow.rb:16:13:16:14 | p1 | provenance | |
| params_flow.rb:41:26:41:29 | args : Hash [element :p1] | params_flow.rb:41:24:41:29 | ** ... : Hash [element :p1] | provenance | |
| params_flow.rb:43:1:43:4 | args : Array [element 0] | params_flow.rb:44:24:44:27 | args : Array [element 0] | provenance | |
| params_flow.rb:43:8:43:18 | call to [] : Array [element 0] | params_flow.rb:43:1:43:4 | args : Array [element 0] | provenance | |
| params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:43:8:43:18 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:9:16:9:17 | p1 | provenance | |
| params_flow.rb:44:23:44:27 | * ... [element 0] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:44:24:44:27 | args [element 0] | params_flow.rb:44:23:44:27 | * ... [element 0] | provenance | |
| params_flow.rb:46:1:46:4 | args [element 0] | params_flow.rb:47:13:47:16 | args [element 0] | provenance | |
| params_flow.rb:46:1:46:4 | args [element 1] | params_flow.rb:47:13:47:16 | args [element 1] | provenance | |
| params_flow.rb:46:8:46:29 | call to [] [element 0] | params_flow.rb:46:1:46:4 | args [element 0] | provenance | |
| params_flow.rb:46:8:46:29 | call to [] [element 1] | params_flow.rb:46:1:46:4 | args [element 1] | provenance | |
| params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:46:8:46:29 | call to [] [element 0] | provenance | |
| params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:46:8:46:29 | call to [] [element 1] | provenance | |
| params_flow.rb:47:12:47:16 | * ... [element 0] | params_flow.rb:9:16:9:17 | p1 | provenance | |
| params_flow.rb:47:12:47:16 | * ... [element 1] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:47:13:47:16 | args [element 0] | params_flow.rb:47:12:47:16 | * ... [element 0] | provenance | |
| params_flow.rb:47:13:47:16 | args [element 1] | params_flow.rb:47:12:47:16 | * ... [element 1] | provenance | |
| params_flow.rb:44:23:44:27 | * ... : Array [element 0] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:44:24:44:27 | args : Array [element 0] | params_flow.rb:44:23:44:27 | * ... : Array [element 0] | provenance | |
| params_flow.rb:46:1:46:4 | args : Array [element 0] | params_flow.rb:47:13:47:16 | args : Array [element 0] | provenance | |
| params_flow.rb:46:1:46:4 | args : Array [element 1] | params_flow.rb:47:13:47:16 | args : Array [element 1] | provenance | |
| params_flow.rb:46:8:46:29 | call to [] : Array [element 0] | params_flow.rb:46:1:46:4 | args : Array [element 0] | provenance | |
| params_flow.rb:46:8:46:29 | call to [] : Array [element 1] | params_flow.rb:46:1:46:4 | args : Array [element 1] | provenance | |
| params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:46:8:46:29 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:46:8:46:29 | call to [] : Array [element 1] | provenance | |
| params_flow.rb:47:12:47:16 | * ... : Array [element 0] | params_flow.rb:9:16:9:17 | p1 | provenance | |
| params_flow.rb:47:12:47:16 | * ... : Array [element 1] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:47:13:47:16 | args : Array [element 0] | params_flow.rb:47:12:47:16 | * ... : Array [element 0] | provenance | |
| params_flow.rb:47:13:47:16 | args : Array [element 1] | params_flow.rb:47:12:47:16 | * ... : Array [element 1] | provenance | |
| params_flow.rb:49:13:49:14 | p1 | params_flow.rb:50:10:50:11 | p1 | provenance | |
| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | provenance | |
| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | |
| params_flow.rb:49:17:49:24 | *posargs : Array [element 0] | params_flow.rb:51:11:51:17 | posargs : Array [element 0] | provenance | |
| params_flow.rb:49:17:49:24 | *posargs : [collection] [element 0] | params_flow.rb:51:11:51:17 | posargs : [collection] [element 0] | provenance | |
| params_flow.rb:51:11:51:17 | posargs : Array [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | |
| params_flow.rb:51:11:51:17 | posargs : [collection] [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | |
| params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:51:10:51:21 | ( ... ) | provenance | |
| params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | |
| params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | |
| params_flow.rb:57:1:57:4 | args [element 0] | params_flow.rb:58:21:58:24 | args [element 0] | provenance | |
| params_flow.rb:57:8:57:18 | call to [] [element 0] | params_flow.rb:57:1:57:4 | args [element 0] | provenance | |
| params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:8:57:18 | call to [] [element 0] | provenance | |
| params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:49:17:49:24 | *posargs : [collection] [element 0] | provenance | |
| params_flow.rb:57:1:57:4 | args : Array [element 0] | params_flow.rb:58:21:58:24 | args : Array [element 0] | provenance | |
| params_flow.rb:57:8:57:18 | call to [] : Array [element 0] | params_flow.rb:57:1:57:4 | args : Array [element 0] | provenance | |
| params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:8:57:18 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | |
| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | |
| params_flow.rb:58:21:58:24 | args [element 0] | params_flow.rb:58:20:58:24 | * ... [element 0] | provenance | |
| params_flow.rb:60:1:60:4 | args [element 0] | params_flow.rb:61:10:61:13 | args [element 0] | provenance | |
| params_flow.rb:60:1:60:4 | args [element 1] | params_flow.rb:61:10:61:13 | args [element 1] | provenance | |
| params_flow.rb:60:8:60:29 | call to [] [element 0] | params_flow.rb:60:1:60:4 | args [element 0] | provenance | |
| params_flow.rb:60:8:60:29 | call to [] [element 1] | params_flow.rb:60:1:60:4 | args [element 1] | provenance | |
| params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:60:8:60:29 | call to [] [element 0] | provenance | |
| params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:60:8:60:29 | call to [] [element 1] | provenance | |
| params_flow.rb:61:9:61:13 | * ... [element 0] | params_flow.rb:49:13:49:14 | p1 | provenance | |
| params_flow.rb:61:9:61:13 | * ... [element 1] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | |
| params_flow.rb:61:10:61:13 | args [element 0] | params_flow.rb:61:9:61:13 | * ... [element 0] | provenance | |
| params_flow.rb:61:10:61:13 | args [element 1] | params_flow.rb:61:9:61:13 | * ... [element 1] | provenance | |
| params_flow.rb:58:20:58:24 | * ... : Array [element 0] | params_flow.rb:49:17:49:24 | *posargs : Array [element 0] | provenance | |
| params_flow.rb:58:21:58:24 | args : Array [element 0] | params_flow.rb:58:20:58:24 | * ... : Array [element 0] | provenance | |
| params_flow.rb:60:1:60:4 | args : Array [element 0] | params_flow.rb:61:10:61:13 | args : Array [element 0] | provenance | |
| params_flow.rb:60:1:60:4 | args : Array [element 1] | params_flow.rb:61:10:61:13 | args : Array [element 1] | provenance | |
| params_flow.rb:60:8:60:29 | call to [] : Array [element 0] | params_flow.rb:60:1:60:4 | args : Array [element 0] | provenance | |
| params_flow.rb:60:8:60:29 | call to [] : Array [element 1] | params_flow.rb:60:1:60:4 | args : Array [element 1] | provenance | |
| params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:60:8:60:29 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:60:8:60:29 | call to [] : Array [element 1] | provenance | |
| params_flow.rb:61:9:61:13 | * ... : Array [element 0] | params_flow.rb:49:13:49:14 | p1 | provenance | |
| params_flow.rb:61:9:61:13 | * ... : Array [element 1] | params_flow.rb:49:17:49:24 | *posargs : [collection] [element 0] | provenance | |
| params_flow.rb:61:10:61:13 | args : Array [element 0] | params_flow.rb:61:9:61:13 | * ... : Array [element 0] | provenance | |
| params_flow.rb:61:10:61:13 | args : Array [element 1] | params_flow.rb:61:9:61:13 | * ... : Array [element 1] | provenance | |
| params_flow.rb:63:1:63:4 | args | params_flow.rb:67:13:67:16 | args | provenance | |
| params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:63:1:63:4 | args | provenance | |
| params_flow.rb:64:16:64:17 | *x [element 0] | params_flow.rb:65:10:65:10 | x [element 0] | provenance | |
| params_flow.rb:65:10:65:10 | x [element 0] | params_flow.rb:65:10:65:13 | ...[...] | provenance | |
| params_flow.rb:67:12:67:16 | * ... [element 0] | params_flow.rb:64:16:64:17 | *x [element 0] | provenance | |
| params_flow.rb:67:13:67:16 | args | params_flow.rb:67:12:67:16 | * ... [element 0] | provenance | |
| params_flow.rb:64:16:64:17 | *x : [collection] [element 0] | params_flow.rb:65:10:65:10 | x : [collection] [element 0] | provenance | |
| params_flow.rb:65:10:65:10 | x : [collection] [element 0] | params_flow.rb:65:10:65:13 | ...[...] | provenance | |
| params_flow.rb:67:12:67:16 | * ... : [collection] [element 0] | params_flow.rb:64:16:64:17 | *x : [collection] [element 0] | provenance | |
| params_flow.rb:67:13:67:16 | args | params_flow.rb:67:12:67:16 | * ... : [collection] [element 0] | provenance | |
| params_flow.rb:69:14:69:14 | x | params_flow.rb:70:10:70:10 | x | provenance | |
| params_flow.rb:69:17:69:17 | y | params_flow.rb:71:10:71:10 | y | provenance | |
| params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | |
| params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | |
| params_flow.rb:80:1:80:4 | args [element 0] | params_flow.rb:81:22:81:25 | args [element 0] | provenance | |
| params_flow.rb:80:8:80:51 | call to [] [element 0] | params_flow.rb:80:1:80:4 | args [element 0] | provenance | |
| params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:8:80:51 | call to [] [element 0] | provenance | |
| params_flow.rb:80:1:80:4 | args : Array [element 0] | params_flow.rb:81:22:81:25 | args : Array [element 0] | provenance | |
| params_flow.rb:80:8:80:51 | call to [] : Array [element 0] | params_flow.rb:80:1:80:4 | args : Array [element 0] | provenance | |
| params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:8:80:51 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | |
| params_flow.rb:81:21:81:25 | * ... [element 0] | params_flow.rb:69:17:69:17 | y | provenance | |
| params_flow.rb:81:22:81:25 | args [element 0] | params_flow.rb:81:21:81:25 | * ... [element 0] | provenance | |
| params_flow.rb:81:21:81:25 | * ... : Array [element 0] | params_flow.rb:69:17:69:17 | y | provenance | |
| params_flow.rb:81:22:81:25 | args : Array [element 0] | params_flow.rb:81:21:81:25 | * ... : Array [element 0] | provenance | |
| params_flow.rb:83:14:83:14 | t | params_flow.rb:84:10:84:10 | t | provenance | |
| params_flow.rb:83:17:83:17 | u | params_flow.rb:85:10:85:10 | u | provenance | |
| params_flow.rb:83:20:83:20 | v | params_flow.rb:86:10:86:10 | v | provenance | |
| params_flow.rb:83:23:83:23 | w | params_flow.rb:87:10:87:10 | w | provenance | |
| params_flow.rb:83:26:83:26 | x | params_flow.rb:88:10:88:10 | x | provenance | |
| params_flow.rb:83:29:83:29 | y | params_flow.rb:89:10:89:10 | y | provenance | |
| params_flow.rb:93:1:93:4 | args [element 0] | params_flow.rb:94:33:94:36 | args [element 0] | provenance | |
| params_flow.rb:93:1:93:4 | args [element 1] | params_flow.rb:94:33:94:36 | args [element 1] | provenance | |
| params_flow.rb:93:1:93:4 | args [element 2] | params_flow.rb:94:33:94:36 | args [element 2] | provenance | |
| params_flow.rb:93:1:93:4 | args [element 3] | params_flow.rb:94:33:94:36 | args [element 3] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] [element 0] | params_flow.rb:93:1:93:4 | args [element 0] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] [element 1] | params_flow.rb:93:1:93:4 | args [element 1] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] [element 2] | params_flow.rb:93:1:93:4 | args [element 2] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] [element 3] | params_flow.rb:93:1:93:4 | args [element 3] | provenance | |
| params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:93:8:93:51 | call to [] [element 0] | provenance | |
| params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:93:8:93:51 | call to [] [element 1] | provenance | |
| params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:93:8:93:51 | call to [] [element 2] | provenance | |
| params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:93:8:93:51 | call to [] [element 3] | provenance | |
| params_flow.rb:93:1:93:4 | args : Array [element 0] | params_flow.rb:94:33:94:36 | args : Array [element 0] | provenance | |
| params_flow.rb:93:1:93:4 | args : Array [element 1] | params_flow.rb:94:33:94:36 | args : Array [element 1] | provenance | |
| params_flow.rb:93:1:93:4 | args : Array [element 2] | params_flow.rb:94:33:94:36 | args : Array [element 2] | provenance | |
| params_flow.rb:93:1:93:4 | args : Array [element 3] | params_flow.rb:94:33:94:36 | args : Array [element 3] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 0] | params_flow.rb:93:1:93:4 | args : Array [element 0] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 1] | params_flow.rb:93:1:93:4 | args : Array [element 1] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 2] | params_flow.rb:93:1:93:4 | args : Array [element 2] | provenance | |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 3] | params_flow.rb:93:1:93:4 | args : Array [element 3] | provenance | |
| params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:93:8:93:51 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:93:8:93:51 | call to [] : Array [element 1] | provenance | |
| params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:93:8:93:51 | call to [] : Array [element 2] | provenance | |
| params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:93:8:93:51 | call to [] : Array [element 3] | provenance | |
| params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:83:14:83:14 | t | provenance | |
| params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:83:17:83:17 | u | provenance | |
| params_flow.rb:94:32:94:36 | * ... [element 0] | params_flow.rb:83:20:83:20 | v | provenance | |
| params_flow.rb:94:32:94:36 | * ... [element 1] | params_flow.rb:83:23:83:23 | w | provenance | |
| params_flow.rb:94:32:94:36 | * ... [element 2] | params_flow.rb:83:26:83:26 | x | provenance | |
| params_flow.rb:94:32:94:36 | * ... [element 3] | params_flow.rb:83:29:83:29 | y | provenance | |
| params_flow.rb:94:33:94:36 | args [element 0] | params_flow.rb:94:32:94:36 | * ... [element 0] | provenance | |
| params_flow.rb:94:33:94:36 | args [element 1] | params_flow.rb:94:32:94:36 | * ... [element 1] | provenance | |
| params_flow.rb:94:33:94:36 | args [element 2] | params_flow.rb:94:32:94:36 | * ... [element 2] | provenance | |
| params_flow.rb:94:33:94:36 | args [element 3] | params_flow.rb:94:32:94:36 | * ... [element 3] | provenance | |
| params_flow.rb:94:32:94:36 | * ... : Array [element 0] | params_flow.rb:83:20:83:20 | v | provenance | |
| params_flow.rb:94:32:94:36 | * ... : Array [element 1] | params_flow.rb:83:23:83:23 | w | provenance | |
| params_flow.rb:94:32:94:36 | * ... : Array [element 2] | params_flow.rb:83:26:83:26 | x | provenance | |
| params_flow.rb:94:32:94:36 | * ... : Array [element 3] | params_flow.rb:83:29:83:29 | y | provenance | |
| params_flow.rb:94:33:94:36 | args : Array [element 0] | params_flow.rb:94:32:94:36 | * ... : Array [element 0] | provenance | |
| params_flow.rb:94:33:94:36 | args : Array [element 1] | params_flow.rb:94:32:94:36 | * ... : Array [element 1] | provenance | |
| params_flow.rb:94:33:94:36 | args : Array [element 2] | params_flow.rb:94:32:94:36 | * ... : Array [element 2] | provenance | |
| params_flow.rb:94:33:94:36 | args : Array [element 3] | params_flow.rb:94:32:94:36 | * ... : Array [element 3] | provenance | |
| params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | |
| params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | |
| params_flow.rb:98:19:98:19 | a | params_flow.rb:99:10:99:10 | a | provenance | |
| params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | |
| params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | |
| params_flow.rb:108:37:108:37 | a | params_flow.rb:109:10:109:10 | a | provenance | |
| params_flow.rb:108:40:108:41 | *b [element 0] | params_flow.rb:110:10:110:10 | b [element 0] | provenance | |
| params_flow.rb:108:40:108:41 | *b : [collection] [element 0] | params_flow.rb:110:10:110:10 | b : [collection] [element 0] | provenance | |
| params_flow.rb:108:44:108:44 | c | params_flow.rb:111:10:111:10 | c | provenance | |
| params_flow.rb:110:10:110:10 | b [element 0] | params_flow.rb:110:10:110:13 | ...[...] | provenance | |
| params_flow.rb:110:10:110:10 | b : [collection] [element 0] | params_flow.rb:110:10:110:13 | ...[...] | provenance | |
| params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:108:37:108:37 | a | provenance | |
| params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:108:40:108:41 | *b [element 0] | provenance | |
| params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:108:40:108:41 | *b : [collection] [element 0] | provenance | |
| params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:108:44:108:44 | c | provenance | |
| params_flow.rb:117:1:117:1 | [post] x [element] | params_flow.rb:118:13:118:13 | x [element] | provenance | |
| params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:1:117:1 | [post] x [element] | provenance | |
| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:16:9:17 | p1 | provenance | |
| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:118:13:118:13 | x [element] | params_flow.rb:118:12:118:13 | * ... [element] | provenance | |
| params_flow.rb:130:1:130:4 | args [element 0] | params_flow.rb:131:11:131:14 | args [element 0] | provenance | |
| params_flow.rb:130:1:130:4 | args [element 1] | params_flow.rb:131:11:131:14 | args [element 1] | provenance | |
| params_flow.rb:130:8:130:29 | call to [] [element 0] | params_flow.rb:130:1:130:4 | args [element 0] | provenance | |
| params_flow.rb:130:8:130:29 | call to [] [element 1] | params_flow.rb:130:1:130:4 | args [element 1] | provenance | |
| params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:130:8:130:29 | call to [] [element 0] | provenance | |
| params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:130:8:130:29 | call to [] [element 1] | provenance | |
| params_flow.rb:131:10:131:14 | * ... [element 0] | params_flow.rb:83:14:83:14 | t | provenance | |
| params_flow.rb:131:10:131:14 | * ... [element 1] | params_flow.rb:83:17:83:17 | u | provenance | |
| params_flow.rb:131:11:131:14 | args [element 0] | params_flow.rb:131:10:131:14 | * ... [element 0] | provenance | |
| params_flow.rb:131:11:131:14 | args [element 1] | params_flow.rb:131:10:131:14 | * ... [element 1] | provenance | |
| params_flow.rb:133:14:133:18 | *args [element 1] | params_flow.rb:134:10:134:13 | args [element 1] | provenance | |
| params_flow.rb:134:10:134:13 | args [element 1] | params_flow.rb:134:10:134:16 | ...[...] | provenance | |
| params_flow.rb:137:10:137:43 | * ... [element 1] | params_flow.rb:133:14:133:18 | *args [element 1] | provenance | |
| params_flow.rb:137:11:137:43 | call to [] [element 1] | params_flow.rb:137:10:137:43 | * ... [element 1] | provenance | |
| params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:137:11:137:43 | call to [] [element 1] | provenance | |
| params_flow.rb:117:1:117:1 | [post] x : [collection] [element] | params_flow.rb:118:13:118:13 | x : [collection] [element] | provenance | |
| params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:1:117:1 | [post] x : [collection] [element] | provenance | |
| params_flow.rb:118:12:118:13 | * ... : [collection] [element] | params_flow.rb:9:16:9:17 | p1 | provenance | |
| params_flow.rb:118:12:118:13 | * ... : [collection] [element] | params_flow.rb:9:20:9:21 | p2 | provenance | |
| params_flow.rb:118:13:118:13 | x : [collection] [element] | params_flow.rb:118:12:118:13 | * ... : [collection] [element] | provenance | |
| params_flow.rb:130:1:130:4 | args : Array [element 0] | params_flow.rb:131:11:131:14 | args : Array [element 0] | provenance | |
| params_flow.rb:130:1:130:4 | args : Array [element 1] | params_flow.rb:131:11:131:14 | args : Array [element 1] | provenance | |
| params_flow.rb:130:8:130:29 | call to [] : Array [element 0] | params_flow.rb:130:1:130:4 | args : Array [element 0] | provenance | |
| params_flow.rb:130:8:130:29 | call to [] : Array [element 1] | params_flow.rb:130:1:130:4 | args : Array [element 1] | provenance | |
| params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:130:8:130:29 | call to [] : Array [element 0] | provenance | |
| params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:130:8:130:29 | call to [] : Array [element 1] | provenance | |
| params_flow.rb:131:10:131:14 | * ... : Array [element 0] | params_flow.rb:83:14:83:14 | t | provenance | |
| params_flow.rb:131:10:131:14 | * ... : Array [element 1] | params_flow.rb:83:17:83:17 | u | provenance | |
| params_flow.rb:131:11:131:14 | args : Array [element 0] | params_flow.rb:131:10:131:14 | * ... : Array [element 0] | provenance | |
| params_flow.rb:131:11:131:14 | args : Array [element 1] | params_flow.rb:131:10:131:14 | * ... : Array [element 1] | provenance | |
| params_flow.rb:133:14:133:18 | *args : Array [element 1] | params_flow.rb:134:10:134:13 | args : Array [element 1] | provenance | |
| params_flow.rb:134:10:134:13 | args : Array [element 1] | params_flow.rb:134:10:134:16 | ...[...] | provenance | |
| params_flow.rb:137:10:137:43 | * ... : Array [element 1] | params_flow.rb:133:14:133:18 | *args : Array [element 1] | provenance | |
| params_flow.rb:137:11:137:43 | call to [] : Array [element 1] | params_flow.rb:137:10:137:43 | * ... : Array [element 1] | provenance | |
| params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:137:11:137:43 | call to [] : Array [element 1] | provenance | |
| params_flow.rb:153:28:153:29 | p2 | params_flow.rb:154:18:154:19 | p2 | provenance | |
| params_flow.rb:154:5:154:6 | [post] p1 [element 0] | params_flow.rb:153:23:153:24 | p1 [Return] [element 0] | provenance | |
| params_flow.rb:154:18:154:19 | p2 | params_flow.rb:154:5:154:6 | [post] p1 [element 0] | provenance | |
| params_flow.rb:164:23:164:24 | [post] p1 [element 0] | params_flow.rb:165:6:165:7 | p1 [element 0] | provenance | |
| params_flow.rb:154:5:154:6 | [post] p1 : [collection] [element 0] | params_flow.rb:153:23:153:24 | p1 [Return] : [collection] [element 0] | provenance | |
| params_flow.rb:154:18:154:19 | p2 | params_flow.rb:154:5:154:6 | [post] p1 : [collection] [element 0] | provenance | |
| params_flow.rb:164:23:164:24 | [post] p1 : [collection] [element 0] | params_flow.rb:165:6:165:7 | p1 : [collection] [element 0] | provenance | |
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | provenance | |
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:164:23:164:24 | [post] p1 [element 0] | provenance | |
| params_flow.rb:165:6:165:7 | p1 [element 0] | params_flow.rb:165:6:165:10 | ...[...] | provenance | |
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:164:23:164:24 | [post] p1 : [collection] [element 0] | provenance | |
| params_flow.rb:165:6:165:7 | p1 : [collection] [element 0] | params_flow.rb:165:6:165:10 | ...[...] | provenance | |
| params_flow.rb:181:28:181:29 | p2 | params_flow.rb:182:18:182:19 | p2 | provenance | |
| params_flow.rb:182:5:182:6 | [post] p1 [element 0] | params_flow.rb:181:24:181:25 | p1 [Return] [element 0] | provenance | |
| params_flow.rb:182:18:182:19 | p2 | params_flow.rb:182:5:182:6 | [post] p1 [element 0] | provenance | |
| params_flow.rb:192:20:192:21 | [post] p1 [element 0] | params_flow.rb:193:6:193:7 | p1 [element 0] | provenance | |
| params_flow.rb:182:5:182:6 | [post] p1 : [collection] [element 0] | params_flow.rb:181:24:181:25 | p1 [Return] : [collection] [element 0] | provenance | |
| params_flow.rb:182:18:182:19 | p2 | params_flow.rb:182:5:182:6 | [post] p1 : [collection] [element 0] | provenance | |
| params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] | params_flow.rb:193:6:193:7 | p1 : [collection] [element 0] | provenance | |
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | provenance | |
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:20:192:21 | [post] p1 [element 0] | provenance | |
| params_flow.rb:193:6:193:7 | p1 [element 0] | params_flow.rb:193:6:193:10 | ...[...] | provenance | |
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] | provenance | |
| params_flow.rb:193:6:193:7 | p1 : [collection] [element 0] | params_flow.rb:193:6:193:10 | ...[...] | provenance | |
nodes
| params_flow.rb:9:16:9:17 | p1 | semmle.label | p1 |
| params_flow.rb:9:20:9:21 | p2 | semmle.label | p2 |
@@ -190,86 +192,88 @@ nodes
| params_flow.rb:23:16:23:23 | call to taint | semmle.label | call to taint |
| params_flow.rb:23:33:23:40 | call to taint | semmle.label | call to taint |
| params_flow.rb:25:12:25:13 | p1 | semmle.label | p1 |
| params_flow.rb:25:17:25:24 | **kwargs [element :p2] | semmle.label | **kwargs [element :p2] |
| params_flow.rb:25:17:25:24 | **kwargs [element :p3] | semmle.label | **kwargs [element :p3] |
| params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p2] | semmle.label | **kwargs : Hash [element :p2] |
| params_flow.rb:25:17:25:24 | **kwargs : Hash [element :p3] | semmle.label | **kwargs : Hash [element :p3] |
| params_flow.rb:26:10:26:11 | p1 | semmle.label | p1 |
| params_flow.rb:28:10:28:22 | ( ... ) | semmle.label | ( ... ) |
| params_flow.rb:28:11:28:16 | kwargs [element :p2] | semmle.label | kwargs [element :p2] |
| params_flow.rb:28:11:28:16 | kwargs : Hash [element :p2] | semmle.label | kwargs : Hash [element :p2] |
| params_flow.rb:28:11:28:21 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:29:10:29:22 | ( ... ) | semmle.label | ( ... ) |
| params_flow.rb:29:11:29:16 | kwargs [element :p3] | semmle.label | kwargs [element :p3] |
| params_flow.rb:29:11:29:16 | kwargs : Hash [element :p3] | semmle.label | kwargs : Hash [element :p3] |
| params_flow.rb:29:11:29:21 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:33:12:33:19 | call to taint | semmle.label | call to taint |
| params_flow.rb:33:26:33:34 | call to taint | semmle.label | call to taint |
| params_flow.rb:33:41:33:49 | call to taint | semmle.label | call to taint |
| params_flow.rb:34:1:34:4 | args [element :p3] | semmle.label | args [element :p3] |
| params_flow.rb:34:8:34:32 | call to [] [element :p3] | semmle.label | call to [] [element :p3] |
| params_flow.rb:34:1:34:4 | args : Hash [element :p3] | semmle.label | args : Hash [element :p3] |
| params_flow.rb:34:8:34:32 | call to [] : Hash [element :p3] | semmle.label | call to [] : Hash [element :p3] |
| params_flow.rb:34:14:34:22 | call to taint | semmle.label | call to taint |
| params_flow.rb:35:12:35:20 | call to taint | semmle.label | call to taint |
| params_flow.rb:35:23:35:28 | ** ... [element :p3] | semmle.label | ** ... [element :p3] |
| params_flow.rb:35:25:35:28 | args [element :p3] | semmle.label | args [element :p3] |
| params_flow.rb:37:1:37:4 | args [element :p1] | semmle.label | args [element :p1] |
| params_flow.rb:37:1:37:4 | args [element :p2] | semmle.label | args [element :p2] |
| params_flow.rb:37:8:37:44 | call to [] [element :p1] | semmle.label | call to [] [element :p1] |
| params_flow.rb:37:8:37:44 | call to [] [element :p2] | semmle.label | call to [] [element :p2] |
| params_flow.rb:35:23:35:28 | ** ... : Hash [element :p3] | semmle.label | ** ... : Hash [element :p3] |
| params_flow.rb:35:25:35:28 | args : Hash [element :p3] | semmle.label | args : Hash [element :p3] |
| params_flow.rb:37:1:37:4 | args : Hash [element :p1] | semmle.label | args : Hash [element :p1] |
| params_flow.rb:37:1:37:4 | args : Hash [element :p2] | semmle.label | args : Hash [element :p2] |
| params_flow.rb:37:8:37:44 | call to [] : Hash [element :p1] | semmle.label | call to [] : Hash [element :p1] |
| params_flow.rb:37:8:37:44 | call to [] : Hash [element :p2] | semmle.label | call to [] : Hash [element :p2] |
| params_flow.rb:37:16:37:24 | call to taint | semmle.label | call to taint |
| params_flow.rb:37:34:37:42 | call to taint | semmle.label | call to taint |
| params_flow.rb:38:8:38:13 | ** ... [element :p1] | semmle.label | ** ... [element :p1] |
| params_flow.rb:38:8:38:13 | ** ... [element :p2] | semmle.label | ** ... [element :p2] |
| params_flow.rb:38:10:38:13 | args [element :p1] | semmle.label | args [element :p1] |
| params_flow.rb:38:10:38:13 | args [element :p2] | semmle.label | args [element :p2] |
| params_flow.rb:40:1:40:4 | args [element :p1] | semmle.label | args [element :p1] |
| params_flow.rb:40:8:40:26 | call to [] [element :p1] | semmle.label | call to [] [element :p1] |
| params_flow.rb:38:8:38:13 | ** ... : Hash [element :p1] | semmle.label | ** ... : Hash [element :p1] |
| params_flow.rb:38:8:38:13 | ** ... : Hash [element :p2] | semmle.label | ** ... : Hash [element :p2] |
| params_flow.rb:38:10:38:13 | args : Hash [element :p1] | semmle.label | args : Hash [element :p1] |
| params_flow.rb:38:10:38:13 | args : Hash [element :p2] | semmle.label | args : Hash [element :p2] |
| params_flow.rb:40:1:40:4 | args : Hash [element :p1] | semmle.label | args : Hash [element :p1] |
| params_flow.rb:40:8:40:26 | call to [] : Hash [element :p1] | semmle.label | call to [] : Hash [element :p1] |
| params_flow.rb:40:16:40:24 | call to taint | semmle.label | call to taint |
| params_flow.rb:41:13:41:21 | call to taint | semmle.label | call to taint |
| params_flow.rb:41:24:41:29 | ** ... [element :p1] | semmle.label | ** ... [element :p1] |
| params_flow.rb:41:26:41:29 | args [element :p1] | semmle.label | args [element :p1] |
| params_flow.rb:43:1:43:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:43:8:43:18 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:41:24:41:29 | ** ... : Hash [element :p1] | semmle.label | ** ... : Hash [element :p1] |
| params_flow.rb:41:26:41:29 | args : Hash [element :p1] | semmle.label | args : Hash [element :p1] |
| params_flow.rb:43:1:43:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:43:8:43:18 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:43:9:43:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:44:12:44:20 | call to taint | semmle.label | call to taint |
| params_flow.rb:44:23:44:27 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:44:24:44:27 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:46:1:46:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:46:1:46:4 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:46:8:46:29 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:46:8:46:29 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| params_flow.rb:44:23:44:27 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:44:24:44:27 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:46:1:46:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:46:1:46:4 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:46:8:46:29 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:46:8:46:29 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| params_flow.rb:46:9:46:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:46:20:46:28 | call to taint | semmle.label | call to taint |
| params_flow.rb:47:12:47:16 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:47:12:47:16 | * ... [element 1] | semmle.label | * ... [element 1] |
| params_flow.rb:47:13:47:16 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:47:13:47:16 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:47:12:47:16 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:47:12:47:16 | * ... : Array [element 1] | semmle.label | * ... : Array [element 1] |
| params_flow.rb:47:13:47:16 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:47:13:47:16 | args : Array [element 1] | semmle.label | args : Array [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 : Array [element 0] | semmle.label | *posargs : Array [element 0] |
| params_flow.rb:49:17:49:24 | *posargs : [collection] [element 0] | semmle.label | *posargs : [collection] [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 : Array [element 0] | semmle.label | posargs : Array [element 0] |
| params_flow.rb:51:11:51:17 | posargs : [collection] [element 0] | semmle.label | posargs : [collection] [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 |
| params_flow.rb:57:1:57:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:57:8:57:18 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:57:1:57:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:57:8:57:18 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:57:9:57:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:58:9:58:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:58:20:58:24 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:58:21:58:24 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:60:1:60:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:60:1:60:4 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:60:8:60:29 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:60:8:60:29 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| params_flow.rb:58:20:58:24 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:58:21:58:24 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:60:1:60:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:60:1:60:4 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:60:8:60:29 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:60:8:60:29 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| params_flow.rb:60:9:60:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:60:20:60:28 | call to taint | semmle.label | call to taint |
| params_flow.rb:61:9:61:13 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:61:9:61:13 | * ... [element 1] | semmle.label | * ... [element 1] |
| params_flow.rb:61:10:61:13 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:61:10:61:13 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:61:9:61:13 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:61:9:61:13 | * ... : Array [element 1] | semmle.label | * ... : Array [element 1] |
| params_flow.rb:61:10:61:13 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:61:10:61:13 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:63:1:63:4 | args | semmle.label | args |
| params_flow.rb:63:8:63:16 | call to taint | semmle.label | call to taint |
| params_flow.rb:64:16:64:17 | *x [element 0] | semmle.label | *x [element 0] |
| params_flow.rb:65:10:65:10 | x [element 0] | semmle.label | x [element 0] |
| params_flow.rb:64:16:64:17 | *x : [collection] [element 0] | semmle.label | *x : [collection] [element 0] |
| params_flow.rb:65:10:65:10 | x : [collection] [element 0] | semmle.label | x : [collection] [element 0] |
| params_flow.rb:65:10:65:13 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:67:12:67:16 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:67:12:67:16 | * ... : [collection] [element 0] | semmle.label | * ... : [collection] [element 0] |
| params_flow.rb:67:13:67:16 | args | semmle.label | args |
| params_flow.rb:69:14:69:14 | x | semmle.label | x |
| params_flow.rb:69:17:69:17 | y | semmle.label | y |
@@ -277,12 +281,12 @@ nodes
| params_flow.rb:71:10:71:10 | y | semmle.label | y |
| params_flow.rb:78:10:78:18 | call to taint | semmle.label | call to taint |
| params_flow.rb:78:21:78:29 | call to taint | semmle.label | call to taint |
| params_flow.rb:80:1:80:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:80:8:80:51 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:80:1:80:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:80:8:80:51 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:80:9:80:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:81:10:81:18 | call to taint | semmle.label | call to taint |
| params_flow.rb:81:21:81:25 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:81:22:81:25 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:81:21:81:25 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:81:22:81:25 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:83:14:83:14 | t | semmle.label | t |
| params_flow.rb:83:17:83:17 | u | semmle.label | u |
| params_flow.rb:83:20:83:20 | v | semmle.label | v |
@@ -295,28 +299,28 @@ nodes
| params_flow.rb:87:10:87:10 | w | semmle.label | w |
| params_flow.rb:88:10:88:10 | x | semmle.label | x |
| params_flow.rb:89:10:89:10 | y | semmle.label | y |
| params_flow.rb:93:1:93:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:93:1:93:4 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:93:1:93:4 | args [element 2] | semmle.label | args [element 2] |
| params_flow.rb:93:1:93:4 | args [element 3] | semmle.label | args [element 3] |
| params_flow.rb:93:8:93:51 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:93:8:93:51 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| params_flow.rb:93:8:93:51 | call to [] [element 2] | semmle.label | call to [] [element 2] |
| params_flow.rb:93:8:93:51 | call to [] [element 3] | semmle.label | call to [] [element 3] |
| params_flow.rb:93:1:93:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:93:1:93:4 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:93:1:93:4 | args : Array [element 2] | semmle.label | args : Array [element 2] |
| params_flow.rb:93:1:93:4 | args : Array [element 3] | semmle.label | args : Array [element 3] |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 2] | semmle.label | call to [] : Array [element 2] |
| params_flow.rb:93:8:93:51 | call to [] : Array [element 3] | semmle.label | call to [] : Array [element 3] |
| params_flow.rb:93:9:93:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:93:20:93:28 | call to taint | semmle.label | call to taint |
| params_flow.rb:93:31:93:39 | call to taint | semmle.label | call to taint |
| params_flow.rb:93:42:93:50 | call to taint | semmle.label | call to taint |
| params_flow.rb:94:10:94:18 | call to taint | semmle.label | call to taint |
| params_flow.rb:94:21:94:29 | call to taint | semmle.label | call to taint |
| params_flow.rb:94:32:94:36 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:94:32:94:36 | * ... [element 1] | semmle.label | * ... [element 1] |
| params_flow.rb:94:32:94:36 | * ... [element 2] | semmle.label | * ... [element 2] |
| params_flow.rb:94:32:94:36 | * ... [element 3] | semmle.label | * ... [element 3] |
| params_flow.rb:94:33:94:36 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:94:33:94:36 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:94:33:94:36 | args [element 2] | semmle.label | args [element 2] |
| params_flow.rb:94:33:94:36 | args [element 3] | semmle.label | args [element 3] |
| params_flow.rb:94:32:94:36 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:94:32:94:36 | * ... : Array [element 1] | semmle.label | * ... : Array [element 1] |
| params_flow.rb:94:32:94:36 | * ... : Array [element 2] | semmle.label | * ... : Array [element 2] |
| params_flow.rb:94:32:94:36 | * ... : Array [element 3] | semmle.label | * ... : Array [element 3] |
| params_flow.rb:94:33:94:36 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:94:33:94:36 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:94:33:94:36 | args : Array [element 2] | semmle.label | args : Array [element 2] |
| params_flow.rb:94:33:94:36 | args : Array [element 3] | semmle.label | args : Array [element 3] |
| params_flow.rb:96:10:96:18 | call to taint | semmle.label | call to taint |
| params_flow.rb:96:21:96:29 | call to taint | semmle.label | call to taint |
| params_flow.rb:98:19:98:19 | a | semmle.label | a |
@@ -324,54 +328,54 @@ nodes
| params_flow.rb:105:15:105:23 | call to taint | semmle.label | call to taint |
| params_flow.rb:106:15:106:23 | call to taint | semmle.label | call to taint |
| params_flow.rb:108:37:108:37 | a | semmle.label | a |
| params_flow.rb:108:40:108:41 | *b [element 0] | semmle.label | *b [element 0] |
| params_flow.rb:108:40:108:41 | *b : [collection] [element 0] | semmle.label | *b : [collection] [element 0] |
| params_flow.rb:108:44:108:44 | c | semmle.label | c |
| params_flow.rb:109:10:109:10 | a | semmle.label | a |
| params_flow.rb:110:10:110:10 | b [element 0] | semmle.label | b [element 0] |
| params_flow.rb:110:10:110:10 | b : [collection] [element 0] | semmle.label | b : [collection] [element 0] |
| params_flow.rb:110:10:110:13 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:111:10:111:10 | c | semmle.label | c |
| params_flow.rb:114:33:114:41 | call to taint | semmle.label | call to taint |
| params_flow.rb:114:44:114:52 | call to taint | semmle.label | call to taint |
| params_flow.rb:114:58:114:66 | call to taint | semmle.label | call to taint |
| params_flow.rb:117:1:117:1 | [post] x [element] | semmle.label | [post] x [element] |
| params_flow.rb:117:1:117:1 | [post] x : [collection] [element] | semmle.label | [post] x : [collection] [element] |
| params_flow.rb:117:19:117:27 | call to taint | semmle.label | call to taint |
| params_flow.rb:118:12:118:13 | * ... [element] | semmle.label | * ... [element] |
| params_flow.rb:118:13:118:13 | x [element] | semmle.label | x [element] |
| params_flow.rb:130:1:130:4 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:130:1:130:4 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:130:8:130:29 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| params_flow.rb:130:8:130:29 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| params_flow.rb:118:12:118:13 | * ... : [collection] [element] | semmle.label | * ... : [collection] [element] |
| params_flow.rb:118:13:118:13 | x : [collection] [element] | semmle.label | x : [collection] [element] |
| params_flow.rb:130:1:130:4 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:130:1:130:4 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:130:8:130:29 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| params_flow.rb:130:8:130:29 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| params_flow.rb:130:9:130:17 | call to taint | semmle.label | call to taint |
| params_flow.rb:130:20:130:28 | call to taint | semmle.label | call to taint |
| params_flow.rb:131:10:131:14 | * ... [element 0] | semmle.label | * ... [element 0] |
| params_flow.rb:131:10:131:14 | * ... [element 1] | semmle.label | * ... [element 1] |
| params_flow.rb:131:11:131:14 | args [element 0] | semmle.label | args [element 0] |
| params_flow.rb:131:11:131:14 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:133:14:133:18 | *args [element 1] | semmle.label | *args [element 1] |
| params_flow.rb:134:10:134:13 | args [element 1] | semmle.label | args [element 1] |
| params_flow.rb:131:10:131:14 | * ... : Array [element 0] | semmle.label | * ... : Array [element 0] |
| params_flow.rb:131:10:131:14 | * ... : Array [element 1] | semmle.label | * ... : Array [element 1] |
| params_flow.rb:131:11:131:14 | args : Array [element 0] | semmle.label | args : Array [element 0] |
| params_flow.rb:131:11:131:14 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:133:14:133:18 | *args : Array [element 1] | semmle.label | *args : Array [element 1] |
| params_flow.rb:134:10:134:13 | args : Array [element 1] | semmle.label | args : Array [element 1] |
| params_flow.rb:134:10:134:16 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:137:10:137:43 | * ... [element 1] | semmle.label | * ... [element 1] |
| params_flow.rb:137:11:137:43 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| params_flow.rb:137:10:137:43 | * ... : Array [element 1] | semmle.label | * ... : Array [element 1] |
| params_flow.rb:137:11:137:43 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| params_flow.rb:137:23:137:31 | call to taint | semmle.label | call to taint |
| params_flow.rb:153:23:153:24 | p1 [Return] [element 0] | semmle.label | p1 [Return] [element 0] |
| params_flow.rb:153:23:153:24 | p1 [Return] : [collection] [element 0] | semmle.label | p1 [Return] : [collection] [element 0] |
| params_flow.rb:153:28:153:29 | p2 | semmle.label | p2 |
| params_flow.rb:154:5:154:6 | [post] p1 [element 0] | semmle.label | [post] p1 [element 0] |
| params_flow.rb:154:5:154:6 | [post] p1 : [collection] [element 0] | semmle.label | [post] p1 : [collection] [element 0] |
| params_flow.rb:154:18:154:19 | p2 | semmle.label | p2 |
| params_flow.rb:164:23:164:24 | [post] p1 [element 0] | semmle.label | [post] p1 [element 0] |
| params_flow.rb:164:23:164:24 | [post] p1 : [collection] [element 0] | semmle.label | [post] p1 : [collection] [element 0] |
| params_flow.rb:164:31:164:39 | call to taint | semmle.label | call to taint |
| params_flow.rb:165:6:165:7 | p1 [element 0] | semmle.label | p1 [element 0] |
| params_flow.rb:165:6:165:7 | p1 : [collection] [element 0] | semmle.label | p1 : [collection] [element 0] |
| params_flow.rb:165:6:165:10 | ...[...] | semmle.label | ...[...] |
| params_flow.rb:181:24:181:25 | p1 [Return] [element 0] | semmle.label | p1 [Return] [element 0] |
| params_flow.rb:181:24:181:25 | p1 [Return] : [collection] [element 0] | semmle.label | p1 [Return] : [collection] [element 0] |
| params_flow.rb:181:28:181:29 | p2 | semmle.label | p2 |
| params_flow.rb:182:5:182:6 | [post] p1 [element 0] | semmle.label | [post] p1 [element 0] |
| params_flow.rb:182:5:182:6 | [post] p1 : [collection] [element 0] | semmle.label | [post] p1 : [collection] [element 0] |
| params_flow.rb:182:18:182:19 | p2 | semmle.label | p2 |
| params_flow.rb:192:20:192:21 | [post] p1 [element 0] | semmle.label | [post] p1 [element 0] |
| params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] | semmle.label | [post] p1 : [collection] [element 0] |
| params_flow.rb:192:24:192:32 | call to taint | semmle.label | call to taint |
| params_flow.rb:193:6:193:7 | p1 [element 0] | semmle.label | p1 [element 0] |
| params_flow.rb:193:6:193:7 | p1 : [collection] [element 0] | semmle.label | p1 : [collection] [element 0] |
| params_flow.rb:193:6:193:10 | ...[...] | semmle.label | ...[...] |
subpaths
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | params_flow.rb:153:23:153:24 | p1 [Return] [element 0] | params_flow.rb:164:23:164:24 | [post] p1 [element 0] |
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | params_flow.rb:181:24:181:25 | p1 [Return] [element 0] | params_flow.rb:192:20:192:21 | [post] p1 [element 0] |
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | params_flow.rb:153:23:153:24 | p1 [Return] : [collection] [element 0] | params_flow.rb:164:23:164:24 | [post] p1 : [collection] [element 0] |
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | params_flow.rb:181:24:181:25 | p1 [Return] : [collection] [element 0] | params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] |
testFailures
#select
| params_flow.rb:10:10:10:11 | p1 | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:10:10:10:11 | p1 | $@ | params_flow.rb:14:12:14:19 | call to taint | call to taint |

View File

@@ -1,12 +1,12 @@
models
edges
| ssa_flow.rb:12:9:12:9 | [post] a [element 0] | ssa_flow.rb:16:10:16:10 | a [element 0] | provenance | |
| ssa_flow.rb:12:16:12:23 | call to taint | ssa_flow.rb:12:9:12:9 | [post] a [element 0] | provenance | |
| ssa_flow.rb:16:10:16:10 | a [element 0] | ssa_flow.rb:16:10:16:13 | ...[...] | provenance | |
| ssa_flow.rb:12:9:12:9 | [post] a : [collection] [element 0] | ssa_flow.rb:16:10:16:10 | a : [collection] [element 0] | provenance | |
| ssa_flow.rb:12:16:12:23 | call to taint | ssa_flow.rb:12:9:12:9 | [post] a : [collection] [element 0] | provenance | |
| ssa_flow.rb:16:10:16:10 | a : [collection] [element 0] | ssa_flow.rb:16:10:16:13 | ...[...] | provenance | |
nodes
| ssa_flow.rb:12:9:12:9 | [post] a [element 0] | semmle.label | [post] a [element 0] |
| ssa_flow.rb:12:9:12:9 | [post] a : [collection] [element 0] | semmle.label | [post] a : [collection] [element 0] |
| ssa_flow.rb:12:16:12:23 | call to taint | semmle.label | call to taint |
| ssa_flow.rb:16:10:16:10 | a [element 0] | semmle.label | a [element 0] |
| ssa_flow.rb:16:10:16:10 | a : [collection] [element 0] | semmle.label | a : [collection] [element 0] |
| ssa_flow.rb:16:10:16:13 | ...[...] | semmle.label | ...[...] |
subpaths
testFailures

View File

@@ -83,8 +83,8 @@ edges
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:155:28:155:34 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | provenance | |
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | provenance | |
| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | provenance | |
| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | provenance | |
| summaries.rb:4:1:4:8 | tainted2 | summaries.rb:9:6:9:13 | tainted2 | provenance | |
@@ -128,11 +128,11 @@ edges
| summaries.rb:44:8:44:8 | t | summaries.rb:44:8:44:27 | call to matchedByNameRcv | provenance | MaD:23 |
| summaries.rb:48:24:48:41 | call to source | summaries.rb:48:8:48:42 | call to preserveTaint | provenance | MaD:11 |
| summaries.rb:51:24:51:30 | tainted | summaries.rb:51:6:51:31 | call to namedArg | provenance | MaD:14 |
| summaries.rb:53:1:53:4 | args [element :foo] | summaries.rb:54:21:54:24 | args [element :foo] | provenance | |
| summaries.rb:53:8:53:33 | call to [] [element :foo] | summaries.rb:53:1:53:4 | args [element :foo] | provenance | |
| summaries.rb:53:15:53:31 | call to source | summaries.rb:53:8:53:33 | call to [] [element :foo] | provenance | |
| summaries.rb:54:19:54:24 | ** ... [element :foo] | summaries.rb:54:6:54:25 | call to namedArg | provenance | MaD:14 |
| summaries.rb:54:21:54:24 | args [element :foo] | summaries.rb:54:19:54:24 | ** ... [element :foo] | provenance | |
| summaries.rb:53:1:53:4 | args : Hash [element :foo] | summaries.rb:54:21:54:24 | args : Hash [element :foo] | provenance | |
| summaries.rb:53:8:53:33 | call to [] : Hash [element :foo] | summaries.rb:53:1:53:4 | args : Hash [element :foo] | provenance | |
| summaries.rb:53:15:53:31 | call to source | summaries.rb:53:8:53:33 | call to [] : Hash [element :foo] | provenance | |
| summaries.rb:54:19:54:24 | ** ... : Hash [element :foo] | summaries.rb:54:6:54:25 | call to namedArg | provenance | MaD:14 |
| summaries.rb:54:21:54:24 | args : Hash [element :foo] | summaries.rb:54:19:54:24 | ** ... : Hash [element :foo] | provenance | |
| summaries.rb:56:22:56:28 | tainted | summaries.rb:56:6:56:29 | call to anyArg | provenance | MaD:8 |
| summaries.rb:57:17:57:23 | tainted | summaries.rb:57:6:57:24 | call to anyArg | provenance | MaD:8 |
| summaries.rb:59:27:59:33 | tainted | summaries.rb:59:6:59:34 | call to anyNamedArg | provenance | MaD:9 |
@@ -141,128 +141,128 @@ edges
| summaries.rb:65:40:65:40 | x | summaries.rb:66:8:66:8 | x | provenance | |
| summaries.rb:73:24:73:53 | call to source | summaries.rb:73:8:73:54 | call to preserveTaint | provenance | MaD:18 |
| summaries.rb:76:26:76:56 | call to source | summaries.rb:76:8:76:57 | call to preserveTaint | provenance | MaD:19 |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | provenance | |
| summaries.rb:79:5:79:47 | call to [] [element 1] | summaries.rb:79:1:79:1 | a [element 1] | provenance | |
| summaries.rb:79:5:79:47 | call to [] [element 1] | summaries.rb:79:1:79:1 | a [element 1] | provenance | |
| summaries.rb:79:5:79:47 | call to [] [element 2] | summaries.rb:79:1:79:1 | a [element 2] | provenance | |
| summaries.rb:79:5:79:47 | call to [] [element 2] | summaries.rb:79:1:79:1 | a [element 2] | provenance | |
| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:5:79:47 | call to [] [element 1] | provenance | |
| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:5:79:47 | call to [] [element 1] | provenance | |
| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:5:79:47 | call to [] [element 2] | provenance | |
| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:5:79:47 | call to [] [element 2] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | provenance | |
| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | provenance | |
| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | provenance | |
| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | MaD:26 |
| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | MaD:26 |
| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | |
| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | provenance | |
| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | provenance | |
| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | provenance | |
| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | provenance | MaD:28 |
| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | provenance | |
| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | |
| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | |
| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | |
| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | provenance | |
| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | provenance | |
| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | provenance | MaD:29 |
| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | provenance | MaD:29 |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | provenance | |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | provenance | |
| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | |
| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | provenance | |
| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | provenance | MaD:32 |
| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | |
| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | |
| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | |
| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | provenance | |
| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | provenance | |
| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | provenance | MaD:31 |
| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | provenance | MaD:31 |
| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | |
| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | |
| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | provenance | |
| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | provenance | |
| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | provenance | |
| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | provenance | |
| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | provenance | |
| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | provenance | |
| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | provenance | MaD:30 |
| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | provenance | MaD:30 |
| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | |
| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:82:6:82:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:82:6:82:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:83:6:83:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:83:6:83:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:85:6:85:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:85:6:85:6 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:87:5:87:5 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:87:5:87:5 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:91:5:91:5 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 1] | summaries.rb:91:5:91:5 | a : Array [element 1] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 2] | summaries.rb:86:6:86:6 | a : Array [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 2] | summaries.rb:86:6:86:6 | a : Array [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 2] | summaries.rb:95:1:95:1 | a : Array [element 2] | provenance | |
| summaries.rb:79:1:79:1 | a : Array [element 2] | summaries.rb:95:1:95:1 | a : Array [element 2] | provenance | |
| summaries.rb:79:5:79:47 | call to [] : Array [element 1] | summaries.rb:79:1:79:1 | a : Array [element 1] | provenance | |
| summaries.rb:79:5:79:47 | call to [] : Array [element 1] | summaries.rb:79:1:79:1 | a : Array [element 1] | provenance | |
| summaries.rb:79:5:79:47 | call to [] : Array [element 2] | summaries.rb:79:1:79:1 | a : Array [element 2] | provenance | |
| summaries.rb:79:5:79:47 | call to [] : Array [element 2] | summaries.rb:79:1:79:1 | a : Array [element 2] | provenance | |
| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:5:79:47 | call to [] : Array [element 1] | provenance | |
| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:5:79:47 | call to [] : Array [element 1] | provenance | |
| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:5:79:47 | call to [] : Array [element 2] | provenance | |
| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:5:79:47 | call to [] : Array [element 2] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:82:6:82:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:82:6:82:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:84:6:84:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:84:6:84:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:85:6:85:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:85:6:85:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:86:6:86:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:86:6:86:6 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:87:5:87:5 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:87:5:87:5 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:95:1:95:1 | a : [collection] [element] | provenance | |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | summaries.rb:95:1:95:1 | a : [collection] [element] | provenance | |
| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a : [collection] [element] | provenance | |
| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a : [collection] [element] | provenance | |
| summaries.rb:82:6:82:6 | a : Array [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a : Array [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a : [collection] [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:82:6:82:6 | a : [collection] [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | MaD:25 |
| summaries.rb:83:6:83:6 | a : Array [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | MaD:26 |
| summaries.rb:83:6:83:6 | a : Array [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | MaD:26 |
| summaries.rb:84:6:84:6 | a : [collection] [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | |
| summaries.rb:84:6:84:6 | a : [collection] [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a : Array [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a : Array [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a : [collection] [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:85:6:85:6 | a : [collection] [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a : Array [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a : Array [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a : [collection] [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:86:6:86:6 | a : [collection] [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | |
| summaries.rb:87:1:87:1 | b : Array [element 1] | summaries.rb:89:6:89:6 | b : Array [element 1] | provenance | |
| summaries.rb:87:1:87:1 | b : Array [element 1] | summaries.rb:89:6:89:6 | b : Array [element 1] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:88:6:88:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:88:6:88:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:89:6:89:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:89:6:89:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:90:6:90:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:1:87:1 | b : [collection] [element] | summaries.rb:90:6:90:6 | b : [collection] [element] | provenance | |
| summaries.rb:87:5:87:5 | a : Array [element 1] | summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a : Array [element 1] | summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a : [collection] [element] | summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | provenance | MaD:28 |
| summaries.rb:87:5:87:5 | a : [collection] [element] | summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | provenance | MaD:28 |
| summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | summaries.rb:87:1:87:1 | b : Array [element 1] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | summaries.rb:87:1:87:1 | b : Array [element 1] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | summaries.rb:87:1:87:1 | b : [collection] [element] | provenance | |
| summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | summaries.rb:87:1:87:1 | b : [collection] [element] | provenance | |
| summaries.rb:88:6:88:6 | b : [collection] [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | |
| summaries.rb:88:6:88:6 | b : [collection] [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b : Array [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b : Array [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b : [collection] [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:89:6:89:6 | b : [collection] [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | |
| summaries.rb:90:6:90:6 | b : [collection] [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | |
| summaries.rb:90:6:90:6 | b : [collection] [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | |
| summaries.rb:91:1:91:1 | c : Array [element 1] | summaries.rb:93:6:93:6 | c : Array [element 1] | provenance | |
| summaries.rb:91:1:91:1 | c : Array [element 1] | summaries.rb:93:6:93:6 | c : Array [element 1] | provenance | |
| summaries.rb:91:5:91:5 | a : Array [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | provenance | MaD:29 |
| summaries.rb:91:5:91:5 | a : Array [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | provenance | MaD:29 |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | summaries.rb:91:1:91:1 | c : Array [element 1] | provenance | |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | summaries.rb:91:1:91:1 | c : Array [element 1] | provenance | |
| summaries.rb:93:6:93:6 | c : Array [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | |
| summaries.rb:93:6:93:6 | c : Array [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | summaries.rb:98:6:98:6 | a : Array [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | summaries.rb:98:6:98:6 | a : Array [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | summaries.rb:99:1:99:1 | a : Array [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | summaries.rb:99:1:99:1 | a : Array [element 2] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:96:6:96:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:96:6:96:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:97:6:97:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:97:6:97:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:98:6:98:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | summaries.rb:98:6:98:6 | a : [collection] [element] | provenance | |
| summaries.rb:95:1:95:1 | a : Array [element 2] | summaries.rb:95:1:95:1 | [post] a : Array [element 2] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a : Array [element 2] | summaries.rb:95:1:95:1 | [post] a : Array [element 2] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a : [collection] [element] | summaries.rb:95:1:95:1 | [post] a : [collection] [element] | provenance | MaD:32 |
| summaries.rb:95:1:95:1 | a : [collection] [element] | summaries.rb:95:1:95:1 | [post] a : [collection] [element] | provenance | MaD:32 |
| summaries.rb:96:6:96:6 | a : [collection] [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | |
| summaries.rb:96:6:96:6 | a : [collection] [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | |
| summaries.rb:97:6:97:6 | a : [collection] [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | |
| summaries.rb:97:6:97:6 | a : [collection] [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a : Array [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a : Array [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a : [collection] [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:98:6:98:6 | a : [collection] [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | |
| summaries.rb:99:1:99:1 | [post] a : Array [element 2] | summaries.rb:102:6:102:6 | a : Array [element 2] | provenance | |
| summaries.rb:99:1:99:1 | [post] a : Array [element 2] | summaries.rb:102:6:102:6 | a : Array [element 2] | provenance | |
| summaries.rb:99:1:99:1 | a : Array [element 2] | summaries.rb:99:1:99:1 | [post] a : Array [element 2] | provenance | MaD:31 |
| summaries.rb:99:1:99:1 | a : Array [element 2] | summaries.rb:99:1:99:1 | [post] a : Array [element 2] | provenance | MaD:31 |
| summaries.rb:102:6:102:6 | a : Array [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | |
| summaries.rb:102:6:102:6 | a : Array [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | |
| summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | summaries.rb:104:1:104:1 | d : [collection] [element 3] | provenance | |
| summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | summaries.rb:104:1:104:1 | d : [collection] [element 3] | provenance | |
| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | provenance | |
| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | provenance | |
| summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | summaries.rb:108:6:108:6 | d : [collection] [element 3] | provenance | |
| summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | summaries.rb:108:6:108:6 | d : [collection] [element 3] | provenance | |
| summaries.rb:104:1:104:1 | d : [collection] [element 3] | summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | provenance | MaD:30 |
| summaries.rb:104:1:104:1 | d : [collection] [element 3] | summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | provenance | MaD:30 |
| summaries.rb:108:6:108:6 | d : [collection] [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | |
| summaries.rb:108:6:108:6 | d : [collection] [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | |
| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | provenance | |
| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | provenance | |
| summaries.rb:111:13:111:26 | call to source | summaries.rb:111:1:111:1 | [post] x [@value] | provenance | MaD:27 |
@@ -283,7 +283,7 @@ edges
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:154:20:154:26 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:155:28:155:34 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:156:27:156:33 | tainted | provenance | Sink:MaD:6 |
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | |
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | provenance | |
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:16:122:22 | [post] tainted | provenance | MaD:20 |
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:25:122:25 | [post] y | provenance | MaD:20 |
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:33:122:33 | [post] z | provenance | MaD:20 |
@@ -292,8 +292,8 @@ edges
| summaries.rb:128:1:128:1 | [post] x | summaries.rb:129:6:129:6 | x | provenance | |
| summaries.rb:128:14:128:20 | tainted | summaries.rb:128:1:128:1 | [post] x | provenance | MaD:21 |
| summaries.rb:131:16:131:22 | tainted | summaries.rb:131:1:131:23 | synthetic splat argument | provenance | Sink:MaD:4 |
| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | heuristic-callback Sink:MaD:6 |
| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | heuristic-callback Sink:MaD:6 |
| summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | heuristic-callback Sink:MaD:6 |
| summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | heuristic-callback Sink:MaD:6 |
nodes
| summaries.rb:1:11:1:36 | call to identity | semmle.label | call to identity |
| summaries.rb:1:11:1:36 | call to identity | semmle.label | call to identity |
@@ -361,12 +361,12 @@ nodes
| summaries.rb:48:24:48:41 | call to source | semmle.label | call to source |
| summaries.rb:51:6:51:31 | call to namedArg | semmle.label | call to namedArg |
| summaries.rb:51:24:51:30 | tainted | semmle.label | tainted |
| summaries.rb:53:1:53:4 | args [element :foo] | semmle.label | args [element :foo] |
| summaries.rb:53:8:53:33 | call to [] [element :foo] | semmle.label | call to [] [element :foo] |
| summaries.rb:53:1:53:4 | args : Hash [element :foo] | semmle.label | args : Hash [element :foo] |
| summaries.rb:53:8:53:33 | call to [] : Hash [element :foo] | semmle.label | call to [] : Hash [element :foo] |
| summaries.rb:53:15:53:31 | call to source | semmle.label | call to source |
| summaries.rb:54:6:54:25 | call to namedArg | semmle.label | call to namedArg |
| summaries.rb:54:19:54:24 | ** ... [element :foo] | semmle.label | ** ... [element :foo] |
| summaries.rb:54:21:54:24 | args [element :foo] | semmle.label | args [element :foo] |
| summaries.rb:54:19:54:24 | ** ... : Hash [element :foo] | semmle.label | ** ... : Hash [element :foo] |
| summaries.rb:54:21:54:24 | args : Hash [element :foo] | semmle.label | args : Hash [element :foo] |
| summaries.rb:56:6:56:29 | call to anyArg | semmle.label | call to anyArg |
| summaries.rb:56:22:56:28 | tainted | semmle.label | tainted |
| summaries.rb:57:6:57:24 | call to anyArg | semmle.label | call to anyArg |
@@ -382,124 +382,124 @@ nodes
| summaries.rb:73:24:73:53 | call to source | semmle.label | call to source |
| summaries.rb:76:8:76:57 | call to preserveTaint | semmle.label | call to preserveTaint |
| summaries.rb:76:26:76:56 | call to source | semmle.label | call to source |
| summaries.rb:79:1:79:1 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:79:1:79:1 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:79:1:79:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:79:1:79:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:79:5:79:47 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| summaries.rb:79:5:79:47 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| summaries.rb:79:5:79:47 | call to [] [element 2] | semmle.label | call to [] [element 2] |
| summaries.rb:79:5:79:47 | call to [] [element 2] | semmle.label | call to [] [element 2] |
| summaries.rb:79:1:79:1 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:79:1:79:1 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:79:1:79:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:79:1:79:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:79:5:79:47 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| summaries.rb:79:5:79:47 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| summaries.rb:79:5:79:47 | call to [] : Array [element 2] | semmle.label | call to [] : Array [element 2] |
| summaries.rb:79:5:79:47 | call to [] : Array [element 2] | semmle.label | call to [] : Array [element 2] |
| summaries.rb:79:15:79:29 | call to source | semmle.label | call to source |
| summaries.rb:79:15:79:29 | call to source | semmle.label | call to source |
| summaries.rb:79:32:79:46 | call to source | semmle.label | call to source |
| summaries.rb:79:32:79:46 | call to source | semmle.label | call to source |
| summaries.rb:81:1:81:1 | [post] a [element] | semmle.label | [post] a [element] |
| summaries.rb:81:1:81:1 | [post] a [element] | semmle.label | [post] a [element] |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | semmle.label | [post] a : [collection] [element] |
| summaries.rb:81:1:81:1 | [post] a : [collection] [element] | semmle.label | [post] a : [collection] [element] |
| summaries.rb:81:13:81:27 | call to source | semmle.label | call to source |
| summaries.rb:81:13:81:27 | call to source | semmle.label | call to source |
| summaries.rb:82:6:82:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:82:6:82:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:82:6:82:6 | a [element] | semmle.label | a [element] |
| summaries.rb:82:6:82:6 | a [element] | semmle.label | a [element] |
| summaries.rb:82:6:82:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:82:6:82:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:82:6:82:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:82:6:82:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:82:6:82:24 | call to readElementOne | semmle.label | call to readElementOne |
| summaries.rb:82:6:82:24 | call to readElementOne | semmle.label | call to readElementOne |
| summaries.rb:83:6:83:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:83:6:83:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:83:6:83:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:83:6:83:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:83:6:83:31 | call to readExactlyElementOne | semmle.label | call to readExactlyElementOne |
| summaries.rb:83:6:83:31 | call to readExactlyElementOne | semmle.label | call to readExactlyElementOne |
| summaries.rb:84:6:84:6 | a [element] | semmle.label | a [element] |
| summaries.rb:84:6:84:6 | a [element] | semmle.label | a [element] |
| summaries.rb:84:6:84:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:84:6:84:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:84:6:84:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:84:6:84:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:85:6:85:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:85:6:85:6 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:85:6:85:6 | a [element] | semmle.label | a [element] |
| summaries.rb:85:6:85:6 | a [element] | semmle.label | a [element] |
| summaries.rb:85:6:85:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:85:6:85:6 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:85:6:85:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:85:6:85:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:85:6:85:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:85:6:85:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:86:6:86:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:86:6:86:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:86:6:86:6 | a [element] | semmle.label | a [element] |
| summaries.rb:86:6:86:6 | a [element] | semmle.label | a [element] |
| summaries.rb:86:6:86:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:86:6:86:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:86:6:86:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:86:6:86:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:86:6:86:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:86:6:86:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:87:1:87:1 | b [element 1] | semmle.label | b [element 1] |
| summaries.rb:87:1:87:1 | b [element 1] | semmle.label | b [element 1] |
| summaries.rb:87:1:87:1 | b [element] | semmle.label | b [element] |
| summaries.rb:87:1:87:1 | b [element] | semmle.label | b [element] |
| summaries.rb:87:5:87:5 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:87:5:87:5 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:87:5:87:5 | a [element] | semmle.label | a [element] |
| summaries.rb:87:5:87:5 | a [element] | semmle.label | a [element] |
| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | semmle.label | call to withElementOne [element 1] |
| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | semmle.label | call to withElementOne [element 1] |
| summaries.rb:87:5:87:22 | call to withElementOne [element] | semmle.label | call to withElementOne [element] |
| summaries.rb:87:5:87:22 | call to withElementOne [element] | semmle.label | call to withElementOne [element] |
| summaries.rb:88:6:88:6 | b [element] | semmle.label | b [element] |
| summaries.rb:88:6:88:6 | b [element] | semmle.label | b [element] |
| summaries.rb:87:1:87:1 | b : Array [element 1] | semmle.label | b : Array [element 1] |
| summaries.rb:87:1:87:1 | b : Array [element 1] | semmle.label | b : Array [element 1] |
| summaries.rb:87:1:87:1 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:87:1:87:1 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:87:5:87:5 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:87:5:87:5 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:87:5:87:5 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:87:5:87:5 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | semmle.label | call to withElementOne : Array [element 1] |
| summaries.rb:87:5:87:22 | call to withElementOne : Array [element 1] | semmle.label | call to withElementOne : Array [element 1] |
| summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | semmle.label | call to withElementOne : [collection] [element] |
| summaries.rb:87:5:87:22 | call to withElementOne : [collection] [element] | semmle.label | call to withElementOne : [collection] [element] |
| summaries.rb:88:6:88:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:88:6:88:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:88:6:88:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:88:6:88:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:89:6:89:6 | b [element 1] | semmle.label | b [element 1] |
| summaries.rb:89:6:89:6 | b [element 1] | semmle.label | b [element 1] |
| summaries.rb:89:6:89:6 | b [element] | semmle.label | b [element] |
| summaries.rb:89:6:89:6 | b [element] | semmle.label | b [element] |
| summaries.rb:89:6:89:6 | b : Array [element 1] | semmle.label | b : Array [element 1] |
| summaries.rb:89:6:89:6 | b : Array [element 1] | semmle.label | b : Array [element 1] |
| summaries.rb:89:6:89:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:89:6:89:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:89:6:89:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:89:6:89:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:90:6:90:6 | b [element] | semmle.label | b [element] |
| summaries.rb:90:6:90:6 | b [element] | semmle.label | b [element] |
| summaries.rb:90:6:90:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:90:6:90:6 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| summaries.rb:90:6:90:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:90:6:90:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:91:1:91:1 | c [element 1] | semmle.label | c [element 1] |
| summaries.rb:91:1:91:1 | c [element 1] | semmle.label | c [element 1] |
| summaries.rb:91:5:91:5 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:91:5:91:5 | a [element 1] | semmle.label | a [element 1] |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | semmle.label | call to withExactlyElementOne [element 1] |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | semmle.label | call to withExactlyElementOne [element 1] |
| summaries.rb:93:6:93:6 | c [element 1] | semmle.label | c [element 1] |
| summaries.rb:93:6:93:6 | c [element 1] | semmle.label | c [element 1] |
| summaries.rb:91:1:91:1 | c : Array [element 1] | semmle.label | c : Array [element 1] |
| summaries.rb:91:1:91:1 | c : Array [element 1] | semmle.label | c : Array [element 1] |
| summaries.rb:91:5:91:5 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:91:5:91:5 | a : Array [element 1] | semmle.label | a : Array [element 1] |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | semmle.label | call to withExactlyElementOne : Array [element 1] |
| summaries.rb:91:5:91:29 | call to withExactlyElementOne : Array [element 1] | semmle.label | call to withExactlyElementOne : Array [element 1] |
| summaries.rb:93:6:93:6 | c : Array [element 1] | semmle.label | c : Array [element 1] |
| summaries.rb:93:6:93:6 | c : Array [element 1] | semmle.label | c : Array [element 1] |
| summaries.rb:93:6:93:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:93:6:93:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:95:1:95:1 | [post] a [element 2] | semmle.label | [post] a [element 2] |
| summaries.rb:95:1:95:1 | [post] a [element 2] | semmle.label | [post] a [element 2] |
| summaries.rb:95:1:95:1 | [post] a [element] | semmle.label | [post] a [element] |
| summaries.rb:95:1:95:1 | [post] a [element] | semmle.label | [post] a [element] |
| summaries.rb:95:1:95:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:95:1:95:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:95:1:95:1 | a [element] | semmle.label | a [element] |
| summaries.rb:95:1:95:1 | a [element] | semmle.label | a [element] |
| summaries.rb:96:6:96:6 | a [element] | semmle.label | a [element] |
| summaries.rb:96:6:96:6 | a [element] | semmle.label | a [element] |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | semmle.label | [post] a : Array [element 2] |
| summaries.rb:95:1:95:1 | [post] a : Array [element 2] | semmle.label | [post] a : Array [element 2] |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | semmle.label | [post] a : [collection] [element] |
| summaries.rb:95:1:95:1 | [post] a : [collection] [element] | semmle.label | [post] a : [collection] [element] |
| summaries.rb:95:1:95:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:95:1:95:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:95:1:95:1 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:95:1:95:1 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:96:6:96:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:96:6:96:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:96:6:96:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:96:6:96:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:97:6:97:6 | a [element] | semmle.label | a [element] |
| summaries.rb:97:6:97:6 | a [element] | semmle.label | a [element] |
| summaries.rb:97:6:97:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:97:6:97:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:97:6:97:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:97:6:97:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:98:6:98:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:98:6:98:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:98:6:98:6 | a [element] | semmle.label | a [element] |
| summaries.rb:98:6:98:6 | a [element] | semmle.label | a [element] |
| summaries.rb:98:6:98:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:98:6:98:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:98:6:98:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:98:6:98:6 | a : [collection] [element] | semmle.label | a : [collection] [element] |
| summaries.rb:98:6:98:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:98:6:98:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:99:1:99:1 | [post] a [element 2] | semmle.label | [post] a [element 2] |
| summaries.rb:99:1:99:1 | [post] a [element 2] | semmle.label | [post] a [element 2] |
| summaries.rb:99:1:99:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:99:1:99:1 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:102:6:102:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:102:6:102:6 | a [element 2] | semmle.label | a [element 2] |
| summaries.rb:99:1:99:1 | [post] a : Array [element 2] | semmle.label | [post] a : Array [element 2] |
| summaries.rb:99:1:99:1 | [post] a : Array [element 2] | semmle.label | [post] a : Array [element 2] |
| summaries.rb:99:1:99:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:99:1:99:1 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:102:6:102:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:102:6:102:6 | a : Array [element 2] | semmle.label | a : Array [element 2] |
| summaries.rb:102:6:102:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:102:6:102:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:103:1:103:1 | [post] d [element 3] | semmle.label | [post] d [element 3] |
| summaries.rb:103:1:103:1 | [post] d [element 3] | semmle.label | [post] d [element 3] |
| summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | semmle.label | [post] d : [collection] [element 3] |
| summaries.rb:103:1:103:1 | [post] d : [collection] [element 3] | semmle.label | [post] d : [collection] [element 3] |
| summaries.rb:103:8:103:22 | call to source | semmle.label | call to source |
| summaries.rb:103:8:103:22 | call to source | semmle.label | call to source |
| summaries.rb:104:1:104:1 | [post] d [element 3] | semmle.label | [post] d [element 3] |
| summaries.rb:104:1:104:1 | [post] d [element 3] | semmle.label | [post] d [element 3] |
| summaries.rb:104:1:104:1 | d [element 3] | semmle.label | d [element 3] |
| summaries.rb:104:1:104:1 | d [element 3] | semmle.label | d [element 3] |
| summaries.rb:108:6:108:6 | d [element 3] | semmle.label | d [element 3] |
| summaries.rb:108:6:108:6 | d [element 3] | semmle.label | d [element 3] |
| summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | semmle.label | [post] d : [collection] [element 3] |
| summaries.rb:104:1:104:1 | [post] d : [collection] [element 3] | semmle.label | [post] d : [collection] [element 3] |
| summaries.rb:104:1:104:1 | d : [collection] [element 3] | semmle.label | d : [collection] [element 3] |
| summaries.rb:104:1:104:1 | d : [collection] [element 3] | semmle.label | d : [collection] [element 3] |
| summaries.rb:108:6:108:6 | d : [collection] [element 3] | semmle.label | d : [collection] [element 3] |
| summaries.rb:108:6:108:6 | d : [collection] [element 3] | semmle.label | d : [collection] [element 3] |
| summaries.rb:108:6:108:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:108:6:108:9 | ...[...] | semmle.label | ...[...] |
| summaries.rb:111:1:111:1 | [post] x [@value] | semmle.label | [post] x [@value] |
@@ -545,8 +545,8 @@ nodes
| summaries.rb:155:28:155:34 | tainted | semmle.label | tainted |
| summaries.rb:156:27:156:33 | tainted | semmle.label | tainted |
| summaries.rb:156:27:156:33 | tainted | semmle.label | tainted |
| summaries.rb:157:14:160:3 | do ... end [captured tainted] | semmle.label | do ... end [captured tainted] |
| summaries.rb:157:14:160:3 | do ... end [captured tainted] | semmle.label | do ... end [captured tainted] |
| summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | semmle.label | do ... end : [lambda] [captured tainted] |
| summaries.rb:157:14:160:3 | do ... end : [lambda] [captured tainted] | semmle.label | do ... end : [lambda] [captured tainted] |
| summaries.rb:158:15:158:21 | tainted | semmle.label | tainted |
| summaries.rb:158:15:158:21 | tainted | semmle.label | tainted |
| summaries.rb:163:20:163:36 | call to source | semmle.label | call to source |

View File

@@ -0,0 +1,373 @@
models
edges
| types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | provenance | |
| types.rb:1:11:1:11 | x : C2 | types.rb:2:5:2:5 | x : C2 | provenance | |
| types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | provenance | |
| types.rb:20:5:22:7 | self in call_foo : C1 | types.rb:21:13:21:16 | self : C1 | provenance | |
| types.rb:20:5:22:7 | self in call_foo : C3 | types.rb:21:13:21:16 | self : C3 | provenance | |
| types.rb:21:13:21:16 | self : C1 | types.rb:52:9:52:9 | x : C1 | provenance | |
| types.rb:21:13:21:16 | self : C1 | types.rb:52:9:52:9 | x : C1 | provenance | |
| types.rb:21:13:21:16 | self : C3 | types.rb:52:9:52:9 | x : C3 | provenance | |
| types.rb:24:5:26:7 | self in call_bar : C1 | types.rb:25:13:25:16 | self : C1 | provenance | |
| types.rb:24:5:26:7 | self in call_bar : C3 | types.rb:25:13:25:16 | self : C3 | provenance | |
| types.rb:25:13:25:16 | self : C1 | types.rb:61:9:61:9 | x : C1 | provenance | |
| types.rb:25:13:25:16 | self : C1 | types.rb:61:9:61:9 | x : C1 | provenance | |
| types.rb:25:13:25:16 | self : C3 | types.rb:61:9:61:9 | x : C3 | provenance | |
| types.rb:31:5:33:7 | self in call_maybe_sink : C1 | types.rb:32:9:32:18 | self : C1 | provenance | |
| types.rb:31:5:33:7 | self in call_maybe_sink : C2 | types.rb:32:9:32:18 | self : C2 | provenance | |
| types.rb:31:5:33:7 | self in call_maybe_sink : C3 | types.rb:32:9:32:18 | self : C3 | provenance | |
| types.rb:32:9:32:18 | self : C1 | types.rb:41:5:43:7 | self in maybe_sink : C2 | provenance | |
| types.rb:32:9:32:18 | self : C1 | types.rb:47:5:49:7 | self in maybe_sink : C3 | provenance | |
| types.rb:32:9:32:18 | self : C2 | types.rb:41:5:43:7 | self in maybe_sink : C2 | provenance | |
| types.rb:32:9:32:18 | self : C3 | types.rb:47:5:49:7 | self in maybe_sink : C3 | provenance | |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C1 | types.rb:36:9:36:23 | self : C1 | provenance | |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C2 | types.rb:36:9:36:23 | self : C2 | provenance | |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C3 | types.rb:36:9:36:23 | self : C3 | provenance | |
| types.rb:36:9:36:23 | self : C1 | types.rb:31:5:33:7 | self in call_maybe_sink : C1 | provenance | |
| types.rb:36:9:36:23 | self : C2 | types.rb:31:5:33:7 | self in call_maybe_sink : C2 | provenance | |
| types.rb:36:9:36:23 | self : C3 | types.rb:31:5:33:7 | self in call_maybe_sink : C3 | provenance | |
| types.rb:41:5:43:7 | self in maybe_sink : C2 | types.rb:42:14:42:17 | self | provenance | |
| types.rb:47:5:49:7 | self in maybe_sink : C3 | types.rb:48:14:48:17 | self | provenance | |
| types.rb:52:9:52:9 | x : C1 | types.rb:55:18:55:18 | x | provenance | |
| types.rb:52:9:52:9 | x : C3 | types.rb:55:18:55:18 | x | provenance | |
| types.rb:61:9:61:9 | x : C1 | types.rb:63:18:63:19 | c3 : C3 | provenance | |
| types.rb:61:9:61:9 | x : C3 | types.rb:63:18:63:19 | c3 : C3 | provenance | |
| types.rb:63:18:63:19 | c3 : C3 | types.rb:64:18:64:19 | c3 | provenance | |
| types.rb:71:5:71:19 | call to taint : C1 | types.rb:52:9:52:9 | x : C1 | provenance | |
| types.rb:71:11:71:18 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | provenance | |
| types.rb:71:11:71:18 | call to new : C1 | types.rb:71:5:71:19 | call to taint : C1 | provenance | |
| types.rb:73:5:73:19 | call to taint : C3 | types.rb:52:9:52:9 | x : C3 | provenance | |
| types.rb:73:11:73:18 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | provenance | |
| types.rb:73:11:73:18 | call to new : C3 | types.rb:73:5:73:19 | call to taint : C3 | provenance | |
| types.rb:75:1:75:15 | call to taint : C1 | types.rb:20:5:22:7 | self in call_foo : C1 | provenance | |
| types.rb:75:7:75:14 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | provenance | |
| types.rb:75:7:75:14 | call to new : C1 | types.rb:75:1:75:15 | call to taint : C1 | provenance | |
| types.rb:77:1:77:15 | call to taint : C3 | types.rb:20:5:22:7 | self in call_foo : C3 | provenance | |
| types.rb:77:7:77:14 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | provenance | |
| types.rb:77:7:77:14 | call to new : C3 | types.rb:77:1:77:15 | call to taint : C3 | provenance | |
| types.rb:79:5:79:19 | call to taint : C1 | types.rb:61:9:61:9 | x : C1 | provenance | |
| types.rb:79:11:79:18 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | provenance | |
| types.rb:79:11:79:18 | call to new : C1 | types.rb:79:5:79:19 | call to taint : C1 | provenance | |
| types.rb:81:5:81:19 | call to taint : C3 | types.rb:61:9:61:9 | x : C3 | provenance | |
| types.rb:81:11:81:18 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | provenance | |
| types.rb:81:11:81:18 | call to new : C3 | types.rb:81:5:81:19 | call to taint : C3 | provenance | |
| types.rb:83:1:83:15 | call to taint : C1 | types.rb:24:5:26:7 | self in call_bar : C1 | provenance | |
| types.rb:83:7:83:14 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | provenance | |
| types.rb:83:7:83:14 | call to new : C1 | types.rb:83:1:83:15 | call to taint : C1 | provenance | |
| types.rb:85:1:85:16 | call to taint : C3 | types.rb:24:5:26:7 | self in call_bar : C3 | provenance | |
| types.rb:85:7:85:15 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | provenance | |
| types.rb:85:7:85:15 | call to new : C3 | types.rb:85:1:85:16 | call to taint : C3 | provenance | |
| types.rb:87:1:87:16 | call to taint : C1 | types.rb:35:5:37:7 | self in call_call_maybe_sink : C1 | provenance | |
| types.rb:87:7:87:15 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | provenance | |
| types.rb:87:7:87:15 | call to new : C1 | types.rb:87:1:87:16 | call to taint : C1 | provenance | |
| types.rb:88:1:88:16 | call to taint : C2 | types.rb:35:5:37:7 | self in call_call_maybe_sink : C2 | provenance | |
| types.rb:88:7:88:15 | call to new : C2 | types.rb:1:11:1:11 | x : C2 | provenance | |
| types.rb:88:7:88:15 | call to new : C2 | types.rb:88:1:88:16 | call to taint : C2 | provenance | |
| types.rb:89:1:89:16 | call to taint : C3 | types.rb:35:5:37:7 | self in call_call_maybe_sink : C3 | provenance | |
| types.rb:89:7:89:15 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | provenance | |
| types.rb:89:7:89:15 | call to new : C3 | types.rb:89:1:89:16 | call to taint : C3 | provenance | |
nodes
| types.rb:1:11:1:11 | x : C1 | semmle.label | x : C1 |
| types.rb:1:11:1:11 | x : C2 | semmle.label | x : C2 |
| types.rb:1:11:1:11 | x : C3 | semmle.label | x : C3 |
| types.rb:2:5:2:5 | x : C1 | semmle.label | x : C1 |
| types.rb:2:5:2:5 | x : C2 | semmle.label | x : C2 |
| types.rb:2:5:2:5 | x : C3 | semmle.label | x : C3 |
| types.rb:20:5:22:7 | self in call_foo : C1 | semmle.label | self in call_foo : C1 |
| types.rb:20:5:22:7 | self in call_foo : C3 | semmle.label | self in call_foo : C3 |
| types.rb:21:13:21:16 | self : C1 | semmle.label | self : C1 |
| types.rb:21:13:21:16 | self : C1 | semmle.label | self : C1 |
| types.rb:21:13:21:16 | self : C3 | semmle.label | self : C3 |
| types.rb:24:5:26:7 | self in call_bar : C1 | semmle.label | self in call_bar : C1 |
| types.rb:24:5:26:7 | self in call_bar : C3 | semmle.label | self in call_bar : C3 |
| types.rb:25:13:25:16 | self : C1 | semmle.label | self : C1 |
| types.rb:25:13:25:16 | self : C1 | semmle.label | self : C1 |
| types.rb:25:13:25:16 | self : C3 | semmle.label | self : C3 |
| types.rb:31:5:33:7 | self in call_maybe_sink : C1 | semmle.label | self in call_maybe_sink : C1 |
| types.rb:31:5:33:7 | self in call_maybe_sink : C2 | semmle.label | self in call_maybe_sink : C2 |
| types.rb:31:5:33:7 | self in call_maybe_sink : C3 | semmle.label | self in call_maybe_sink : C3 |
| types.rb:32:9:32:18 | self : C1 | semmle.label | self : C1 |
| types.rb:32:9:32:18 | self : C2 | semmle.label | self : C2 |
| types.rb:32:9:32:18 | self : C3 | semmle.label | self : C3 |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C1 | semmle.label | self in call_call_maybe_sink : C1 |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C2 | semmle.label | self in call_call_maybe_sink : C2 |
| types.rb:35:5:37:7 | self in call_call_maybe_sink : C3 | semmle.label | self in call_call_maybe_sink : C3 |
| types.rb:36:9:36:23 | self : C1 | semmle.label | self : C1 |
| types.rb:36:9:36:23 | self : C2 | semmle.label | self : C2 |
| types.rb:36:9:36:23 | self : C3 | semmle.label | self : C3 |
| types.rb:41:5:43:7 | self in maybe_sink : C2 | semmle.label | self in maybe_sink : C2 |
| types.rb:42:14:42:17 | self | semmle.label | self |
| types.rb:47:5:49:7 | self in maybe_sink : C3 | semmle.label | self in maybe_sink : C3 |
| types.rb:48:14:48:17 | self | semmle.label | self |
| types.rb:52:9:52:9 | x : C1 | semmle.label | x : C1 |
| types.rb:52:9:52:9 | x : C3 | semmle.label | x : C3 |
| types.rb:55:18:55:18 | x | semmle.label | x |
| types.rb:61:9:61:9 | x : C1 | semmle.label | x : C1 |
| types.rb:61:9:61:9 | x : C3 | semmle.label | x : C3 |
| types.rb:63:18:63:19 | c3 : C3 | semmle.label | c3 : C3 |
| types.rb:64:18:64:19 | c3 | semmle.label | c3 |
| types.rb:71:5:71:19 | call to taint : C1 | semmle.label | call to taint : C1 |
| types.rb:71:11:71:18 | call to new : C1 | semmle.label | call to new : C1 |
| types.rb:73:5:73:19 | call to taint : C3 | semmle.label | call to taint : C3 |
| types.rb:73:11:73:18 | call to new : C3 | semmle.label | call to new : C3 |
| types.rb:75:1:75:15 | call to taint : C1 | semmle.label | call to taint : C1 |
| types.rb:75:7:75:14 | call to new : C1 | semmle.label | call to new : C1 |
| types.rb:77:1:77:15 | call to taint : C3 | semmle.label | call to taint : C3 |
| types.rb:77:7:77:14 | call to new : C3 | semmle.label | call to new : C3 |
| types.rb:79:5:79:19 | call to taint : C1 | semmle.label | call to taint : C1 |
| types.rb:79:11:79:18 | call to new : C1 | semmle.label | call to new : C1 |
| types.rb:81:5:81:19 | call to taint : C3 | semmle.label | call to taint : C3 |
| types.rb:81:11:81:18 | call to new : C3 | semmle.label | call to new : C3 |
| types.rb:83:1:83:15 | call to taint : C1 | semmle.label | call to taint : C1 |
| types.rb:83:7:83:14 | call to new : C1 | semmle.label | call to new : C1 |
| types.rb:85:1:85:16 | call to taint : C3 | semmle.label | call to taint : C3 |
| types.rb:85:7:85:15 | call to new : C3 | semmle.label | call to new : C3 |
| types.rb:87:1:87:16 | call to taint : C1 | semmle.label | call to taint : C1 |
| types.rb:87:7:87:15 | call to new : C1 | semmle.label | call to new : C1 |
| types.rb:88:1:88:16 | call to taint : C2 | semmle.label | call to taint : C2 |
| types.rb:88:7:88:15 | call to new : C2 | semmle.label | call to new : C2 |
| types.rb:89:1:89:16 | call to taint : C3 | semmle.label | call to taint : C3 |
| types.rb:89:7:89:15 | call to new : C3 | semmle.label | call to new : C3 |
subpaths
| types.rb:71:11:71:18 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | types.rb:71:5:71:19 | call to taint : C1 |
| types.rb:73:11:73:18 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | types.rb:73:5:73:19 | call to taint : C3 |
| types.rb:75:7:75:14 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | types.rb:75:1:75:15 | call to taint : C1 |
| types.rb:77:7:77:14 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | types.rb:77:1:77:15 | call to taint : C3 |
| types.rb:79:11:79:18 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | types.rb:79:5:79:19 | call to taint : C1 |
| types.rb:81:11:81:18 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | types.rb:81:5:81:19 | call to taint : C3 |
| types.rb:83:7:83:14 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | types.rb:83:1:83:15 | call to taint : C1 |
| types.rb:85:7:85:15 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | types.rb:85:1:85:16 | call to taint : C3 |
| types.rb:87:7:87:15 | call to new : C1 | types.rb:1:11:1:11 | x : C1 | types.rb:2:5:2:5 | x : C1 | types.rb:87:1:87:16 | call to taint : C1 |
| types.rb:88:7:88:15 | call to new : C2 | types.rb:1:11:1:11 | x : C2 | types.rb:2:5:2:5 | x : C2 | types.rb:88:1:88:16 | call to taint : C2 |
| types.rb:89:7:89:15 | call to new : C3 | types.rb:1:11:1:11 | x : C3 | types.rb:2:5:2:5 | x : C3 | types.rb:89:1:89:16 | call to taint : C3 |
testFailures
nodeType
| file://:0:0:0:0 | [summary param] * (position 0) in Array.[] | file://:0:0:0:0 | Array |
| file://:0:0:0:0 | [summary param] ** in Hash.[] | file://:0:0:0:0 | Hash |
| file://:0:0:0:0 | [summary param] ** in I18n.translate | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] position 0 in & | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] position 0 in + | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] position 0 in Hash[] | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] position 0 in \| | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] self in & | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] self in * | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] self in - | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] self in \| | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary param] self in assoc-unknown-arg | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].Element[any] in Hash[] | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].WithElement[0..] in Array() | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].WithElement[any] in Array.new | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].WithElement[any] in Array.try_convert | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].WithElement[any] in Hash.try_convert | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[0].WithElement[any] in Hash[] | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[self].WithElement[any] in *(splat) | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[self].WithElement[any] in **(hash-splat) | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[self].WithElement[any] in + | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] read: Argument[self].WithElement[any] in << | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: Argument[self] in << | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in & | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in * | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in *(splat) | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in + | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in - | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in << | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in Array() | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in Array.new | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in Hash[] | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in \| | file://:0:0:0:0 | [collection] |
| file://:0:0:0:0 | [summary] to write: ReturnValue in assoc-unknown-arg | file://:0:0:0:0 | [collection] |
| types.rb:1:1:3:3 | &block | file://:0:0:0:0 | Proc |
| types.rb:1:1:3:3 | self in taint | file://:0:0:0:0 | Object |
| types.rb:1:1:3:3 | synthetic splat parameter | file://:0:0:0:0 | Array |
| types.rb:1:1:3:3 | taint | file://:0:0:0:0 | Symbol |
| types.rb:1:1:89:38 | self (types.rb) | file://:0:0:0:0 | Object |
| types.rb:1:1:89:38 | self in types.rb | file://:0:0:0:0 | Object |
| types.rb:5:1:7:3 | &block | file://:0:0:0:0 | Proc |
| types.rb:5:1:7:3 | self (sink) | file://:0:0:0:0 | Object |
| types.rb:5:1:7:3 | self in sink | file://:0:0:0:0 | Object |
| types.rb:5:1:7:3 | sink | file://:0:0:0:0 | Symbol |
| types.rb:5:1:7:3 | synthetic splat parameter | file://:0:0:0:0 | Array |
| types.rb:6:5:6:31 | self | file://:0:0:0:0 | Object |
| types.rb:6:5:6:31 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:6:10:6:31 | "SINK: #{...}" | file://:0:0:0:0 | String |
| types.rb:12:5:14:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:12:5:14:7 | initialize | file://:0:0:0:0 | Symbol |
| types.rb:12:5:14:7 | self (initialize) | types.rb:9:1:38:3 | C1 |
| types.rb:12:5:14:7 | self in initialize | types.rb:9:1:38:3 | C1 |
| types.rb:12:5:14:7 | synthetic splat parameter | file://:0:0:0:0 | Array |
| types.rb:13:9:13:14 | self | types.rb:9:1:38:3 | C1 |
| types.rb:16:5:18:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:16:5:18:7 | get_field | file://:0:0:0:0 | Symbol |
| types.rb:16:5:18:7 | self (get_field) | types.rb:9:1:38:3 | C1 |
| types.rb:16:5:18:7 | self in get_field | types.rb:9:1:38:3 | C1 |
| types.rb:17:9:17:14 | self | types.rb:9:1:38:3 | C1 |
| types.rb:20:5:22:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:20:5:22:7 | call_foo | file://:0:0:0:0 | Symbol |
| types.rb:20:5:22:7 | self (call_foo) | types.rb:9:1:38:3 | C1 |
| types.rb:20:5:22:7 | self in call_foo | types.rb:9:1:38:3 | C1 |
| types.rb:21:9:21:17 | self | types.rb:9:1:38:3 | C1 |
| types.rb:21:9:21:17 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:21:13:21:16 | self | types.rb:9:1:38:3 | C1 |
| types.rb:24:5:26:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:24:5:26:7 | call_bar | file://:0:0:0:0 | Symbol |
| types.rb:24:5:26:7 | self (call_bar) | types.rb:9:1:38:3 | C1 |
| types.rb:24:5:26:7 | self in call_bar | types.rb:9:1:38:3 | C1 |
| types.rb:25:9:25:17 | self | types.rb:9:1:38:3 | C1 |
| types.rb:25:9:25:17 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:25:13:25:16 | self | types.rb:9:1:38:3 | C1 |
| types.rb:28:5:29:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:28:5:29:7 | maybe_sink | file://:0:0:0:0 | Symbol |
| types.rb:28:5:29:7 | self in maybe_sink | types.rb:9:1:38:3 | C1 |
| types.rb:31:5:33:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:31:5:33:7 | call_maybe_sink | file://:0:0:0:0 | Symbol |
| types.rb:31:5:33:7 | self (call_maybe_sink) | types.rb:9:1:38:3 | C1 |
| types.rb:31:5:33:7 | self in call_maybe_sink | types.rb:9:1:38:3 | C1 |
| types.rb:32:9:32:18 | self | types.rb:9:1:38:3 | C1 |
| types.rb:35:5:37:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:35:5:37:7 | call_call_maybe_sink | file://:0:0:0:0 | Symbol |
| types.rb:35:5:37:7 | self (call_call_maybe_sink) | types.rb:9:1:38:3 | C1 |
| types.rb:35:5:37:7 | self in call_call_maybe_sink | types.rb:9:1:38:3 | C1 |
| types.rb:36:9:36:23 | self | types.rb:9:1:38:3 | C1 |
| types.rb:41:5:43:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:41:5:43:7 | maybe_sink | file://:0:0:0:0 | Symbol |
| types.rb:41:5:43:7 | self (maybe_sink) | types.rb:40:1:44:3 | C2 |
| types.rb:41:5:43:7 | self in maybe_sink | types.rb:40:1:44:3 | C2 |
| types.rb:42:9:42:17 | self | types.rb:40:1:44:3 | C2 |
| types.rb:42:9:42:17 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:42:14:42:17 | self | types.rb:40:1:44:3 | C2 |
| types.rb:47:5:49:7 | &block | file://:0:0:0:0 | Proc |
| types.rb:47:5:49:7 | maybe_sink | file://:0:0:0:0 | Symbol |
| types.rb:47:5:49:7 | self (maybe_sink) | types.rb:46:1:50:3 | C3 |
| types.rb:47:5:49:7 | self in maybe_sink | types.rb:46:1:50:3 | C3 |
| types.rb:48:9:48:17 | self | types.rb:46:1:50:3 | C3 |
| types.rb:48:9:48:17 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:48:14:48:17 | self | types.rb:46:1:50:3 | C3 |
| types.rb:52:1:59:3 | &block | file://:0:0:0:0 | Proc |
| types.rb:52:1:59:3 | foo | file://:0:0:0:0 | Symbol |
| types.rb:52:1:59:3 | self (foo) | file://:0:0:0:0 | Object |
| types.rb:52:1:59:3 | self in foo | file://:0:0:0:0 | Object |
| types.rb:52:1:59:3 | synthetic splat parameter | file://:0:0:0:0 | Array |
| types.rb:55:13:55:19 | self | file://:0:0:0:0 | Object |
| types.rb:55:13:55:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:55:18:55:18 | x | types.rb:46:1:50:3 | C3 |
| types.rb:56:18:56:18 | x | types.rb:46:1:50:3 | C3 |
| types.rb:56:33:56:39 | self | file://:0:0:0:0 | Object |
| types.rb:56:33:56:39 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:56:38:56:38 | x | types.rb:40:1:44:3 | C2 |
| types.rb:61:1:69:3 | &block | file://:0:0:0:0 | Proc |
| types.rb:61:1:69:3 | bar | file://:0:0:0:0 | Symbol |
| types.rb:61:1:69:3 | self (bar) | file://:0:0:0:0 | Object |
| types.rb:61:1:69:3 | self in bar | file://:0:0:0:0 | Object |
| types.rb:61:1:69:3 | synthetic splat parameter | file://:0:0:0:0 | Array |
| types.rb:63:18:63:19 | c3 | types.rb:46:1:50:3 | C3 |
| types.rb:64:13:64:20 | self | file://:0:0:0:0 | Object |
| types.rb:64:13:64:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:64:18:64:19 | c3 | types.rb:46:1:50:3 | C3 |
| types.rb:65:18:65:19 | c3 | types.rb:46:1:50:3 | C3 |
| types.rb:65:34:65:41 | self | file://:0:0:0:0 | Object |
| types.rb:65:34:65:41 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:65:39:65:40 | c3 | types.rb:40:1:44:3 | C2 |
| types.rb:71:1:71:20 | self | file://:0:0:0:0 | Object |
| types.rb:71:1:71:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:71:5:71:19 | self | file://:0:0:0:0 | Object |
| types.rb:71:5:71:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:71:11:71:18 | call to new | types.rb:9:1:38:3 | C1 |
| types.rb:71:11:71:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:71:18:71:18 | 0 | file://:0:0:0:0 | Integer |
| types.rb:72:1:72:20 | self | file://:0:0:0:0 | Object |
| types.rb:72:1:72:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:72:5:72:19 | self | file://:0:0:0:0 | Object |
| types.rb:72:5:72:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:72:11:72:18 | call to new | types.rb:40:1:44:3 | C2 |
| types.rb:72:11:72:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:72:18:72:18 | 1 | file://:0:0:0:0 | Integer |
| types.rb:73:1:73:20 | self | file://:0:0:0:0 | Object |
| types.rb:73:1:73:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:73:5:73:19 | self | file://:0:0:0:0 | Object |
| types.rb:73:5:73:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:73:11:73:18 | call to new | types.rb:46:1:50:3 | C3 |
| types.rb:73:11:73:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:73:18:73:18 | 2 | file://:0:0:0:0 | Integer |
| types.rb:75:1:75:15 | self | file://:0:0:0:0 | Object |
| types.rb:75:1:75:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:75:7:75:14 | call to new | types.rb:9:1:38:3 | C1 |
| types.rb:75:7:75:14 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:75:14:75:14 | 3 | file://:0:0:0:0 | Integer |
| types.rb:76:1:76:15 | self | file://:0:0:0:0 | Object |
| types.rb:76:1:76:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:76:7:76:14 | call to new | types.rb:40:1:44:3 | C2 |
| types.rb:76:7:76:14 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:76:14:76:14 | 4 | file://:0:0:0:0 | Integer |
| types.rb:77:1:77:15 | self | file://:0:0:0:0 | Object |
| types.rb:77:1:77:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:77:7:77:14 | call to new | types.rb:46:1:50:3 | C3 |
| types.rb:77:7:77:14 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:77:14:77:14 | 5 | file://:0:0:0:0 | Integer |
| types.rb:79:1:79:20 | self | file://:0:0:0:0 | Object |
| types.rb:79:1:79:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:79:5:79:19 | self | file://:0:0:0:0 | Object |
| types.rb:79:5:79:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:79:11:79:18 | call to new | types.rb:9:1:38:3 | C1 |
| types.rb:79:11:79:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:79:18:79:18 | 6 | file://:0:0:0:0 | Integer |
| types.rb:80:1:80:20 | self | file://:0:0:0:0 | Object |
| types.rb:80:1:80:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:80:5:80:19 | self | file://:0:0:0:0 | Object |
| types.rb:80:5:80:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:80:11:80:18 | call to new | types.rb:40:1:44:3 | C2 |
| types.rb:80:11:80:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:80:18:80:18 | 7 | file://:0:0:0:0 | Integer |
| types.rb:81:1:81:20 | self | file://:0:0:0:0 | Object |
| types.rb:81:1:81:20 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:81:5:81:19 | self | file://:0:0:0:0 | Object |
| types.rb:81:5:81:19 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:81:11:81:18 | call to new | types.rb:46:1:50:3 | C3 |
| types.rb:81:11:81:18 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:81:18:81:18 | 8 | file://:0:0:0:0 | Integer |
| types.rb:83:1:83:15 | self | file://:0:0:0:0 | Object |
| types.rb:83:1:83:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:83:7:83:14 | call to new | types.rb:9:1:38:3 | C1 |
| types.rb:83:7:83:14 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:83:14:83:14 | 9 | file://:0:0:0:0 | Integer |
| types.rb:84:1:84:16 | self | file://:0:0:0:0 | Object |
| types.rb:84:1:84:16 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:84:7:84:15 | call to new | types.rb:40:1:44:3 | C2 |
| types.rb:84:7:84:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:84:14:84:15 | 10 | file://:0:0:0:0 | Integer |
| types.rb:85:1:85:16 | self | file://:0:0:0:0 | Object |
| types.rb:85:1:85:16 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:85:7:85:15 | call to new | types.rb:46:1:50:3 | C3 |
| types.rb:85:7:85:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:85:14:85:15 | 11 | file://:0:0:0:0 | Integer |
| types.rb:87:1:87:16 | self | file://:0:0:0:0 | Object |
| types.rb:87:1:87:16 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:87:7:87:15 | call to new | types.rb:9:1:38:3 | C1 |
| types.rb:87:7:87:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:87:14:87:15 | 12 | file://:0:0:0:0 | Integer |
| types.rb:88:1:88:16 | self | file://:0:0:0:0 | Object |
| types.rb:88:1:88:16 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:88:7:88:15 | call to new | types.rb:40:1:44:3 | C2 |
| types.rb:88:7:88:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:88:14:88:15 | 13 | file://:0:0:0:0 | Integer |
| types.rb:89:1:89:16 | self | file://:0:0:0:0 | Object |
| types.rb:89:1:89:16 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:89:7:89:15 | call to new | types.rb:46:1:50:3 | C3 |
| types.rb:89:7:89:15 | synthetic splat argument | file://:0:0:0:0 | Array |
| types.rb:89:14:89:15 | 14 | file://:0:0:0:0 | Integer |
#select
| types.rb:42:14:42:17 | self | types.rb:42:14:42:17 | self | types.rb:42:14:42:17 | self | $@ | types.rb:42:14:42:17 | self | self |
| types.rb:42:14:42:17 | self | types.rb:87:7:87:15 | call to new : C1 | types.rb:42:14:42:17 | self | $@ | types.rb:87:7:87:15 | call to new : C1 | call to new : C1 |
| types.rb:42:14:42:17 | self | types.rb:88:7:88:15 | call to new : C2 | types.rb:42:14:42:17 | self | $@ | types.rb:88:7:88:15 | call to new : C2 | call to new : C2 |
| types.rb:48:14:48:17 | self | types.rb:48:14:48:17 | self | types.rb:48:14:48:17 | self | $@ | types.rb:48:14:48:17 | self | self |
| types.rb:48:14:48:17 | self | types.rb:87:7:87:15 | call to new : C1 | types.rb:48:14:48:17 | self | $@ | types.rb:87:7:87:15 | call to new : C1 | call to new : C1 |
| types.rb:48:14:48:17 | self | types.rb:89:7:89:15 | call to new : C3 | types.rb:48:14:48:17 | self | $@ | types.rb:89:7:89:15 | call to new : C3 | call to new : C3 |
| types.rb:55:18:55:18 | x | types.rb:21:13:21:16 | self : C1 | types.rb:55:18:55:18 | x | $@ | types.rb:21:13:21:16 | self : C1 | self : C1 |
| types.rb:55:18:55:18 | x | types.rb:71:11:71:18 | call to new : C1 | types.rb:55:18:55:18 | x | $@ | types.rb:71:11:71:18 | call to new : C1 | call to new : C1 |
| types.rb:55:18:55:18 | x | types.rb:73:11:73:18 | call to new : C3 | types.rb:55:18:55:18 | x | $@ | types.rb:73:11:73:18 | call to new : C3 | call to new : C3 |
| types.rb:55:18:55:18 | x | types.rb:75:7:75:14 | call to new : C1 | types.rb:55:18:55:18 | x | $@ | types.rb:75:7:75:14 | call to new : C1 | call to new : C1 |
| types.rb:55:18:55:18 | x | types.rb:77:7:77:14 | call to new : C3 | types.rb:55:18:55:18 | x | $@ | types.rb:77:7:77:14 | call to new : C3 | call to new : C3 |
| types.rb:64:18:64:19 | c3 | types.rb:25:13:25:16 | self : C1 | types.rb:64:18:64:19 | c3 | $@ | types.rb:25:13:25:16 | self : C1 | self : C1 |
| types.rb:64:18:64:19 | c3 | types.rb:79:11:79:18 | call to new : C1 | types.rb:64:18:64:19 | c3 | $@ | types.rb:79:11:79:18 | call to new : C1 | call to new : C1 |
| types.rb:64:18:64:19 | c3 | types.rb:81:11:81:18 | call to new : C3 | types.rb:64:18:64:19 | c3 | $@ | types.rb:81:11:81:18 | call to new : C3 | call to new : C3 |
| types.rb:64:18:64:19 | c3 | types.rb:83:7:83:14 | call to new : C1 | types.rb:64:18:64:19 | c3 | $@ | types.rb:83:7:83:14 | call to new : C1 | call to new : C1 |
| types.rb:64:18:64:19 | c3 | types.rb:85:7:85:15 | call to new : C3 | types.rb:64:18:64:19 | c3 | $@ | types.rb:85:7:85:15 | call to new : C3 | call to new : C3 |

View File

@@ -0,0 +1,54 @@
/**
* @kind path-problem
*/
import codeql.ruby.AST
import codeql.ruby.DataFlow
private import utils.test.InlineFlowTest
private import codeql.ruby.dataflow.internal.DataFlowPrivate
private import codeql.ruby.dataflow.internal.DataFlowDispatch
query predicate nodeType(DataFlow::Node node, DataFlowType tp) {
tp = getNodeType(node) and
not tp.isUnknown()
}
private predicate isSource(DataFlow::Node source, string s) {
exists(MethodCall taint, MethodCall new |
taint.getMethodName() = "taint" and
new.getMethodName() = "new" and
source.asExpr().getExpr() = new and
new = taint.getAnArgument() and
s = new.getAnArgument().getConstantValue().toString()
)
or
exists(SelfVariableAccess self, Module m |
self = source.asExpr().getExpr() and
not self.isSynthesized() and
selfInMethod(self.getVariable(), _, m) and
s = "self(" + m.getQualifiedName() + ")"
)
}
private module FlowConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) { isSource(source, _) }
predicate isSink(DataFlow::Node sink) {
exists(MethodCall mc | mc.getMethodName() = "sink" |
sink.asExpr().getExpr() = mc.getAnArgument()
)
}
}
bindingset[src, sink]
pragma[inline_late]
string getArgString(DataFlow::Node src, DataFlow::Node sink) {
isSource(src, result) and exists(sink)
}
import ValueFlowTestArgString<FlowConfig, getArgString/2>
import PathGraph
from PathNode source, PathNode sink
where flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString()

View File

@@ -0,0 +1,89 @@
def taint x
x
end
def sink x
puts "SINK: #{x.get_field}"
end
class C1
@field
def initialize(x)
@field = x
end
def get_field
@field
end
def call_foo
foo(self)
end
def call_bar
bar(self)
end
def maybe_sink
end
def call_maybe_sink
maybe_sink
end
def call_call_maybe_sink
call_maybe_sink
end
end
class C2 < C1
def maybe_sink
sink self # $ hasValueFlow=13 $ hasValueFlow=self(C2) $ SPURIOUS: hasValueFlow=12
end
end
class C3 < C1
def maybe_sink
sink self # $ hasValueFlow=14 $ hasValueFlow=self(C3) $ SPURIOUS: hasValueFlow=12
end
end
def foo x
case x
when C3 then
sink(x) # $ hasValueFlow=2 $ hasValueFlow=5 $ hasValueFlow=self(C1) $ SPURIOUS: hasValueFlow=0 $ SPURIOUS: hasValueFlow=3
case x when C2 then sink(x) # dead code
end
end
end
def bar x
case x
in C3 => c3 then
sink(c3) # $ hasValueFlow=8 $ hasValueFlow=11 $ hasValueFlow=self(C1) $ SPURIOUS: hasValueFlow=6 $ SPURIOUS: hasValueFlow=9
case c3 when C2 then sink(c3) # dead code
end
else return
end
end
foo(taint(C1.new 0))
foo(taint(C2.new 1))
foo(taint(C3.new 2))
taint(C1.new 3).call_foo
taint(C2.new 4).call_foo
taint(C3.new 5).call_foo
bar(taint(C1.new 6))
bar(taint(C2.new 7))
bar(taint(C3.new 8))
taint(C1.new 9).call_bar
taint(C2.new 10).call_bar
taint(C3.new 11).call_bar
taint(C1.new 12).call_call_maybe_sink
taint(C2.new 13).call_call_maybe_sink
taint(C3.new 14).call_call_maybe_sink

View File

@@ -1,37 +1,37 @@
models
edges
| filter_flow.rb:14:5:14:8 | [post] self [@foo] | filter_flow.rb:17:3:18:5 | self in b [@foo] | provenance | |
| filter_flow.rb:14:5:14:8 | [post] self [@foo] | filter_flow.rb:17:3:18:5 | self in b : OneController [@foo] | provenance | |
| filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:14:12:14:23 | ...[...] | provenance | |
| filter_flow.rb:14:12:14:23 | ...[...] | filter_flow.rb:14:5:14:8 | [post] self [@foo] | provenance | |
| filter_flow.rb:17:3:18:5 | self in b [@foo] | filter_flow.rb:20:3:22:5 | self in c [@foo] | provenance | |
| filter_flow.rb:20:3:22:5 | self in c [@foo] | filter_flow.rb:21:10:21:13 | self [@foo] | provenance | |
| filter_flow.rb:21:10:21:13 | self [@foo] | filter_flow.rb:21:10:21:13 | @foo | provenance | |
| filter_flow.rb:30:5:30:8 | [post] self [@foo] | filter_flow.rb:33:3:35:5 | self in b [@foo] | provenance | |
| filter_flow.rb:17:3:18:5 | self in b : OneController [@foo] | filter_flow.rb:20:3:22:5 | self in c : OneController [@foo] | provenance | |
| filter_flow.rb:20:3:22:5 | self in c : OneController [@foo] | filter_flow.rb:21:10:21:13 | self : OneController [@foo] | provenance | |
| filter_flow.rb:21:10:21:13 | self : OneController [@foo] | filter_flow.rb:21:10:21:13 | @foo | provenance | |
| filter_flow.rb:30:5:30:8 | [post] self [@foo] | filter_flow.rb:33:3:35:5 | self in b : TwoController [@foo] | provenance | |
| filter_flow.rb:30:12:30:17 | call to params | filter_flow.rb:30:12:30:23 | ...[...] | provenance | |
| filter_flow.rb:30:12:30:23 | ...[...] | filter_flow.rb:30:5:30:8 | [post] self [@foo] | provenance | |
| filter_flow.rb:33:3:35:5 | self in b [@foo] | filter_flow.rb:37:3:39:5 | self in c [@foo] | provenance | |
| filter_flow.rb:37:3:39:5 | self in c [@foo] | filter_flow.rb:38:10:38:13 | self [@foo] | provenance | |
| filter_flow.rb:38:10:38:13 | self [@foo] | filter_flow.rb:38:10:38:13 | @foo | provenance | |
| filter_flow.rb:47:5:47:8 | [post] self [@foo] | filter_flow.rb:51:3:52:5 | self in b [@foo] | provenance | |
| filter_flow.rb:33:3:35:5 | self in b : TwoController [@foo] | filter_flow.rb:37:3:39:5 | self in c : TwoController [@foo] | provenance | |
| filter_flow.rb:37:3:39:5 | self in c : TwoController [@foo] | filter_flow.rb:38:10:38:13 | self : TwoController [@foo] | provenance | |
| filter_flow.rb:38:10:38:13 | self : TwoController [@foo] | filter_flow.rb:38:10:38:13 | @foo | provenance | |
| filter_flow.rb:47:5:47:8 | [post] self [@foo] | filter_flow.rb:51:3:52:5 | self in b : ThreeController [@foo] | provenance | |
| filter_flow.rb:47:12:47:17 | call to params | filter_flow.rb:47:12:47:23 | ...[...] | provenance | |
| filter_flow.rb:47:12:47:23 | ...[...] | filter_flow.rb:47:5:47:8 | [post] self [@foo] | provenance | |
| filter_flow.rb:51:3:52:5 | self in b [@foo] | filter_flow.rb:54:3:56:5 | self in c [@foo] | provenance | |
| filter_flow.rb:54:3:56:5 | self in c [@foo] | filter_flow.rb:55:10:55:13 | self [@foo] | provenance | |
| filter_flow.rb:55:10:55:13 | self [@foo] | filter_flow.rb:55:10:55:13 | @foo | provenance | |
| filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | provenance | |
| filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | provenance | |
| filter_flow.rb:51:3:52:5 | self in b : ThreeController [@foo] | filter_flow.rb:54:3:56:5 | self in c : ThreeController [@foo] | provenance | |
| filter_flow.rb:54:3:56:5 | self in c : ThreeController [@foo] | filter_flow.rb:55:10:55:13 | self : ThreeController [@foo] | provenance | |
| filter_flow.rb:55:10:55:13 | self : ThreeController [@foo] | filter_flow.rb:55:10:55:13 | @foo | provenance | |
| filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | filter_flow.rb:64:5:64:8 | [post] self : FourController [@foo, @bar] | provenance | |
| filter_flow.rb:64:5:64:8 | [post] self : FourController [@foo, @bar] | filter_flow.rb:67:3:68:5 | self in b : FourController [@foo, @bar] | provenance | |
| filter_flow.rb:64:16:64:21 | call to params | filter_flow.rb:64:16:64:27 | ...[...] | provenance | |
| filter_flow.rb:64:16:64:27 | ...[...] | filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | provenance | |
| filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | provenance | |
| filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | filter_flow.rb:71:10:71:13 | self [@foo, @bar] | provenance | |
| filter_flow.rb:67:3:68:5 | self in b : FourController [@foo, @bar] | filter_flow.rb:70:3:72:5 | self in c : FourController [@foo, @bar] | provenance | |
| filter_flow.rb:70:3:72:5 | self in c : FourController [@foo, @bar] | filter_flow.rb:71:10:71:13 | self : FourController [@foo, @bar] | provenance | |
| filter_flow.rb:71:10:71:13 | @foo [@bar] | filter_flow.rb:71:10:71:17 | call to bar | provenance | |
| filter_flow.rb:71:10:71:13 | self [@foo, @bar] | filter_flow.rb:71:10:71:13 | @foo [@bar] | provenance | |
| filter_flow.rb:80:5:80:8 | [post] self [@foo] | filter_flow.rb:83:3:84:5 | self in b [@foo] | provenance | |
| filter_flow.rb:83:3:84:5 | self in b [@foo] | filter_flow.rb:86:3:88:5 | self in c [@foo] | provenance | |
| filter_flow.rb:86:3:88:5 | self in c [@foo] | filter_flow.rb:87:11:87:14 | self [@foo] | provenance | |
| filter_flow.rb:87:11:87:14 | self [@foo] | filter_flow.rb:87:11:87:14 | @foo | provenance | |
| filter_flow.rb:90:3:92:5 | self in taint_foo [Return] [@foo] | filter_flow.rb:80:5:80:8 | [post] self [@foo] | provenance | |
| filter_flow.rb:91:5:91:8 | [post] self [@foo] | filter_flow.rb:90:3:92:5 | self in taint_foo [Return] [@foo] | provenance | |
| filter_flow.rb:71:10:71:13 | self : FourController [@foo, @bar] | filter_flow.rb:71:10:71:13 | @foo [@bar] | provenance | |
| filter_flow.rb:80:5:80:8 | [post] self : FiveController [@foo] | filter_flow.rb:83:3:84:5 | self in b : FiveController [@foo] | provenance | |
| filter_flow.rb:83:3:84:5 | self in b : FiveController [@foo] | filter_flow.rb:86:3:88:5 | self in c : FiveController [@foo] | provenance | |
| filter_flow.rb:86:3:88:5 | self in c : FiveController [@foo] | filter_flow.rb:87:11:87:14 | self : FiveController [@foo] | provenance | |
| filter_flow.rb:87:11:87:14 | self : FiveController [@foo] | filter_flow.rb:87:11:87:14 | @foo | provenance | |
| filter_flow.rb:90:3:92:5 | self in taint_foo [Return] : FiveController [@foo] | filter_flow.rb:80:5:80:8 | [post] self : FiveController [@foo] | provenance | |
| filter_flow.rb:91:5:91:8 | [post] self [@foo] | filter_flow.rb:90:3:92:5 | self in taint_foo [Return] : FiveController [@foo] | provenance | |
| filter_flow.rb:91:12:91:17 | call to params | filter_flow.rb:91:12:91:23 | ...[...] | provenance | |
| filter_flow.rb:91:12:91:23 | ...[...] | filter_flow.rb:91:5:91:8 | [post] self [@foo] | provenance | |
| params_flow.rb:3:10:3:15 | call to params | params_flow.rb:3:10:3:19 | ...[...] | provenance | |
@@ -69,9 +69,9 @@ edges
| params_flow.rb:126:10:126:15 | call to params | params_flow.rb:126:10:126:30 | call to merge! | provenance | |
| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! | provenance | |
| params_flow.rb:130:5:130:5 | [post] p | params_flow.rb:131:10:131:10 | p | provenance | |
| params_flow.rb:130:5:130:5 | [post] p [element 0] | params_flow.rb:131:10:131:10 | p | provenance | |
| params_flow.rb:130:5:130:5 | [post] p : Array [element 0] | params_flow.rb:131:10:131:10 | p | provenance | |
| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p | provenance | |
| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p [element 0] | provenance | |
| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p : Array [element 0] | provenance | |
| params_flow.rb:135:10:135:15 | call to params | params_flow.rb:135:10:135:38 | call to reverse_merge! | provenance | |
| params_flow.rb:136:32:136:37 | call to params | params_flow.rb:136:10:136:38 | call to reverse_merge! | provenance | |
| params_flow.rb:139:5:139:5 | [post] p | params_flow.rb:140:10:140:10 | p | provenance | |
@@ -109,39 +109,39 @@ nodes
| filter_flow.rb:14:5:14:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| filter_flow.rb:14:12:14:17 | call to params | semmle.label | call to params |
| filter_flow.rb:14:12:14:23 | ...[...] | semmle.label | ...[...] |
| filter_flow.rb:17:3:18:5 | self in b [@foo] | semmle.label | self in b [@foo] |
| filter_flow.rb:20:3:22:5 | self in c [@foo] | semmle.label | self in c [@foo] |
| filter_flow.rb:17:3:18:5 | self in b : OneController [@foo] | semmle.label | self in b : OneController [@foo] |
| filter_flow.rb:20:3:22:5 | self in c : OneController [@foo] | semmle.label | self in c : OneController [@foo] |
| filter_flow.rb:21:10:21:13 | @foo | semmle.label | @foo |
| filter_flow.rb:21:10:21:13 | self [@foo] | semmle.label | self [@foo] |
| filter_flow.rb:21:10:21:13 | self : OneController [@foo] | semmle.label | self : OneController [@foo] |
| filter_flow.rb:30:5:30:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| filter_flow.rb:30:12:30:17 | call to params | semmle.label | call to params |
| filter_flow.rb:30:12:30:23 | ...[...] | semmle.label | ...[...] |
| filter_flow.rb:33:3:35:5 | self in b [@foo] | semmle.label | self in b [@foo] |
| filter_flow.rb:37:3:39:5 | self in c [@foo] | semmle.label | self in c [@foo] |
| filter_flow.rb:33:3:35:5 | self in b : TwoController [@foo] | semmle.label | self in b : TwoController [@foo] |
| filter_flow.rb:37:3:39:5 | self in c : TwoController [@foo] | semmle.label | self in c : TwoController [@foo] |
| filter_flow.rb:38:10:38:13 | @foo | semmle.label | @foo |
| filter_flow.rb:38:10:38:13 | self [@foo] | semmle.label | self [@foo] |
| filter_flow.rb:38:10:38:13 | self : TwoController [@foo] | semmle.label | self : TwoController [@foo] |
| filter_flow.rb:47:5:47:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| filter_flow.rb:47:12:47:17 | call to params | semmle.label | call to params |
| filter_flow.rb:47:12:47:23 | ...[...] | semmle.label | ...[...] |
| filter_flow.rb:51:3:52:5 | self in b [@foo] | semmle.label | self in b [@foo] |
| filter_flow.rb:54:3:56:5 | self in c [@foo] | semmle.label | self in c [@foo] |
| filter_flow.rb:51:3:52:5 | self in b : ThreeController [@foo] | semmle.label | self in b : ThreeController [@foo] |
| filter_flow.rb:54:3:56:5 | self in c : ThreeController [@foo] | semmle.label | self in c : ThreeController [@foo] |
| filter_flow.rb:55:10:55:13 | @foo | semmle.label | @foo |
| filter_flow.rb:55:10:55:13 | self [@foo] | semmle.label | self [@foo] |
| filter_flow.rb:55:10:55:13 | self : ThreeController [@foo] | semmle.label | self : ThreeController [@foo] |
| filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | semmle.label | [post] @foo [@bar] |
| filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | semmle.label | [post] self [@foo, @bar] |
| filter_flow.rb:64:5:64:8 | [post] self : FourController [@foo, @bar] | semmle.label | [post] self : FourController [@foo, @bar] |
| filter_flow.rb:64:16:64:21 | call to params | semmle.label | call to params |
| filter_flow.rb:64:16:64:27 | ...[...] | semmle.label | ...[...] |
| filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | semmle.label | self in b [@foo, @bar] |
| filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | semmle.label | self in c [@foo, @bar] |
| filter_flow.rb:67:3:68:5 | self in b : FourController [@foo, @bar] | semmle.label | self in b : FourController [@foo, @bar] |
| filter_flow.rb:70:3:72:5 | self in c : FourController [@foo, @bar] | semmle.label | self in c : FourController [@foo, @bar] |
| filter_flow.rb:71:10:71:13 | @foo [@bar] | semmle.label | @foo [@bar] |
| filter_flow.rb:71:10:71:13 | self [@foo, @bar] | semmle.label | self [@foo, @bar] |
| filter_flow.rb:71:10:71:13 | self : FourController [@foo, @bar] | semmle.label | self : FourController [@foo, @bar] |
| filter_flow.rb:71:10:71:17 | call to bar | semmle.label | call to bar |
| filter_flow.rb:80:5:80:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| filter_flow.rb:83:3:84:5 | self in b [@foo] | semmle.label | self in b [@foo] |
| filter_flow.rb:86:3:88:5 | self in c [@foo] | semmle.label | self in c [@foo] |
| filter_flow.rb:80:5:80:8 | [post] self : FiveController [@foo] | semmle.label | [post] self : FiveController [@foo] |
| filter_flow.rb:83:3:84:5 | self in b : FiveController [@foo] | semmle.label | self in b : FiveController [@foo] |
| filter_flow.rb:86:3:88:5 | self in c : FiveController [@foo] | semmle.label | self in c : FiveController [@foo] |
| filter_flow.rb:87:11:87:14 | @foo | semmle.label | @foo |
| filter_flow.rb:87:11:87:14 | self [@foo] | semmle.label | self [@foo] |
| filter_flow.rb:90:3:92:5 | self in taint_foo [Return] [@foo] | semmle.label | self in taint_foo [Return] [@foo] |
| filter_flow.rb:87:11:87:14 | self : FiveController [@foo] | semmle.label | self : FiveController [@foo] |
| filter_flow.rb:90:3:92:5 | self in taint_foo [Return] : FiveController [@foo] | semmle.label | self in taint_foo [Return] : FiveController [@foo] |
| filter_flow.rb:91:5:91:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| filter_flow.rb:91:12:91:17 | call to params | semmle.label | call to params |
| filter_flow.rb:91:12:91:23 | ...[...] | semmle.label | ...[...] |
@@ -214,7 +214,7 @@ nodes
| params_flow.rb:127:10:127:30 | call to merge! | semmle.label | call to merge! |
| params_flow.rb:127:24:127:29 | call to params | semmle.label | call to params |
| params_flow.rb:130:5:130:5 | [post] p | semmle.label | [post] p |
| params_flow.rb:130:5:130:5 | [post] p [element 0] | semmle.label | [post] p [element 0] |
| params_flow.rb:130:5:130:5 | [post] p : Array [element 0] | semmle.label | [post] p : Array [element 0] |
| params_flow.rb:130:14:130:19 | call to params | semmle.label | call to params |
| params_flow.rb:131:10:131:10 | p | semmle.label | p |
| params_flow.rb:135:10:135:15 | call to params | semmle.label | call to params |

View File

@@ -1,53 +1,53 @@
models
edges
| active_support.rb:180:5:180:5 | x [element 0] | active_support.rb:181:9:181:9 | x [element 0] | provenance | |
| active_support.rb:180:9:180:18 | call to [] [element 0] | active_support.rb:180:5:180:5 | x [element 0] | provenance | |
| active_support.rb:180:10:180:17 | call to source | active_support.rb:180:9:180:18 | call to [] [element 0] | provenance | |
| active_support.rb:181:5:181:5 | y [element] | active_support.rb:182:10:182:10 | y [element] | provenance | |
| active_support.rb:181:9:181:9 | x [element 0] | active_support.rb:181:9:181:23 | call to compact_blank [element] | provenance | |
| active_support.rb:181:9:181:23 | call to compact_blank [element] | active_support.rb:181:5:181:5 | y [element] | provenance | |
| active_support.rb:182:10:182:10 | y [element] | active_support.rb:182:10:182:13 | ...[...] | provenance | |
| active_support.rb:186:5:186:5 | x [element 0] | active_support.rb:187:9:187:9 | x [element 0] | provenance | |
| active_support.rb:186:9:186:22 | call to [] [element 0] | active_support.rb:186:5:186:5 | x [element 0] | provenance | |
| active_support.rb:186:10:186:18 | call to source | active_support.rb:186:9:186:22 | call to [] [element 0] | provenance | |
| active_support.rb:187:5:187:5 | y [element] | active_support.rb:188:10:188:10 | y [element] | provenance | |
| active_support.rb:187:9:187:9 | x [element 0] | active_support.rb:187:9:187:21 | call to excluding [element] | provenance | |
| active_support.rb:187:9:187:21 | call to excluding [element] | active_support.rb:187:5:187:5 | y [element] | provenance | |
| active_support.rb:188:10:188:10 | y [element] | active_support.rb:188:10:188:13 | ...[...] | provenance | |
| active_support.rb:192:5:192:5 | x [element 0] | active_support.rb:193:9:193:9 | x [element 0] | provenance | |
| active_support.rb:192:9:192:22 | call to [] [element 0] | active_support.rb:192:5:192:5 | x [element 0] | provenance | |
| active_support.rb:192:10:192:18 | call to source | active_support.rb:192:9:192:22 | call to [] [element 0] | provenance | |
| active_support.rb:193:5:193:5 | y [element] | active_support.rb:194:10:194:10 | y [element] | provenance | |
| active_support.rb:193:9:193:9 | x [element 0] | active_support.rb:193:9:193:19 | call to without [element] | provenance | |
| active_support.rb:193:9:193:19 | call to without [element] | active_support.rb:193:5:193:5 | y [element] | provenance | |
| active_support.rb:194:10:194:10 | y [element] | active_support.rb:194:10:194:13 | ...[...] | provenance | |
| active_support.rb:198:5:198:5 | x [element 0] | active_support.rb:199:9:199:9 | x [element 0] | provenance | |
| active_support.rb:198:9:198:22 | call to [] [element 0] | active_support.rb:198:5:198:5 | x [element 0] | provenance | |
| active_support.rb:198:10:198:18 | call to source | active_support.rb:198:9:198:22 | call to [] [element 0] | provenance | |
| active_support.rb:199:5:199:5 | y [element] | active_support.rb:200:10:200:10 | y [element] | provenance | |
| active_support.rb:199:9:199:9 | x [element 0] | active_support.rb:199:9:199:37 | call to in_order_of [element] | provenance | |
| active_support.rb:199:9:199:37 | call to in_order_of [element] | active_support.rb:199:5:199:5 | y [element] | provenance | |
| active_support.rb:200:10:200:10 | y [element] | active_support.rb:200:10:200:13 | ...[...] | provenance | |
| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:205:9:205:9 | a [element 0] | provenance | |
| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:206:10:206:10 | a [element 0] | provenance | |
| active_support.rb:204:9:204:22 | call to [] [element 0] | active_support.rb:204:5:204:5 | a [element 0] | provenance | |
| active_support.rb:204:10:204:18 | call to source | active_support.rb:204:9:204:22 | call to [] [element 0] | provenance | |
| active_support.rb:205:5:205:5 | b [element 0] | active_support.rb:208:10:208:10 | b [element 0] | provenance | |
| active_support.rb:205:5:205:5 | b [element] | active_support.rb:208:10:208:10 | b [element] | provenance | |
| active_support.rb:205:5:205:5 | b [element] | active_support.rb:209:10:209:10 | b [element] | provenance | |
| active_support.rb:205:5:205:5 | b [element] | active_support.rb:210:10:210:10 | b [element] | provenance | |
| active_support.rb:205:5:205:5 | b [element] | active_support.rb:211:10:211:10 | b [element] | provenance | |
| active_support.rb:205:9:205:9 | a [element 0] | active_support.rb:205:9:205:41 | call to including [element 0] | provenance | |
| active_support.rb:205:9:205:41 | call to including [element 0] | active_support.rb:205:5:205:5 | b [element 0] | provenance | |
| active_support.rb:205:9:205:41 | call to including [element] | active_support.rb:205:5:205:5 | b [element] | provenance | |
| active_support.rb:205:21:205:29 | call to source | active_support.rb:205:9:205:41 | call to including [element] | provenance | |
| active_support.rb:205:32:205:40 | call to source | active_support.rb:205:9:205:41 | call to including [element] | provenance | |
| active_support.rb:206:10:206:10 | a [element 0] | active_support.rb:206:10:206:13 | ...[...] | provenance | |
| active_support.rb:208:10:208:10 | b [element 0] | active_support.rb:208:10:208:13 | ...[...] | provenance | |
| active_support.rb:208:10:208:10 | b [element] | active_support.rb:208:10:208:13 | ...[...] | provenance | |
| active_support.rb:209:10:209:10 | b [element] | active_support.rb:209:10:209:13 | ...[...] | provenance | |
| active_support.rb:210:10:210:10 | b [element] | active_support.rb:210:10:210:13 | ...[...] | provenance | |
| active_support.rb:211:10:211:10 | b [element] | active_support.rb:211:10:211:13 | ...[...] | provenance | |
| active_support.rb:180:5:180:5 | x : Array [element 0] | active_support.rb:181:9:181:9 | x : Array [element 0] | provenance | |
| active_support.rb:180:9:180:18 | call to [] : Array [element 0] | active_support.rb:180:5:180:5 | x : Array [element 0] | provenance | |
| active_support.rb:180:10:180:17 | call to source | active_support.rb:180:9:180:18 | call to [] : Array [element 0] | provenance | |
| active_support.rb:181:5:181:5 | y : [collection] [element] | active_support.rb:182:10:182:10 | y : [collection] [element] | provenance | |
| active_support.rb:181:9:181:9 | x : Array [element 0] | active_support.rb:181:9:181:23 | call to compact_blank : [collection] [element] | provenance | |
| active_support.rb:181:9:181:23 | call to compact_blank : [collection] [element] | active_support.rb:181:5:181:5 | y : [collection] [element] | provenance | |
| active_support.rb:182:10:182:10 | y : [collection] [element] | active_support.rb:182:10:182:13 | ...[...] | provenance | |
| active_support.rb:186:5:186:5 | x : Array [element 0] | active_support.rb:187:9:187:9 | x : Array [element 0] | provenance | |
| active_support.rb:186:9:186:22 | call to [] : Array [element 0] | active_support.rb:186:5:186:5 | x : Array [element 0] | provenance | |
| active_support.rb:186:10:186:18 | call to source | active_support.rb:186:9:186:22 | call to [] : Array [element 0] | provenance | |
| active_support.rb:187:5:187:5 | y : [collection] [element] | active_support.rb:188:10:188:10 | y : [collection] [element] | provenance | |
| active_support.rb:187:9:187:9 | x : Array [element 0] | active_support.rb:187:9:187:21 | call to excluding : [collection] [element] | provenance | |
| active_support.rb:187:9:187:21 | call to excluding : [collection] [element] | active_support.rb:187:5:187:5 | y : [collection] [element] | provenance | |
| active_support.rb:188:10:188:10 | y : [collection] [element] | active_support.rb:188:10:188:13 | ...[...] | provenance | |
| active_support.rb:192:5:192:5 | x : Array [element 0] | active_support.rb:193:9:193:9 | x : Array [element 0] | provenance | |
| active_support.rb:192:9:192:22 | call to [] : Array [element 0] | active_support.rb:192:5:192:5 | x : Array [element 0] | provenance | |
| active_support.rb:192:10:192:18 | call to source | active_support.rb:192:9:192:22 | call to [] : Array [element 0] | provenance | |
| active_support.rb:193:5:193:5 | y : [collection] [element] | active_support.rb:194:10:194:10 | y : [collection] [element] | provenance | |
| active_support.rb:193:9:193:9 | x : Array [element 0] | active_support.rb:193:9:193:19 | call to without : [collection] [element] | provenance | |
| active_support.rb:193:9:193:19 | call to without : [collection] [element] | active_support.rb:193:5:193:5 | y : [collection] [element] | provenance | |
| active_support.rb:194:10:194:10 | y : [collection] [element] | active_support.rb:194:10:194:13 | ...[...] | provenance | |
| active_support.rb:198:5:198:5 | x : Array [element 0] | active_support.rb:199:9:199:9 | x : Array [element 0] | provenance | |
| active_support.rb:198:9:198:22 | call to [] : Array [element 0] | active_support.rb:198:5:198:5 | x : Array [element 0] | provenance | |
| active_support.rb:198:10:198:18 | call to source | active_support.rb:198:9:198:22 | call to [] : Array [element 0] | provenance | |
| active_support.rb:199:5:199:5 | y : [collection] [element] | active_support.rb:200:10:200:10 | y : [collection] [element] | provenance | |
| active_support.rb:199:9:199:9 | x : Array [element 0] | active_support.rb:199:9:199:37 | call to in_order_of : [collection] [element] | provenance | |
| active_support.rb:199:9:199:37 | call to in_order_of : [collection] [element] | active_support.rb:199:5:199:5 | y : [collection] [element] | provenance | |
| active_support.rb:200:10:200:10 | y : [collection] [element] | active_support.rb:200:10:200:13 | ...[...] | provenance | |
| active_support.rb:204:5:204:5 | a : Array [element 0] | active_support.rb:205:9:205:9 | a : Array [element 0] | provenance | |
| active_support.rb:204:5:204:5 | a : Array [element 0] | active_support.rb:206:10:206:10 | a : Array [element 0] | provenance | |
| active_support.rb:204:9:204:22 | call to [] : Array [element 0] | active_support.rb:204:5:204:5 | a : Array [element 0] | provenance | |
| active_support.rb:204:10:204:18 | call to source | active_support.rb:204:9:204:22 | call to [] : Array [element 0] | provenance | |
| active_support.rb:205:5:205:5 | b : [collection] [element 0] | active_support.rb:208:10:208:10 | b : [collection] [element 0] | provenance | |
| active_support.rb:205:5:205:5 | b : [collection] [element] | active_support.rb:208:10:208:10 | b : [collection] [element] | provenance | |
| active_support.rb:205:5:205:5 | b : [collection] [element] | active_support.rb:209:10:209:10 | b : [collection] [element] | provenance | |
| active_support.rb:205:5:205:5 | b : [collection] [element] | active_support.rb:210:10:210:10 | b : [collection] [element] | provenance | |
| active_support.rb:205:5:205:5 | b : [collection] [element] | active_support.rb:211:10:211:10 | b : [collection] [element] | provenance | |
| active_support.rb:205:9:205:9 | a : Array [element 0] | active_support.rb:205:9:205:41 | call to including : [collection] [element 0] | provenance | |
| active_support.rb:205:9:205:41 | call to including : [collection] [element 0] | active_support.rb:205:5:205:5 | b : [collection] [element 0] | provenance | |
| active_support.rb:205:9:205:41 | call to including : [collection] [element] | active_support.rb:205:5:205:5 | b : [collection] [element] | provenance | |
| active_support.rb:205:21:205:29 | call to source | active_support.rb:205:9:205:41 | call to including : [collection] [element] | provenance | |
| active_support.rb:205:32:205:40 | call to source | active_support.rb:205:9:205:41 | call to including : [collection] [element] | provenance | |
| active_support.rb:206:10:206:10 | a : Array [element 0] | active_support.rb:206:10:206:13 | ...[...] | provenance | |
| active_support.rb:208:10:208:10 | b : [collection] [element 0] | active_support.rb:208:10:208:13 | ...[...] | provenance | |
| active_support.rb:208:10:208:10 | b : [collection] [element] | active_support.rb:208:10:208:13 | ...[...] | provenance | |
| active_support.rb:209:10:209:10 | b : [collection] [element] | active_support.rb:209:10:209:13 | ...[...] | provenance | |
| active_support.rb:210:10:210:10 | b : [collection] [element] | active_support.rb:210:10:210:13 | ...[...] | provenance | |
| active_support.rb:211:10:211:10 | b : [collection] [element] | active_support.rb:211:10:211:13 | ...[...] | provenance | |
| active_support.rb:282:3:282:3 | x | active_support.rb:283:8:283:8 | x | provenance | |
| active_support.rb:282:7:282:16 | call to source | active_support.rb:282:3:282:3 | x | provenance | |
| active_support.rb:283:8:283:8 | x | active_support.rb:283:8:283:17 | call to presence | provenance | |
@@ -57,238 +57,238 @@ edges
| active_support.rb:290:3:290:3 | x | active_support.rb:291:8:291:8 | x | provenance | |
| active_support.rb:290:7:290:16 | call to source | active_support.rb:290:3:290:3 | x | provenance | |
| active_support.rb:291:8:291:8 | x | active_support.rb:291:8:291:17 | call to deep_dup | provenance | |
| hash_extensions.rb:2:5:2:5 | h [element :a] | hash_extensions.rb:3:9:3:9 | h [element :a] | provenance | |
| hash_extensions.rb:2:9:2:26 | call to [] [element :a] | hash_extensions.rb:2:5:2:5 | h [element :a] | provenance | |
| hash_extensions.rb:2:14:2:24 | call to source | hash_extensions.rb:2:9:2:26 | call to [] [element :a] | provenance | |
| hash_extensions.rb:3:5:3:5 | x [element :a] | hash_extensions.rb:4:10:4:10 | x [element :a] | provenance | |
| hash_extensions.rb:3:9:3:9 | h [element :a] | hash_extensions.rb:3:9:3:24 | call to stringify_keys [element :a] | provenance | |
| hash_extensions.rb:3:9:3:24 | call to stringify_keys [element :a] | hash_extensions.rb:3:5:3:5 | x [element :a] | provenance | |
| hash_extensions.rb:4:10:4:10 | x [element :a] | hash_extensions.rb:4:10:4:15 | ...[...] | provenance | |
| hash_extensions.rb:10:5:10:5 | h [element a] | hash_extensions.rb:11:9:11:9 | h [element a] | provenance | |
| hash_extensions.rb:10:9:10:30 | call to [] [element a] | hash_extensions.rb:10:5:10:5 | h [element a] | provenance | |
| hash_extensions.rb:10:18:10:28 | call to source | hash_extensions.rb:10:9:10:30 | call to [] [element a] | provenance | |
| hash_extensions.rb:11:5:11:5 | x [element a] | hash_extensions.rb:12:10:12:10 | x [element a] | provenance | |
| hash_extensions.rb:11:9:11:9 | h [element a] | hash_extensions.rb:11:9:11:20 | call to to_options [element a] | provenance | |
| hash_extensions.rb:11:9:11:20 | call to to_options [element a] | hash_extensions.rb:11:5:11:5 | x [element a] | provenance | |
| hash_extensions.rb:12:10:12:10 | x [element a] | hash_extensions.rb:12:10:12:14 | ...[...] | provenance | |
| hash_extensions.rb:18:5:18:5 | h [element a] | hash_extensions.rb:19:9:19:9 | h [element a] | provenance | |
| hash_extensions.rb:18:9:18:30 | call to [] [element a] | hash_extensions.rb:18:5:18:5 | h [element a] | provenance | |
| hash_extensions.rb:18:18:18:28 | call to source | hash_extensions.rb:18:9:18:30 | call to [] [element a] | provenance | |
| hash_extensions.rb:19:5:19:5 | x [element a] | hash_extensions.rb:20:10:20:10 | x [element a] | provenance | |
| hash_extensions.rb:19:9:19:9 | h [element a] | hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element a] | provenance | |
| hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element a] | hash_extensions.rb:19:5:19:5 | x [element a] | provenance | |
| hash_extensions.rb:20:10:20:10 | x [element a] | hash_extensions.rb:20:10:20:14 | ...[...] | provenance | |
| hash_extensions.rb:26:5:26:5 | h [element :a] | hash_extensions.rb:27:9:27:9 | h [element :a] | provenance | |
| hash_extensions.rb:26:9:26:26 | call to [] [element :a] | hash_extensions.rb:26:5:26:5 | h [element :a] | provenance | |
| hash_extensions.rb:26:14:26:24 | call to source | hash_extensions.rb:26:9:26:26 | call to [] [element :a] | provenance | |
| hash_extensions.rb:27:5:27:5 | x [element :a] | hash_extensions.rb:28:10:28:10 | x [element :a] | provenance | |
| hash_extensions.rb:27:9:27:9 | h [element :a] | hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element :a] | provenance | |
| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element :a] | hash_extensions.rb:27:5:27:5 | x [element :a] | provenance | |
| hash_extensions.rb:28:10:28:10 | x [element :a] | hash_extensions.rb:28:10:28:15 | ...[...] | provenance | |
| hash_extensions.rb:34:5:34:5 | h [element a] | hash_extensions.rb:35:9:35:9 | h [element a] | provenance | |
| hash_extensions.rb:34:9:34:30 | call to [] [element a] | hash_extensions.rb:34:5:34:5 | h [element a] | provenance | |
| hash_extensions.rb:34:18:34:28 | call to source | hash_extensions.rb:34:9:34:30 | call to [] [element a] | provenance | |
| hash_extensions.rb:35:5:35:5 | x [element a] | hash_extensions.rb:36:10:36:10 | x [element a] | provenance | |
| hash_extensions.rb:35:9:35:9 | h [element a] | hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element a] | provenance | |
| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element a] | hash_extensions.rb:35:5:35:5 | x [element a] | provenance | |
| hash_extensions.rb:36:10:36:10 | x [element a] | hash_extensions.rb:36:10:36:14 | ...[...] | provenance | |
| hash_extensions.rb:42:5:42:5 | h [element :a] | hash_extensions.rb:43:9:43:9 | h [element :a] | provenance | |
| hash_extensions.rb:42:9:42:26 | call to [] [element :a] | hash_extensions.rb:42:5:42:5 | h [element :a] | provenance | |
| hash_extensions.rb:42:14:42:24 | call to source | hash_extensions.rb:42:9:42:26 | call to [] [element :a] | provenance | |
| hash_extensions.rb:43:5:43:5 | x [element :a] | hash_extensions.rb:44:10:44:10 | x [element :a] | provenance | |
| hash_extensions.rb:43:9:43:9 | h [element :a] | hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element :a] | provenance | |
| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element :a] | hash_extensions.rb:43:5:43:5 | x [element :a] | provenance | |
| hash_extensions.rb:44:10:44:10 | x [element :a] | hash_extensions.rb:44:10:44:15 | ...[...] | provenance | |
| hash_extensions.rb:50:5:50:5 | h [element :a] | hash_extensions.rb:51:9:51:9 | h [element :a] | provenance | |
| hash_extensions.rb:50:5:50:5 | h [element :b] | hash_extensions.rb:51:9:51:9 | h [element :b] | provenance | |
| hash_extensions.rb:50:5:50:5 | h [element :d] | hash_extensions.rb:51:9:51:9 | h [element :d] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] [element :a] | hash_extensions.rb:50:5:50:5 | h [element :a] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] [element :b] | hash_extensions.rb:50:5:50:5 | h [element :b] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] [element :d] | hash_extensions.rb:50:5:50:5 | h [element :d] | provenance | |
| hash_extensions.rb:50:14:50:23 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] [element :a] | provenance | |
| hash_extensions.rb:50:29:50:38 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] [element :b] | provenance | |
| hash_extensions.rb:50:52:50:61 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] [element :d] | provenance | |
| hash_extensions.rb:51:5:51:5 | x [element :a] | hash_extensions.rb:58:10:58:10 | x [element :a] | provenance | |
| hash_extensions.rb:51:5:51:5 | x [element :b] | hash_extensions.rb:59:10:59:10 | x [element :b] | provenance | |
| hash_extensions.rb:51:9:51:9 | [post] h [element :d] | hash_extensions.rb:56:10:56:10 | h [element :d] | provenance | |
| hash_extensions.rb:51:9:51:9 | h [element :a] | hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | provenance | |
| hash_extensions.rb:51:9:51:9 | h [element :b] | hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | provenance | |
| hash_extensions.rb:51:9:51:9 | h [element :d] | hash_extensions.rb:51:9:51:9 | [post] h [element :d] | provenance | |
| hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | hash_extensions.rb:51:5:51:5 | x [element :a] | provenance | |
| hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | hash_extensions.rb:51:5:51:5 | x [element :b] | provenance | |
| hash_extensions.rb:56:10:56:10 | h [element :d] | hash_extensions.rb:56:10:56:14 | ...[...] | provenance | |
| hash_extensions.rb:58:10:58:10 | x [element :a] | hash_extensions.rb:58:10:58:14 | ...[...] | provenance | |
| hash_extensions.rb:59:10:59:10 | x [element :b] | hash_extensions.rb:59:10:59:14 | ...[...] | provenance | |
| hash_extensions.rb:67:5:67:10 | values [element 0] | hash_extensions.rb:68:9:68:14 | values [element 0] | provenance | |
| hash_extensions.rb:67:5:67:10 | values [element 1] | hash_extensions.rb:68:9:68:14 | values [element 1] | provenance | |
| hash_extensions.rb:67:5:67:10 | values [element 2] | hash_extensions.rb:68:9:68:14 | values [element 2] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] [element 0] | hash_extensions.rb:67:5:67:10 | values [element 0] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] [element 1] | hash_extensions.rb:67:5:67:10 | values [element 1] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] [element 2] | hash_extensions.rb:67:5:67:10 | values [element 2] | provenance | |
| hash_extensions.rb:67:15:67:25 | call to source | hash_extensions.rb:67:14:67:52 | call to [] [element 0] | provenance | |
| hash_extensions.rb:67:28:67:38 | call to source | hash_extensions.rb:67:14:67:52 | call to [] [element 1] | provenance | |
| hash_extensions.rb:67:41:67:51 | call to source | hash_extensions.rb:67:14:67:52 | call to [] [element 2] | provenance | |
| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:73:10:73:10 | h [element] | provenance | |
| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:74:10:74:10 | h [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:71:7 | call to index_by [element] | hash_extensions.rb:68:5:68:5 | h [element] | provenance | |
| hash_extensions.rb:2:5:2:5 | h : Hash [element :a] | hash_extensions.rb:3:9:3:9 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:2:9:2:26 | call to [] : Hash [element :a] | hash_extensions.rb:2:5:2:5 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:2:14:2:24 | call to source | hash_extensions.rb:2:9:2:26 | call to [] : Hash [element :a] | provenance | |
| hash_extensions.rb:3:5:3:5 | x : Hash [element :a] | hash_extensions.rb:4:10:4:10 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:3:9:3:9 | h : Hash [element :a] | hash_extensions.rb:3:9:3:24 | call to stringify_keys : Hash [element :a] | provenance | |
| hash_extensions.rb:3:9:3:24 | call to stringify_keys : Hash [element :a] | hash_extensions.rb:3:5:3:5 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:4:10:4:10 | x : Hash [element :a] | hash_extensions.rb:4:10:4:15 | ...[...] | provenance | |
| hash_extensions.rb:10:5:10:5 | h : Hash [element a] | hash_extensions.rb:11:9:11:9 | h : Hash [element a] | provenance | |
| hash_extensions.rb:10:9:10:30 | call to [] : Hash [element a] | hash_extensions.rb:10:5:10:5 | h : Hash [element a] | provenance | |
| hash_extensions.rb:10:18:10:28 | call to source | hash_extensions.rb:10:9:10:30 | call to [] : Hash [element a] | provenance | |
| hash_extensions.rb:11:5:11:5 | x : Hash [element a] | hash_extensions.rb:12:10:12:10 | x : Hash [element a] | provenance | |
| hash_extensions.rb:11:9:11:9 | h : Hash [element a] | hash_extensions.rb:11:9:11:20 | call to to_options : Hash [element a] | provenance | |
| hash_extensions.rb:11:9:11:20 | call to to_options : Hash [element a] | hash_extensions.rb:11:5:11:5 | x : Hash [element a] | provenance | |
| hash_extensions.rb:12:10:12:10 | x : Hash [element a] | hash_extensions.rb:12:10:12:14 | ...[...] | provenance | |
| hash_extensions.rb:18:5:18:5 | h : Hash [element a] | hash_extensions.rb:19:9:19:9 | h : Hash [element a] | provenance | |
| hash_extensions.rb:18:9:18:30 | call to [] : Hash [element a] | hash_extensions.rb:18:5:18:5 | h : Hash [element a] | provenance | |
| hash_extensions.rb:18:18:18:28 | call to source | hash_extensions.rb:18:9:18:30 | call to [] : Hash [element a] | provenance | |
| hash_extensions.rb:19:5:19:5 | x : Hash [element a] | hash_extensions.rb:20:10:20:10 | x : Hash [element a] | provenance | |
| hash_extensions.rb:19:9:19:9 | h : Hash [element a] | hash_extensions.rb:19:9:19:24 | call to symbolize_keys : Hash [element a] | provenance | |
| hash_extensions.rb:19:9:19:24 | call to symbolize_keys : Hash [element a] | hash_extensions.rb:19:5:19:5 | x : Hash [element a] | provenance | |
| hash_extensions.rb:20:10:20:10 | x : Hash [element a] | hash_extensions.rb:20:10:20:14 | ...[...] | provenance | |
| hash_extensions.rb:26:5:26:5 | h : Hash [element :a] | hash_extensions.rb:27:9:27:9 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:26:9:26:26 | call to [] : Hash [element :a] | hash_extensions.rb:26:5:26:5 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:26:14:26:24 | call to source | hash_extensions.rb:26:9:26:26 | call to [] : Hash [element :a] | provenance | |
| hash_extensions.rb:27:5:27:5 | x : Hash [element :a] | hash_extensions.rb:28:10:28:10 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:27:9:27:9 | h : Hash [element :a] | hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys : Hash [element :a] | provenance | |
| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys : Hash [element :a] | hash_extensions.rb:27:5:27:5 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:28:10:28:10 | x : Hash [element :a] | hash_extensions.rb:28:10:28:15 | ...[...] | provenance | |
| hash_extensions.rb:34:5:34:5 | h : Hash [element a] | hash_extensions.rb:35:9:35:9 | h : Hash [element a] | provenance | |
| hash_extensions.rb:34:9:34:30 | call to [] : Hash [element a] | hash_extensions.rb:34:5:34:5 | h : Hash [element a] | provenance | |
| hash_extensions.rb:34:18:34:28 | call to source | hash_extensions.rb:34:9:34:30 | call to [] : Hash [element a] | provenance | |
| hash_extensions.rb:35:5:35:5 | x : Hash [element a] | hash_extensions.rb:36:10:36:10 | x : Hash [element a] | provenance | |
| hash_extensions.rb:35:9:35:9 | h : Hash [element a] | hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys : Hash [element a] | provenance | |
| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys : Hash [element a] | hash_extensions.rb:35:5:35:5 | x : Hash [element a] | provenance | |
| hash_extensions.rb:36:10:36:10 | x : Hash [element a] | hash_extensions.rb:36:10:36:14 | ...[...] | provenance | |
| hash_extensions.rb:42:5:42:5 | h : Hash [element :a] | hash_extensions.rb:43:9:43:9 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:42:9:42:26 | call to [] : Hash [element :a] | hash_extensions.rb:42:5:42:5 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:42:14:42:24 | call to source | hash_extensions.rb:42:9:42:26 | call to [] : Hash [element :a] | provenance | |
| hash_extensions.rb:43:5:43:5 | x : Hash [element :a] | hash_extensions.rb:44:10:44:10 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:43:9:43:9 | h : Hash [element :a] | hash_extensions.rb:43:9:43:33 | call to with_indifferent_access : Hash [element :a] | provenance | |
| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access : Hash [element :a] | hash_extensions.rb:43:5:43:5 | x : Hash [element :a] | provenance | |
| hash_extensions.rb:44:10:44:10 | x : Hash [element :a] | hash_extensions.rb:44:10:44:15 | ...[...] | provenance | |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :a] | hash_extensions.rb:51:9:51:9 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :b] | hash_extensions.rb:51:9:51:9 | h : Hash [element :b] | provenance | |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :d] | hash_extensions.rb:51:9:51:9 | h : Hash [element :d] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :a] | hash_extensions.rb:50:5:50:5 | h : Hash [element :a] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :b] | hash_extensions.rb:50:5:50:5 | h : Hash [element :b] | provenance | |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :d] | hash_extensions.rb:50:5:50:5 | h : Hash [element :d] | provenance | |
| hash_extensions.rb:50:14:50:23 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :a] | provenance | |
| hash_extensions.rb:50:29:50:38 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :b] | provenance | |
| hash_extensions.rb:50:52:50:61 | call to taint | hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :d] | provenance | |
| hash_extensions.rb:51:5:51:5 | x : [collection] [element :a] | hash_extensions.rb:58:10:58:10 | x : [collection] [element :a] | provenance | |
| hash_extensions.rb:51:5:51:5 | x : [collection] [element :b] | hash_extensions.rb:59:10:59:10 | x : [collection] [element :b] | provenance | |
| hash_extensions.rb:51:9:51:9 | [post] h : Hash [element :d] | hash_extensions.rb:56:10:56:10 | h : Hash [element :d] | provenance | |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :a] | hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :a] | provenance | |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :b] | hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :b] | provenance | |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :d] | hash_extensions.rb:51:9:51:9 | [post] h : Hash [element :d] | provenance | |
| hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :a] | hash_extensions.rb:51:5:51:5 | x : [collection] [element :a] | provenance | |
| hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :b] | hash_extensions.rb:51:5:51:5 | x : [collection] [element :b] | provenance | |
| hash_extensions.rb:56:10:56:10 | h : Hash [element :d] | hash_extensions.rb:56:10:56:14 | ...[...] | provenance | |
| hash_extensions.rb:58:10:58:10 | x : [collection] [element :a] | hash_extensions.rb:58:10:58:14 | ...[...] | provenance | |
| hash_extensions.rb:59:10:59:10 | x : [collection] [element :b] | hash_extensions.rb:59:10:59:14 | ...[...] | provenance | |
| hash_extensions.rb:67:5:67:10 | values : Array [element 0] | hash_extensions.rb:68:9:68:14 | values : Array [element 0] | provenance | |
| hash_extensions.rb:67:5:67:10 | values : Array [element 1] | hash_extensions.rb:68:9:68:14 | values : Array [element 1] | provenance | |
| hash_extensions.rb:67:5:67:10 | values : Array [element 2] | hash_extensions.rb:68:9:68:14 | values : Array [element 2] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 0] | hash_extensions.rb:67:5:67:10 | values : Array [element 0] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 1] | hash_extensions.rb:67:5:67:10 | values : Array [element 1] | provenance | |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 2] | hash_extensions.rb:67:5:67:10 | values : Array [element 2] | provenance | |
| hash_extensions.rb:67:15:67:25 | call to source | hash_extensions.rb:67:14:67:52 | call to [] : Array [element 0] | provenance | |
| hash_extensions.rb:67:28:67:38 | call to source | hash_extensions.rb:67:14:67:52 | call to [] : Array [element 1] | provenance | |
| hash_extensions.rb:67:41:67:51 | call to source | hash_extensions.rb:67:14:67:52 | call to [] : Array [element 2] | provenance | |
| hash_extensions.rb:68:5:68:5 | h : [collection] [element] | hash_extensions.rb:73:10:73:10 | h : [collection] [element] | provenance | |
| hash_extensions.rb:68:5:68:5 | h : [collection] [element] | hash_extensions.rb:74:10:74:10 | h : [collection] [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 0] | hash_extensions.rb:68:9:71:7 | call to index_by : [collection] [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 0] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 1] | hash_extensions.rb:68:9:71:7 | call to index_by : [collection] [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 1] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 2] | hash_extensions.rb:68:9:71:7 | call to index_by : [collection] [element] | provenance | |
| hash_extensions.rb:68:9:68:14 | values : Array [element 2] | hash_extensions.rb:68:29:68:33 | value | provenance | |
| hash_extensions.rb:68:9:71:7 | call to index_by : [collection] [element] | hash_extensions.rb:68:5:68:5 | h : [collection] [element] | provenance | |
| hash_extensions.rb:68:29:68:33 | value | hash_extensions.rb:69:14:69:18 | value | provenance | |
| hash_extensions.rb:73:10:73:10 | h [element] | hash_extensions.rb:73:10:73:16 | ...[...] | provenance | |
| hash_extensions.rb:74:10:74:10 | h [element] | hash_extensions.rb:74:10:74:16 | ...[...] | provenance | |
| hash_extensions.rb:80:5:80:10 | values [element 0] | hash_extensions.rb:81:9:81:14 | values [element 0] | provenance | |
| hash_extensions.rb:80:5:80:10 | values [element 1] | hash_extensions.rb:81:9:81:14 | values [element 1] | provenance | |
| hash_extensions.rb:80:5:80:10 | values [element 2] | hash_extensions.rb:81:9:81:14 | values [element 2] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] [element 0] | hash_extensions.rb:80:5:80:10 | values [element 0] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] [element 1] | hash_extensions.rb:80:5:80:10 | values [element 1] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] [element 2] | hash_extensions.rb:80:5:80:10 | values [element 2] | provenance | |
| hash_extensions.rb:80:15:80:25 | call to source | hash_extensions.rb:80:14:80:52 | call to [] [element 0] | provenance | |
| hash_extensions.rb:80:28:80:38 | call to source | hash_extensions.rb:80:14:80:52 | call to [] [element 1] | provenance | |
| hash_extensions.rb:80:41:80:51 | call to source | hash_extensions.rb:80:14:80:52 | call to [] [element 2] | provenance | |
| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:86:10:86:10 | h [element] | provenance | |
| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:87:10:87:10 | h [element] | provenance | |
| hash_extensions.rb:81:9:81:14 | values [element 0] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:81:14 | values [element 1] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:81:14 | values [element 2] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:84:7 | call to index_with [element] | hash_extensions.rb:81:5:81:5 | h [element] | provenance | |
| hash_extensions.rb:73:10:73:10 | h : [collection] [element] | hash_extensions.rb:73:10:73:16 | ...[...] | provenance | |
| hash_extensions.rb:74:10:74:10 | h : [collection] [element] | hash_extensions.rb:74:10:74:16 | ...[...] | provenance | |
| hash_extensions.rb:80:5:80:10 | values : Array [element 0] | hash_extensions.rb:81:9:81:14 | values : Array [element 0] | provenance | |
| hash_extensions.rb:80:5:80:10 | values : Array [element 1] | hash_extensions.rb:81:9:81:14 | values : Array [element 1] | provenance | |
| hash_extensions.rb:80:5:80:10 | values : Array [element 2] | hash_extensions.rb:81:9:81:14 | values : Array [element 2] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 0] | hash_extensions.rb:80:5:80:10 | values : Array [element 0] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 1] | hash_extensions.rb:80:5:80:10 | values : Array [element 1] | provenance | |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 2] | hash_extensions.rb:80:5:80:10 | values : Array [element 2] | provenance | |
| hash_extensions.rb:80:15:80:25 | call to source | hash_extensions.rb:80:14:80:52 | call to [] : Array [element 0] | provenance | |
| hash_extensions.rb:80:28:80:38 | call to source | hash_extensions.rb:80:14:80:52 | call to [] : Array [element 1] | provenance | |
| hash_extensions.rb:80:41:80:51 | call to source | hash_extensions.rb:80:14:80:52 | call to [] : Array [element 2] | provenance | |
| hash_extensions.rb:81:5:81:5 | h : [collection] [element] | hash_extensions.rb:86:10:86:10 | h : [collection] [element] | provenance | |
| hash_extensions.rb:81:5:81:5 | h : [collection] [element] | hash_extensions.rb:87:10:87:10 | h : [collection] [element] | provenance | |
| hash_extensions.rb:81:9:81:14 | values : Array [element 0] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:81:14 | values : Array [element 1] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:81:14 | values : Array [element 2] | hash_extensions.rb:81:31:81:33 | key | provenance | |
| hash_extensions.rb:81:9:84:7 | call to index_with : [collection] [element] | hash_extensions.rb:81:5:81:5 | h : [collection] [element] | provenance | |
| hash_extensions.rb:81:31:81:33 | key | hash_extensions.rb:82:14:82:16 | key | provenance | |
| hash_extensions.rb:83:9:83:19 | call to source | hash_extensions.rb:81:9:84:7 | call to index_with [element] | provenance | |
| hash_extensions.rb:86:10:86:10 | h [element] | hash_extensions.rb:86:10:86:16 | ...[...] | provenance | |
| hash_extensions.rb:87:10:87:10 | h [element] | hash_extensions.rb:87:10:87:16 | ...[...] | provenance | |
| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:91:10:91:10 | j [element] | provenance | |
| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:92:10:92:10 | j [element] | provenance | |
| hash_extensions.rb:89:9:89:38 | call to index_with [element] | hash_extensions.rb:89:5:89:5 | j [element] | provenance | |
| hash_extensions.rb:89:27:89:37 | call to source | hash_extensions.rb:89:9:89:38 | call to index_with [element] | provenance | |
| hash_extensions.rb:91:10:91:10 | j [element] | hash_extensions.rb:91:10:91:16 | ...[...] | provenance | |
| hash_extensions.rb:92:10:92:10 | j [element] | hash_extensions.rb:92:10:92:16 | ...[...] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :id] | hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :name] | hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:98:15:98:56 | call to [] [element :id] | hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :id] | provenance | |
| hash_extensions.rb:98:15:98:56 | call to [] [element :name] | hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :name] | provenance | |
| hash_extensions.rb:98:21:98:31 | call to source | hash_extensions.rb:98:15:98:56 | call to [] [element :id] | provenance | |
| hash_extensions.rb:98:40:98:54 | call to source | hash_extensions.rb:98:15:98:56 | call to [] [element :name] | provenance | |
| hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | hash_extensions.rb:99:10:99:25 | call to pick | provenance | |
| hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | hash_extensions.rb:100:10:100:27 | call to pick | provenance | |
| hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | hash_extensions.rb:101:10:101:32 | call to pick [element 0] | provenance | |
| hash_extensions.rb:101:10:101:32 | call to pick [element 0] | hash_extensions.rb:101:10:101:35 | ...[...] | provenance | |
| hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | hash_extensions.rb:102:10:102:32 | call to pick [element 1] | provenance | |
| hash_extensions.rb:102:10:102:32 | call to pick [element 1] | hash_extensions.rb:102:10:102:35 | ...[...] | provenance | |
| hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | hash_extensions.rb:103:10:103:32 | call to pick [element 0] | provenance | |
| hash_extensions.rb:103:10:103:32 | call to pick [element 0] | hash_extensions.rb:103:10:103:35 | ...[...] | provenance | |
| hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | hash_extensions.rb:104:10:104:32 | call to pick [element 1] | provenance | |
| hash_extensions.rb:104:10:104:32 | call to pick [element 1] | hash_extensions.rb:104:10:104:35 | ...[...] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :id] | hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :name] | hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :id] | hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :name] | hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | provenance | |
| hash_extensions.rb:110:15:110:56 | call to [] [element :id] | hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :id] | provenance | |
| hash_extensions.rb:110:15:110:56 | call to [] [element :name] | hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :name] | provenance | |
| hash_extensions.rb:110:21:110:31 | call to source | hash_extensions.rb:110:15:110:56 | call to [] [element :id] | provenance | |
| hash_extensions.rb:110:40:110:54 | call to source | hash_extensions.rb:110:15:110:56 | call to [] [element :name] | provenance | |
| hash_extensions.rb:110:59:110:101 | call to [] [element :id] | hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :id] | provenance | |
| hash_extensions.rb:110:59:110:101 | call to [] [element :name] | hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :name] | provenance | |
| hash_extensions.rb:110:65:110:75 | call to source | hash_extensions.rb:110:59:110:101 | call to [] [element :id] | provenance | |
| hash_extensions.rb:110:84:110:99 | call to source | hash_extensions.rb:110:59:110:101 | call to [] [element :name] | provenance | |
| hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | provenance | |
| hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | provenance | |
| hash_extensions.rb:111:10:111:28 | call to pluck [element] | hash_extensions.rb:111:10:111:31 | ...[...] | provenance | |
| hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | provenance | |
| hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | provenance | |
| hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | provenance | |
| hash_extensions.rb:83:9:83:19 | call to source | hash_extensions.rb:81:9:84:7 | call to index_with : [collection] [element] | provenance | |
| hash_extensions.rb:86:10:86:10 | h : [collection] [element] | hash_extensions.rb:86:10:86:16 | ...[...] | provenance | |
| hash_extensions.rb:87:10:87:10 | h : [collection] [element] | hash_extensions.rb:87:10:87:16 | ...[...] | provenance | |
| hash_extensions.rb:89:5:89:5 | j : [collection] [element] | hash_extensions.rb:91:10:91:10 | j : [collection] [element] | provenance | |
| hash_extensions.rb:89:5:89:5 | j : [collection] [element] | hash_extensions.rb:92:10:92:10 | j : [collection] [element] | provenance | |
| hash_extensions.rb:89:9:89:38 | call to index_with : [collection] [element] | hash_extensions.rb:89:5:89:5 | j : [collection] [element] | provenance | |
| hash_extensions.rb:89:27:89:37 | call to source | hash_extensions.rb:89:9:89:38 | call to index_with : [collection] [element] | provenance | |
| hash_extensions.rb:91:10:91:10 | j : [collection] [element] | hash_extensions.rb:91:10:91:16 | ...[...] | provenance | |
| hash_extensions.rb:92:10:92:10 | j : [collection] [element] | hash_extensions.rb:92:10:92:16 | ...[...] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :id] | hash_extensions.rb:99:10:99:15 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :id] | hash_extensions.rb:101:10:101:15 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :id] | hash_extensions.rb:104:10:104:15 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :name] | hash_extensions.rb:100:10:100:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :name] | hash_extensions.rb:102:10:102:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :name] | hash_extensions.rb:103:10:103:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :id] | hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :name] | hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :id] | hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :name] | hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:98:21:98:31 | call to source | hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :id] | provenance | |
| hash_extensions.rb:98:40:98:54 | call to source | hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :name] | provenance | |
| hash_extensions.rb:99:10:99:15 | values : Array [element 0, element :id] | hash_extensions.rb:99:10:99:25 | call to pick | provenance | |
| hash_extensions.rb:100:10:100:15 | values : Array [element 0, element :name] | hash_extensions.rb:100:10:100:27 | call to pick | provenance | |
| hash_extensions.rb:101:10:101:15 | values : Array [element 0, element :id] | hash_extensions.rb:101:10:101:32 | call to pick : [collection] [element 0] | provenance | |
| hash_extensions.rb:101:10:101:32 | call to pick : [collection] [element 0] | hash_extensions.rb:101:10:101:35 | ...[...] | provenance | |
| hash_extensions.rb:102:10:102:15 | values : Array [element 0, element :name] | hash_extensions.rb:102:10:102:32 | call to pick : [collection] [element 1] | provenance | |
| hash_extensions.rb:102:10:102:32 | call to pick : [collection] [element 1] | hash_extensions.rb:102:10:102:35 | ...[...] | provenance | |
| hash_extensions.rb:103:10:103:15 | values : Array [element 0, element :name] | hash_extensions.rb:103:10:103:32 | call to pick : [collection] [element 0] | provenance | |
| hash_extensions.rb:103:10:103:32 | call to pick : [collection] [element 0] | hash_extensions.rb:103:10:103:35 | ...[...] | provenance | |
| hash_extensions.rb:104:10:104:15 | values : Array [element 0, element :id] | hash_extensions.rb:104:10:104:32 | call to pick : [collection] [element 1] | provenance | |
| hash_extensions.rb:104:10:104:32 | call to pick : [collection] [element 1] | hash_extensions.rb:104:10:104:35 | ...[...] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :id] | hash_extensions.rb:112:10:112:15 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :id] | hash_extensions.rb:115:10:115:15 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :name] | hash_extensions.rb:111:10:111:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :name] | hash_extensions.rb:113:10:113:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :name] | hash_extensions.rb:114:10:114:15 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :id] | hash_extensions.rb:112:10:112:15 | values : Array [element 1, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :id] | hash_extensions.rb:115:10:115:15 | values : Array [element 1, element :id] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :name] | hash_extensions.rb:111:10:111:15 | values : Array [element 1, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :name] | hash_extensions.rb:113:10:113:15 | values : Array [element 1, element :name] | provenance | |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :name] | hash_extensions.rb:114:10:114:15 | values : Array [element 1, element :name] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :id] | hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :name] | hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :id] | hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :id] | provenance | |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :name] | hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :name] | provenance | |
| hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :id] | hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :id] | provenance | |
| hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :name] | hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :name] | provenance | |
| hash_extensions.rb:110:21:110:31 | call to source | hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :id] | provenance | |
| hash_extensions.rb:110:40:110:54 | call to source | hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :name] | provenance | |
| hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :id] | hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :id] | provenance | |
| hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :name] | hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :name] | provenance | |
| hash_extensions.rb:110:65:110:75 | call to source | hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :id] | provenance | |
| hash_extensions.rb:110:84:110:99 | call to source | hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :name] | provenance | |
| hash_extensions.rb:111:10:111:15 | values : Array [element 0, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck : [collection] [element] | provenance | |
| hash_extensions.rb:111:10:111:15 | values : Array [element 1, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck : [collection] [element] | provenance | |
| hash_extensions.rb:111:10:111:28 | call to pluck : [collection] [element] | hash_extensions.rb:111:10:111:31 | ...[...] | provenance | |
| hash_extensions.rb:112:10:112:15 | values : Array [element 0, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck : [collection] [element, element 0] | provenance | |
| hash_extensions.rb:112:10:112:15 | values : Array [element 1, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck : [collection] [element, element 0] | provenance | |
| hash_extensions.rb:112:10:112:33 | call to pluck : [collection] [element, element 0] | hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | provenance | |
| hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | hash_extensions.rb:112:10:112:39 | ...[...] | provenance | |
| hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | provenance | |
| hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | provenance | |
| hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | provenance | |
| hash_extensions.rb:113:10:113:15 | values : Array [element 0, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck : [collection] [element, element 1] | provenance | |
| hash_extensions.rb:113:10:113:15 | values : Array [element 1, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck : [collection] [element, element 1] | provenance | |
| hash_extensions.rb:113:10:113:33 | call to pluck : [collection] [element, element 1] | hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | provenance | |
| hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | hash_extensions.rb:113:10:113:39 | ...[...] | provenance | |
| hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | provenance | |
| hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | provenance | |
| hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | provenance | |
| hash_extensions.rb:114:10:114:15 | values : Array [element 0, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck : [collection] [element, element 0] | provenance | |
| hash_extensions.rb:114:10:114:15 | values : Array [element 1, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck : [collection] [element, element 0] | provenance | |
| hash_extensions.rb:114:10:114:33 | call to pluck : [collection] [element, element 0] | hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | provenance | |
| hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | hash_extensions.rb:114:10:114:39 | ...[...] | provenance | |
| hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | provenance | |
| hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | provenance | |
| hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | provenance | |
| hash_extensions.rb:115:10:115:15 | values : Array [element 0, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck : [collection] [element, element 1] | provenance | |
| hash_extensions.rb:115:10:115:15 | values : Array [element 1, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck : [collection] [element, element 1] | provenance | |
| hash_extensions.rb:115:10:115:33 | call to pluck : [collection] [element, element 1] | hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | provenance | |
| hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | hash_extensions.rb:115:10:115:39 | ...[...] | provenance | |
| hash_extensions.rb:122:5:122:10 | single [element 0] | hash_extensions.rb:125:10:125:15 | single [element 0] | provenance | |
| hash_extensions.rb:122:14:122:26 | call to [] [element 0] | hash_extensions.rb:122:5:122:10 | single [element 0] | provenance | |
| hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:122:14:122:26 | call to [] [element 0] | provenance | |
| hash_extensions.rb:123:5:123:9 | multi [element 0] | hash_extensions.rb:126:10:126:14 | multi [element 0] | provenance | |
| hash_extensions.rb:123:13:123:38 | call to [] [element 0] | hash_extensions.rb:123:5:123:9 | multi [element 0] | provenance | |
| hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:123:13:123:38 | call to [] [element 0] | provenance | |
| hash_extensions.rb:125:10:125:15 | single [element 0] | hash_extensions.rb:125:10:125:20 | call to sole | provenance | |
| hash_extensions.rb:126:10:126:14 | multi [element 0] | hash_extensions.rb:126:10:126:19 | call to sole | provenance | |
| hash_extensions.rb:122:5:122:10 | single : Array [element 0] | hash_extensions.rb:125:10:125:15 | single : Array [element 0] | provenance | |
| hash_extensions.rb:122:14:122:26 | call to [] : Array [element 0] | hash_extensions.rb:122:5:122:10 | single : Array [element 0] | provenance | |
| hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:122:14:122:26 | call to [] : Array [element 0] | provenance | |
| hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | provenance | |
| hash_extensions.rb:123:13:123:38 | call to [] : Array [element 0] | hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | provenance | |
| hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:123:13:123:38 | call to [] : Array [element 0] | provenance | |
| hash_extensions.rb:125:10:125:15 | single : Array [element 0] | hash_extensions.rb:125:10:125:20 | call to sole | provenance | |
| hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | hash_extensions.rb:126:10:126:19 | call to sole | provenance | |
nodes
| active_support.rb:180:5:180:5 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:180:9:180:18 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| active_support.rb:180:5:180:5 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:180:9:180:18 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| active_support.rb:180:10:180:17 | call to source | semmle.label | call to source |
| active_support.rb:181:5:181:5 | y [element] | semmle.label | y [element] |
| active_support.rb:181:9:181:9 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:181:9:181:23 | call to compact_blank [element] | semmle.label | call to compact_blank [element] |
| active_support.rb:182:10:182:10 | y [element] | semmle.label | y [element] |
| active_support.rb:181:5:181:5 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:181:9:181:9 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:181:9:181:23 | call to compact_blank : [collection] [element] | semmle.label | call to compact_blank : [collection] [element] |
| active_support.rb:182:10:182:10 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:182:10:182:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:186:5:186:5 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:186:9:186:22 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| active_support.rb:186:5:186:5 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:186:9:186:22 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| active_support.rb:186:10:186:18 | call to source | semmle.label | call to source |
| active_support.rb:187:5:187:5 | y [element] | semmle.label | y [element] |
| active_support.rb:187:9:187:9 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:187:9:187:21 | call to excluding [element] | semmle.label | call to excluding [element] |
| active_support.rb:188:10:188:10 | y [element] | semmle.label | y [element] |
| active_support.rb:187:5:187:5 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:187:9:187:9 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:187:9:187:21 | call to excluding : [collection] [element] | semmle.label | call to excluding : [collection] [element] |
| active_support.rb:188:10:188:10 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:188:10:188:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:192:5:192:5 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:192:9:192:22 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| active_support.rb:192:5:192:5 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:192:9:192:22 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| active_support.rb:192:10:192:18 | call to source | semmle.label | call to source |
| active_support.rb:193:5:193:5 | y [element] | semmle.label | y [element] |
| active_support.rb:193:9:193:9 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:193:9:193:19 | call to without [element] | semmle.label | call to without [element] |
| active_support.rb:194:10:194:10 | y [element] | semmle.label | y [element] |
| active_support.rb:193:5:193:5 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:193:9:193:9 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:193:9:193:19 | call to without : [collection] [element] | semmle.label | call to without : [collection] [element] |
| active_support.rb:194:10:194:10 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:194:10:194:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:198:5:198:5 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:198:9:198:22 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| active_support.rb:198:5:198:5 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:198:9:198:22 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| active_support.rb:198:10:198:18 | call to source | semmle.label | call to source |
| active_support.rb:199:5:199:5 | y [element] | semmle.label | y [element] |
| active_support.rb:199:9:199:9 | x [element 0] | semmle.label | x [element 0] |
| active_support.rb:199:9:199:37 | call to in_order_of [element] | semmle.label | call to in_order_of [element] |
| active_support.rb:200:10:200:10 | y [element] | semmle.label | y [element] |
| active_support.rb:199:5:199:5 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:199:9:199:9 | x : Array [element 0] | semmle.label | x : Array [element 0] |
| active_support.rb:199:9:199:37 | call to in_order_of : [collection] [element] | semmle.label | call to in_order_of : [collection] [element] |
| active_support.rb:200:10:200:10 | y : [collection] [element] | semmle.label | y : [collection] [element] |
| active_support.rb:200:10:200:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:204:5:204:5 | a [element 0] | semmle.label | a [element 0] |
| active_support.rb:204:9:204:22 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| active_support.rb:204:5:204:5 | a : Array [element 0] | semmle.label | a : Array [element 0] |
| active_support.rb:204:9:204:22 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| active_support.rb:204:10:204:18 | call to source | semmle.label | call to source |
| active_support.rb:205:5:205:5 | b [element 0] | semmle.label | b [element 0] |
| active_support.rb:205:5:205:5 | b [element] | semmle.label | b [element] |
| active_support.rb:205:9:205:9 | a [element 0] | semmle.label | a [element 0] |
| active_support.rb:205:9:205:41 | call to including [element 0] | semmle.label | call to including [element 0] |
| active_support.rb:205:9:205:41 | call to including [element] | semmle.label | call to including [element] |
| active_support.rb:205:5:205:5 | b : [collection] [element 0] | semmle.label | b : [collection] [element 0] |
| active_support.rb:205:5:205:5 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| active_support.rb:205:9:205:9 | a : Array [element 0] | semmle.label | a : Array [element 0] |
| active_support.rb:205:9:205:41 | call to including : [collection] [element 0] | semmle.label | call to including : [collection] [element 0] |
| active_support.rb:205:9:205:41 | call to including : [collection] [element] | semmle.label | call to including : [collection] [element] |
| active_support.rb:205:21:205:29 | call to source | semmle.label | call to source |
| active_support.rb:205:32:205:40 | call to source | semmle.label | call to source |
| active_support.rb:206:10:206:10 | a [element 0] | semmle.label | a [element 0] |
| active_support.rb:206:10:206:10 | a : Array [element 0] | semmle.label | a : Array [element 0] |
| active_support.rb:206:10:206:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:208:10:208:10 | b [element 0] | semmle.label | b [element 0] |
| active_support.rb:208:10:208:10 | b [element] | semmle.label | b [element] |
| active_support.rb:208:10:208:10 | b : [collection] [element 0] | semmle.label | b : [collection] [element 0] |
| active_support.rb:208:10:208:10 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| active_support.rb:208:10:208:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:209:10:209:10 | b [element] | semmle.label | b [element] |
| active_support.rb:209:10:209:10 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| active_support.rb:209:10:209:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:210:10:210:10 | b [element] | semmle.label | b [element] |
| active_support.rb:210:10:210:10 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| active_support.rb:210:10:210:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:211:10:211:10 | b [element] | semmle.label | b [element] |
| active_support.rb:211:10:211:10 | b : [collection] [element] | semmle.label | b : [collection] [element] |
| active_support.rb:211:10:211:13 | ...[...] | semmle.label | ...[...] |
| active_support.rb:282:3:282:3 | x | semmle.label | x |
| active_support.rb:282:7:282:16 | call to source | semmle.label | call to source |
@@ -302,198 +302,198 @@ nodes
| active_support.rb:290:7:290:16 | call to source | semmle.label | call to source |
| active_support.rb:291:8:291:8 | x | semmle.label | x |
| active_support.rb:291:8:291:17 | call to deep_dup | semmle.label | call to deep_dup |
| hash_extensions.rb:2:5:2:5 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:2:9:2:26 | call to [] [element :a] | semmle.label | call to [] [element :a] |
| hash_extensions.rb:2:5:2:5 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:2:9:2:26 | call to [] : Hash [element :a] | semmle.label | call to [] : Hash [element :a] |
| hash_extensions.rb:2:14:2:24 | call to source | semmle.label | call to source |
| hash_extensions.rb:3:5:3:5 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:3:9:3:9 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:3:9:3:24 | call to stringify_keys [element :a] | semmle.label | call to stringify_keys [element :a] |
| hash_extensions.rb:4:10:4:10 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:3:5:3:5 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:3:9:3:9 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:3:9:3:24 | call to stringify_keys : Hash [element :a] | semmle.label | call to stringify_keys : Hash [element :a] |
| hash_extensions.rb:4:10:4:10 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:4:10:4:15 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:10:5:10:5 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:10:9:10:30 | call to [] [element a] | semmle.label | call to [] [element a] |
| hash_extensions.rb:10:5:10:5 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:10:9:10:30 | call to [] : Hash [element a] | semmle.label | call to [] : Hash [element a] |
| hash_extensions.rb:10:18:10:28 | call to source | semmle.label | call to source |
| hash_extensions.rb:11:5:11:5 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:11:9:11:9 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:11:9:11:20 | call to to_options [element a] | semmle.label | call to to_options [element a] |
| hash_extensions.rb:12:10:12:10 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:11:5:11:5 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:11:9:11:9 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:11:9:11:20 | call to to_options : Hash [element a] | semmle.label | call to to_options : Hash [element a] |
| hash_extensions.rb:12:10:12:10 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:12:10:12:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:18:5:18:5 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:18:9:18:30 | call to [] [element a] | semmle.label | call to [] [element a] |
| hash_extensions.rb:18:5:18:5 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:18:9:18:30 | call to [] : Hash [element a] | semmle.label | call to [] : Hash [element a] |
| hash_extensions.rb:18:18:18:28 | call to source | semmle.label | call to source |
| hash_extensions.rb:19:5:19:5 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:19:9:19:9 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element a] | semmle.label | call to symbolize_keys [element a] |
| hash_extensions.rb:20:10:20:10 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:19:5:19:5 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:19:9:19:9 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:19:9:19:24 | call to symbolize_keys : Hash [element a] | semmle.label | call to symbolize_keys : Hash [element a] |
| hash_extensions.rb:20:10:20:10 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:20:10:20:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:26:5:26:5 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:26:9:26:26 | call to [] [element :a] | semmle.label | call to [] [element :a] |
| hash_extensions.rb:26:5:26:5 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:26:9:26:26 | call to [] : Hash [element :a] | semmle.label | call to [] : Hash [element :a] |
| hash_extensions.rb:26:14:26:24 | call to source | semmle.label | call to source |
| hash_extensions.rb:27:5:27:5 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:27:9:27:9 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element :a] | semmle.label | call to deep_stringify_keys [element :a] |
| hash_extensions.rb:28:10:28:10 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:27:5:27:5 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:27:9:27:9 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys : Hash [element :a] | semmle.label | call to deep_stringify_keys : Hash [element :a] |
| hash_extensions.rb:28:10:28:10 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:28:10:28:15 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:34:5:34:5 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:34:9:34:30 | call to [] [element a] | semmle.label | call to [] [element a] |
| hash_extensions.rb:34:5:34:5 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:34:9:34:30 | call to [] : Hash [element a] | semmle.label | call to [] : Hash [element a] |
| hash_extensions.rb:34:18:34:28 | call to source | semmle.label | call to source |
| hash_extensions.rb:35:5:35:5 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:35:9:35:9 | h [element a] | semmle.label | h [element a] |
| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element a] | semmle.label | call to deep_symbolize_keys [element a] |
| hash_extensions.rb:36:10:36:10 | x [element a] | semmle.label | x [element a] |
| hash_extensions.rb:35:5:35:5 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:35:9:35:9 | h : Hash [element a] | semmle.label | h : Hash [element a] |
| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys : Hash [element a] | semmle.label | call to deep_symbolize_keys : Hash [element a] |
| hash_extensions.rb:36:10:36:10 | x : Hash [element a] | semmle.label | x : Hash [element a] |
| hash_extensions.rb:36:10:36:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:42:5:42:5 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:42:9:42:26 | call to [] [element :a] | semmle.label | call to [] [element :a] |
| hash_extensions.rb:42:5:42:5 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:42:9:42:26 | call to [] : Hash [element :a] | semmle.label | call to [] : Hash [element :a] |
| hash_extensions.rb:42:14:42:24 | call to source | semmle.label | call to source |
| hash_extensions.rb:43:5:43:5 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:43:9:43:9 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element :a] | semmle.label | call to with_indifferent_access [element :a] |
| hash_extensions.rb:44:10:44:10 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:43:5:43:5 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:43:9:43:9 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access : Hash [element :a] | semmle.label | call to with_indifferent_access : Hash [element :a] |
| hash_extensions.rb:44:10:44:10 | x : Hash [element :a] | semmle.label | x : Hash [element :a] |
| hash_extensions.rb:44:10:44:15 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:50:5:50:5 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:50:5:50:5 | h [element :b] | semmle.label | h [element :b] |
| hash_extensions.rb:50:5:50:5 | h [element :d] | semmle.label | h [element :d] |
| hash_extensions.rb:50:9:50:63 | call to [] [element :a] | semmle.label | call to [] [element :a] |
| hash_extensions.rb:50:9:50:63 | call to [] [element :b] | semmle.label | call to [] [element :b] |
| hash_extensions.rb:50:9:50:63 | call to [] [element :d] | semmle.label | call to [] [element :d] |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :b] | semmle.label | h : Hash [element :b] |
| hash_extensions.rb:50:5:50:5 | h : Hash [element :d] | semmle.label | h : Hash [element :d] |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :a] | semmle.label | call to [] : Hash [element :a] |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :b] | semmle.label | call to [] : Hash [element :b] |
| hash_extensions.rb:50:9:50:63 | call to [] : Hash [element :d] | semmle.label | call to [] : Hash [element :d] |
| hash_extensions.rb:50:14:50:23 | call to taint | semmle.label | call to taint |
| hash_extensions.rb:50:29:50:38 | call to taint | semmle.label | call to taint |
| hash_extensions.rb:50:52:50:61 | call to taint | semmle.label | call to taint |
| hash_extensions.rb:51:5:51:5 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:51:5:51:5 | x [element :b] | semmle.label | x [element :b] |
| hash_extensions.rb:51:9:51:9 | [post] h [element :d] | semmle.label | [post] h [element :d] |
| hash_extensions.rb:51:9:51:9 | h [element :a] | semmle.label | h [element :a] |
| hash_extensions.rb:51:9:51:9 | h [element :b] | semmle.label | h [element :b] |
| hash_extensions.rb:51:9:51:9 | h [element :d] | semmle.label | h [element :d] |
| hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | semmle.label | call to extract! [element :a] |
| hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | semmle.label | call to extract! [element :b] |
| hash_extensions.rb:56:10:56:10 | h [element :d] | semmle.label | h [element :d] |
| hash_extensions.rb:51:5:51:5 | x : [collection] [element :a] | semmle.label | x : [collection] [element :a] |
| hash_extensions.rb:51:5:51:5 | x : [collection] [element :b] | semmle.label | x : [collection] [element :b] |
| hash_extensions.rb:51:9:51:9 | [post] h : Hash [element :d] | semmle.label | [post] h : Hash [element :d] |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :a] | semmle.label | h : Hash [element :a] |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :b] | semmle.label | h : Hash [element :b] |
| hash_extensions.rb:51:9:51:9 | h : Hash [element :d] | semmle.label | h : Hash [element :d] |
| hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :a] | semmle.label | call to extract! : [collection] [element :a] |
| hash_extensions.rb:51:9:51:29 | call to extract! : [collection] [element :b] | semmle.label | call to extract! : [collection] [element :b] |
| hash_extensions.rb:56:10:56:10 | h : Hash [element :d] | semmle.label | h : Hash [element :d] |
| hash_extensions.rb:56:10:56:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:58:10:58:10 | x [element :a] | semmle.label | x [element :a] |
| hash_extensions.rb:58:10:58:10 | x : [collection] [element :a] | semmle.label | x : [collection] [element :a] |
| hash_extensions.rb:58:10:58:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:59:10:59:10 | x [element :b] | semmle.label | x [element :b] |
| hash_extensions.rb:59:10:59:10 | x : [collection] [element :b] | semmle.label | x : [collection] [element :b] |
| hash_extensions.rb:59:10:59:14 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:67:5:67:10 | values [element 0] | semmle.label | values [element 0] |
| hash_extensions.rb:67:5:67:10 | values [element 1] | semmle.label | values [element 1] |
| hash_extensions.rb:67:5:67:10 | values [element 2] | semmle.label | values [element 2] |
| hash_extensions.rb:67:14:67:52 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| hash_extensions.rb:67:14:67:52 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| hash_extensions.rb:67:14:67:52 | call to [] [element 2] | semmle.label | call to [] [element 2] |
| hash_extensions.rb:67:5:67:10 | values : Array [element 0] | semmle.label | values : Array [element 0] |
| hash_extensions.rb:67:5:67:10 | values : Array [element 1] | semmle.label | values : Array [element 1] |
| hash_extensions.rb:67:5:67:10 | values : Array [element 2] | semmle.label | values : Array [element 2] |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| hash_extensions.rb:67:14:67:52 | call to [] : Array [element 2] | semmle.label | call to [] : Array [element 2] |
| hash_extensions.rb:67:15:67:25 | call to source | semmle.label | call to source |
| hash_extensions.rb:67:28:67:38 | call to source | semmle.label | call to source |
| hash_extensions.rb:67:41:67:51 | call to source | semmle.label | call to source |
| hash_extensions.rb:68:5:68:5 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:68:9:68:14 | values [element 0] | semmle.label | values [element 0] |
| hash_extensions.rb:68:9:68:14 | values [element 1] | semmle.label | values [element 1] |
| hash_extensions.rb:68:9:68:14 | values [element 2] | semmle.label | values [element 2] |
| hash_extensions.rb:68:9:71:7 | call to index_by [element] | semmle.label | call to index_by [element] |
| hash_extensions.rb:68:5:68:5 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:68:9:68:14 | values : Array [element 0] | semmle.label | values : Array [element 0] |
| hash_extensions.rb:68:9:68:14 | values : Array [element 1] | semmle.label | values : Array [element 1] |
| hash_extensions.rb:68:9:68:14 | values : Array [element 2] | semmle.label | values : Array [element 2] |
| hash_extensions.rb:68:9:71:7 | call to index_by : [collection] [element] | semmle.label | call to index_by : [collection] [element] |
| hash_extensions.rb:68:29:68:33 | value | semmle.label | value |
| hash_extensions.rb:69:14:69:18 | value | semmle.label | value |
| hash_extensions.rb:73:10:73:10 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:73:10:73:10 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:73:10:73:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:74:10:74:10 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:74:10:74:10 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:74:10:74:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:80:5:80:10 | values [element 0] | semmle.label | values [element 0] |
| hash_extensions.rb:80:5:80:10 | values [element 1] | semmle.label | values [element 1] |
| hash_extensions.rb:80:5:80:10 | values [element 2] | semmle.label | values [element 2] |
| hash_extensions.rb:80:14:80:52 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| hash_extensions.rb:80:14:80:52 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| hash_extensions.rb:80:14:80:52 | call to [] [element 2] | semmle.label | call to [] [element 2] |
| hash_extensions.rb:80:5:80:10 | values : Array [element 0] | semmle.label | values : Array [element 0] |
| hash_extensions.rb:80:5:80:10 | values : Array [element 1] | semmle.label | values : Array [element 1] |
| hash_extensions.rb:80:5:80:10 | values : Array [element 2] | semmle.label | values : Array [element 2] |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| hash_extensions.rb:80:14:80:52 | call to [] : Array [element 2] | semmle.label | call to [] : Array [element 2] |
| hash_extensions.rb:80:15:80:25 | call to source | semmle.label | call to source |
| hash_extensions.rb:80:28:80:38 | call to source | semmle.label | call to source |
| hash_extensions.rb:80:41:80:51 | call to source | semmle.label | call to source |
| hash_extensions.rb:81:5:81:5 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:81:9:81:14 | values [element 0] | semmle.label | values [element 0] |
| hash_extensions.rb:81:9:81:14 | values [element 1] | semmle.label | values [element 1] |
| hash_extensions.rb:81:9:81:14 | values [element 2] | semmle.label | values [element 2] |
| hash_extensions.rb:81:9:84:7 | call to index_with [element] | semmle.label | call to index_with [element] |
| hash_extensions.rb:81:5:81:5 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:81:9:81:14 | values : Array [element 0] | semmle.label | values : Array [element 0] |
| hash_extensions.rb:81:9:81:14 | values : Array [element 1] | semmle.label | values : Array [element 1] |
| hash_extensions.rb:81:9:81:14 | values : Array [element 2] | semmle.label | values : Array [element 2] |
| hash_extensions.rb:81:9:84:7 | call to index_with : [collection] [element] | semmle.label | call to index_with : [collection] [element] |
| hash_extensions.rb:81:31:81:33 | key | semmle.label | key |
| hash_extensions.rb:82:14:82:16 | key | semmle.label | key |
| hash_extensions.rb:83:9:83:19 | call to source | semmle.label | call to source |
| hash_extensions.rb:86:10:86:10 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:86:10:86:10 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:86:10:86:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:87:10:87:10 | h [element] | semmle.label | h [element] |
| hash_extensions.rb:87:10:87:10 | h : [collection] [element] | semmle.label | h : [collection] [element] |
| hash_extensions.rb:87:10:87:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:89:5:89:5 | j [element] | semmle.label | j [element] |
| hash_extensions.rb:89:9:89:38 | call to index_with [element] | semmle.label | call to index_with [element] |
| hash_extensions.rb:89:5:89:5 | j : [collection] [element] | semmle.label | j : [collection] [element] |
| hash_extensions.rb:89:9:89:38 | call to index_with : [collection] [element] | semmle.label | call to index_with : [collection] [element] |
| hash_extensions.rb:89:27:89:37 | call to source | semmle.label | call to source |
| hash_extensions.rb:91:10:91:10 | j [element] | semmle.label | j [element] |
| hash_extensions.rb:91:10:91:10 | j : [collection] [element] | semmle.label | j : [collection] [element] |
| hash_extensions.rb:91:10:91:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:92:10:92:10 | j [element] | semmle.label | j [element] |
| hash_extensions.rb:92:10:92:10 | j : [collection] [element] | semmle.label | j : [collection] [element] |
| hash_extensions.rb:92:10:92:16 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :id] | semmle.label | call to [] [element 0, element :id] |
| hash_extensions.rb:98:14:98:102 | call to [] [element 0, element :name] | semmle.label | call to [] [element 0, element :name] |
| hash_extensions.rb:98:15:98:56 | call to [] [element :id] | semmle.label | call to [] [element :id] |
| hash_extensions.rb:98:15:98:56 | call to [] [element :name] | semmle.label | call to [] [element :name] |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:98:5:98:10 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :id] | semmle.label | call to [] : Array [element 0, element :id] |
| hash_extensions.rb:98:14:98:102 | call to [] : Array [element 0, element :name] | semmle.label | call to [] : Array [element 0, element :name] |
| hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :id] | semmle.label | call to [] : Hash [element :id] |
| hash_extensions.rb:98:15:98:56 | call to [] : Hash [element :name] | semmle.label | call to [] : Hash [element :name] |
| hash_extensions.rb:98:21:98:31 | call to source | semmle.label | call to source |
| hash_extensions.rb:98:40:98:54 | call to source | semmle.label | call to source |
| hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:99:10:99:15 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:99:10:99:25 | call to pick | semmle.label | call to pick |
| hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:100:10:100:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:100:10:100:27 | call to pick | semmle.label | call to pick |
| hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:101:10:101:32 | call to pick [element 0] | semmle.label | call to pick [element 0] |
| hash_extensions.rb:101:10:101:15 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:101:10:101:32 | call to pick : [collection] [element 0] | semmle.label | call to pick : [collection] [element 0] |
| hash_extensions.rb:101:10:101:35 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:102:10:102:32 | call to pick [element 1] | semmle.label | call to pick [element 1] |
| hash_extensions.rb:102:10:102:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:102:10:102:32 | call to pick : [collection] [element 1] | semmle.label | call to pick : [collection] [element 1] |
| hash_extensions.rb:102:10:102:35 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:103:10:103:32 | call to pick [element 0] | semmle.label | call to pick [element 0] |
| hash_extensions.rb:103:10:103:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:103:10:103:32 | call to pick : [collection] [element 0] | semmle.label | call to pick : [collection] [element 0] |
| hash_extensions.rb:103:10:103:35 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:104:10:104:32 | call to pick [element 1] | semmle.label | call to pick [element 1] |
| hash_extensions.rb:104:10:104:15 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:104:10:104:32 | call to pick : [collection] [element 1] | semmle.label | call to pick : [collection] [element 1] |
| hash_extensions.rb:104:10:104:35 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | semmle.label | values [element 1, element :id] |
| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | semmle.label | values [element 1, element :name] |
| hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :id] | semmle.label | call to [] [element 0, element :id] |
| hash_extensions.rb:110:14:110:102 | call to [] [element 0, element :name] | semmle.label | call to [] [element 0, element :name] |
| hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :id] | semmle.label | call to [] [element 1, element :id] |
| hash_extensions.rb:110:14:110:102 | call to [] [element 1, element :name] | semmle.label | call to [] [element 1, element :name] |
| hash_extensions.rb:110:15:110:56 | call to [] [element :id] | semmle.label | call to [] [element :id] |
| hash_extensions.rb:110:15:110:56 | call to [] [element :name] | semmle.label | call to [] [element :name] |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:110:5:110:10 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :id] | semmle.label | values : Array [element 1, element :id] |
| hash_extensions.rb:110:5:110:10 | values : Array [element 1, element :name] | semmle.label | values : Array [element 1, element :name] |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :id] | semmle.label | call to [] : Array [element 0, element :id] |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 0, element :name] | semmle.label | call to [] : Array [element 0, element :name] |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :id] | semmle.label | call to [] : Array [element 1, element :id] |
| hash_extensions.rb:110:14:110:102 | call to [] : Array [element 1, element :name] | semmle.label | call to [] : Array [element 1, element :name] |
| hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :id] | semmle.label | call to [] : Hash [element :id] |
| hash_extensions.rb:110:15:110:56 | call to [] : Hash [element :name] | semmle.label | call to [] : Hash [element :name] |
| hash_extensions.rb:110:21:110:31 | call to source | semmle.label | call to source |
| hash_extensions.rb:110:40:110:54 | call to source | semmle.label | call to source |
| hash_extensions.rb:110:59:110:101 | call to [] [element :id] | semmle.label | call to [] [element :id] |
| hash_extensions.rb:110:59:110:101 | call to [] [element :name] | semmle.label | call to [] [element :name] |
| hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :id] | semmle.label | call to [] : Hash [element :id] |
| hash_extensions.rb:110:59:110:101 | call to [] : Hash [element :name] | semmle.label | call to [] : Hash [element :name] |
| hash_extensions.rb:110:65:110:75 | call to source | semmle.label | call to source |
| hash_extensions.rb:110:84:110:99 | call to source | semmle.label | call to source |
| hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | semmle.label | values [element 1, element :name] |
| hash_extensions.rb:111:10:111:28 | call to pluck [element] | semmle.label | call to pluck [element] |
| hash_extensions.rb:111:10:111:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:111:10:111:15 | values : Array [element 1, element :name] | semmle.label | values : Array [element 1, element :name] |
| hash_extensions.rb:111:10:111:28 | call to pluck : [collection] [element] | semmle.label | call to pluck : [collection] [element] |
| hash_extensions.rb:111:10:111:31 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | semmle.label | values [element 1, element :id] |
| hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | semmle.label | call to pluck [element, element 0] |
| hash_extensions.rb:112:10:112:15 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:112:10:112:15 | values : Array [element 1, element :id] | semmle.label | values : Array [element 1, element :id] |
| hash_extensions.rb:112:10:112:33 | call to pluck : [collection] [element, element 0] | semmle.label | call to pluck : [collection] [element, element 0] |
| hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | semmle.label | ...[...] [element 0] |
| hash_extensions.rb:112:10:112:39 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | semmle.label | values [element 1, element :name] |
| hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | semmle.label | call to pluck [element, element 1] |
| hash_extensions.rb:113:10:113:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:113:10:113:15 | values : Array [element 1, element :name] | semmle.label | values : Array [element 1, element :name] |
| hash_extensions.rb:113:10:113:33 | call to pluck : [collection] [element, element 1] | semmle.label | call to pluck : [collection] [element, element 1] |
| hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | semmle.label | ...[...] [element 1] |
| hash_extensions.rb:113:10:113:39 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | semmle.label | values [element 0, element :name] |
| hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | semmle.label | values [element 1, element :name] |
| hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | semmle.label | call to pluck [element, element 0] |
| hash_extensions.rb:114:10:114:15 | values : Array [element 0, element :name] | semmle.label | values : Array [element 0, element :name] |
| hash_extensions.rb:114:10:114:15 | values : Array [element 1, element :name] | semmle.label | values : Array [element 1, element :name] |
| hash_extensions.rb:114:10:114:33 | call to pluck : [collection] [element, element 0] | semmle.label | call to pluck : [collection] [element, element 0] |
| hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | semmle.label | ...[...] [element 0] |
| hash_extensions.rb:114:10:114:39 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | semmle.label | values [element 0, element :id] |
| hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | semmle.label | values [element 1, element :id] |
| hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | semmle.label | call to pluck [element, element 1] |
| hash_extensions.rb:115:10:115:15 | values : Array [element 0, element :id] | semmle.label | values : Array [element 0, element :id] |
| hash_extensions.rb:115:10:115:15 | values : Array [element 1, element :id] | semmle.label | values : Array [element 1, element :id] |
| hash_extensions.rb:115:10:115:33 | call to pluck : [collection] [element, element 1] | semmle.label | call to pluck : [collection] [element, element 1] |
| hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | semmle.label | ...[...] [element 1] |
| hash_extensions.rb:115:10:115:39 | ...[...] | semmle.label | ...[...] |
| hash_extensions.rb:122:5:122:10 | single [element 0] | semmle.label | single [element 0] |
| hash_extensions.rb:122:14:122:26 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| hash_extensions.rb:122:5:122:10 | single : Array [element 0] | semmle.label | single : Array [element 0] |
| hash_extensions.rb:122:14:122:26 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| hash_extensions.rb:122:15:122:25 | call to source | semmle.label | call to source |
| hash_extensions.rb:123:5:123:9 | multi [element 0] | semmle.label | multi [element 0] |
| hash_extensions.rb:123:13:123:38 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | semmle.label | multi : Array [element 0] |
| hash_extensions.rb:123:13:123:38 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| hash_extensions.rb:123:14:123:24 | call to source | semmle.label | call to source |
| hash_extensions.rb:125:10:125:15 | single [element 0] | semmle.label | single [element 0] |
| hash_extensions.rb:125:10:125:15 | single : Array [element 0] | semmle.label | single : Array [element 0] |
| hash_extensions.rb:125:10:125:20 | call to sole | semmle.label | call to sole |
| hash_extensions.rb:126:10:126:14 | multi [element 0] | semmle.label | multi [element 0] |
| hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | semmle.label | multi : Array [element 0] |
| hash_extensions.rb:126:10:126:19 | call to sole | semmle.label | call to sole |
subpaths
testFailures

View File

@@ -57,7 +57,6 @@ pathnameInstances
| Pathname.rb:39:12:39:19 | foo_path |
| Pathname.rb:41:1:41:3 | p08 |
| Pathname.rb:42:1:42:3 | p01 |
| file://:0:0:0:0 | [summary param] position 0 in + |
| file://:0:0:0:0 | [summary param] self in + |
| file://:0:0:0:0 | [summary param] self in Pathname;Method[cleanpath] |
| file://:0:0:0:0 | [summary param] self in Pathname;Method[expand_path] |
@@ -134,7 +133,6 @@ fileNameSources
| Pathname.rb:39:12:39:19 | foo_path |
| Pathname.rb:41:1:41:3 | p08 |
| Pathname.rb:42:1:42:3 | p01 |
| file://:0:0:0:0 | [summary param] position 0 in + |
| file://:0:0:0:0 | [summary param] self in + |
| file://:0:0:0:0 | [summary param] self in Pathname;Method[cleanpath] |
| file://:0:0:0:0 | [summary param] self in Pathname;Method[expand_path] |

View File

@@ -3,8 +3,8 @@ edges
| app.rb:75:5:75:8 | [post] self [@foo] | app.rb:76:32:76:35 | self [@foo] | provenance | |
| app.rb:75:12:75:17 | call to params | app.rb:75:12:75:24 | ...[...] | provenance | |
| app.rb:75:12:75:24 | ...[...] | app.rb:75:5:75:8 | [post] self [@foo] | provenance | |
| app.rb:76:25:76:36 | call to [] [element :foo] | views/index.erb:2:10:2:12 | call to foo | provenance | |
| app.rb:76:32:76:35 | @foo | app.rb:76:25:76:36 | call to [] [element :foo] | provenance | |
| app.rb:76:25:76:36 | call to [] : Hash [element :foo] | views/index.erb:2:10:2:12 | call to foo | provenance | |
| app.rb:76:32:76:35 | @foo | app.rb:76:25:76:36 | call to [] : Hash [element :foo] | provenance | |
| app.rb:76:32:76:35 | self [@foo] | app.rb:76:32:76:35 | @foo | provenance | |
| app.rb:95:10:95:14 | self [@user] | app.rb:95:10:95:14 | @user | provenance | |
| app.rb:103:5:103:9 | [post] self [@user] | app.rb:95:10:95:14 | self [@user] | provenance | |
@@ -13,7 +13,7 @@ nodes
| app.rb:75:5:75:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| app.rb:75:12:75:17 | call to params | semmle.label | call to params |
| app.rb:75:12:75:24 | ...[...] | semmle.label | ...[...] |
| app.rb:76:25:76:36 | call to [] [element :foo] | semmle.label | call to [] [element :foo] |
| app.rb:76:25:76:36 | call to [] : Hash [element :foo] | semmle.label | call to [] : Hash [element :foo] |
| app.rb:76:32:76:35 | @foo | semmle.label | @foo |
| app.rb:76:32:76:35 | self [@foo] | semmle.label | self [@foo] |
| app.rb:95:10:95:14 | @user | semmle.label | @user |

View File

@@ -8,14 +8,14 @@ edges
| ErbInjection.rb:8:16:11:14 | ... % ... | ErbInjection.rb:8:5:8:12 | bad_text | provenance | |
| ErbInjection.rb:11:11:11:14 | name | ErbInjection.rb:8:16:11:14 | ... % ... | provenance | |
| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:11:11:11:14 | name | provenance | |
| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | provenance | |
| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | provenance | AdditionalTaintStep |
| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:14:23:14:34 | { ... } : [lambda] [captured bad_text] | provenance | |
| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:23:23:23:35 | { ... } : [lambda] [captured bad2_text] : String | provenance | AdditionalTaintStep |
| SlimInjection.rb:5:12:5:17 | call to params | SlimInjection.rb:5:12:5:24 | ...[...] | provenance | |
| SlimInjection.rb:5:12:5:24 | ...[...] | SlimInjection.rb:5:5:5:8 | name | provenance | |
| SlimInjection.rb:8:16:11:14 | ... % ... | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | provenance | |
| SlimInjection.rb:8:16:11:14 | ... % ... | SlimInjection.rb:14:23:14:34 | { ... } : [lambda] [captured bad_text] | provenance | |
| SlimInjection.rb:11:11:11:14 | name | SlimInjection.rb:8:16:11:14 | ... % ... | provenance | |
| SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | SlimInjection.rb:14:25:14:32 | bad_text | provenance | heuristic-callback |
| SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | SlimInjection.rb:23:25:23:33 | bad2_text | provenance | heuristic-callback |
| SlimInjection.rb:14:23:14:34 | { ... } : [lambda] [captured bad_text] | SlimInjection.rb:14:25:14:32 | bad_text | provenance | heuristic-callback |
| SlimInjection.rb:23:23:23:35 | { ... } : [lambda] [captured bad2_text] : String | SlimInjection.rb:23:25:23:33 | bad2_text | provenance | heuristic-callback |
nodes
| ErbInjection.rb:5:5:5:8 | name | semmle.label | name |
| ErbInjection.rb:5:12:5:17 | call to params | semmle.label | call to params |
@@ -30,9 +30,9 @@ nodes
| SlimInjection.rb:5:12:5:24 | ...[...] | semmle.label | ...[...] |
| SlimInjection.rb:8:16:11:14 | ... % ... | semmle.label | ... % ... |
| SlimInjection.rb:11:11:11:14 | name | semmle.label | name |
| SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | semmle.label | { ... } [captured bad_text] |
| SlimInjection.rb:14:23:14:34 | { ... } : [lambda] [captured bad_text] | semmle.label | { ... } : [lambda] [captured bad_text] |
| SlimInjection.rb:14:25:14:32 | bad_text | semmle.label | bad_text |
| SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | semmle.label | { ... } [captured bad2_text] |
| SlimInjection.rb:23:23:23:35 | { ... } : [lambda] [captured bad2_text] : String | semmle.label | { ... } : [lambda] [captured bad2_text] : String |
| SlimInjection.rb:23:25:23:33 | bad2_text | semmle.label | bad2_text |
subpaths
#select

View File

@@ -24,10 +24,10 @@ edges
| ArchiveApiPathTraversal.rb:10:11:10:23 | ...[...] | ArchiveApiPathTraversal.rb:67:13:67:16 | file | provenance | |
| ArchiveApiPathTraversal.rb:15:9:15:14 | call to params | ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | provenance | |
| ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | ArchiveApiPathTraversal.rb:75:11:75:18 | filename | provenance | |
| ArchiveApiPathTraversal.rb:49:17:49:27 | destination | ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | provenance | |
| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | provenance | heuristic-callback |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | provenance | |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | provenance | heuristic-callback |
| ArchiveApiPathTraversal.rb:49:17:49:27 | destination | ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end : [lambda] [captured destination] | provenance | |
| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end : [lambda] [captured destination] | ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end : [lambda] [captured destination] | provenance | heuristic-callback |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end : [lambda] [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | provenance | |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end : [lambda] [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | provenance | heuristic-callback |
| ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | ArchiveApiPathTraversal.rb:59:21:59:36 | destination_file | provenance | |
| ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | provenance | |
| ArchiveApiPathTraversal.rb:52:38:52:48 | destination | ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | provenance | |
@@ -40,8 +40,8 @@ edges
| tainted_path.rb:10:12:10:43 | call to absolute_path | tainted_path.rb:10:5:10:8 | path | provenance | |
| tainted_path.rb:10:31:10:36 | call to params | tainted_path.rb:10:31:10:43 | ...[...] | provenance | |
| tainted_path.rb:10:31:10:43 | ...[...] | tainted_path.rb:10:12:10:43 | call to absolute_path | provenance | |
| tainted_path.rb:16:5:16:8 | path | tainted_path.rb:17:26:17:29 | path | provenance | |
| tainted_path.rb:16:15:16:41 | call to dirname | tainted_path.rb:16:5:16:8 | path | provenance | AdditionalTaintStep |
| tainted_path.rb:16:5:16:8 | path : String | tainted_path.rb:17:26:17:29 | path | provenance | |
| tainted_path.rb:16:15:16:41 | call to dirname | tainted_path.rb:16:5:16:8 | path : String | provenance | AdditionalTaintStep |
| tainted_path.rb:16:28:16:33 | call to params | tainted_path.rb:16:28:16:40 | ...[...] | provenance | |
| tainted_path.rb:16:28:16:40 | ...[...] | tainted_path.rb:16:15:16:41 | call to dirname | provenance | |
| tainted_path.rb:22:5:22:8 | path | tainted_path.rb:23:26:23:29 | path | provenance | |
@@ -94,8 +94,8 @@ nodes
| ArchiveApiPathTraversal.rb:15:9:15:14 | call to params | semmle.label | call to params |
| ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | semmle.label | ...[...] |
| ArchiveApiPathTraversal.rb:49:17:49:27 | destination | semmle.label | destination |
| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | semmle.label | do ... end [captured destination] |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | semmle.label | do ... end [captured destination] |
| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end : [lambda] [captured destination] | semmle.label | do ... end : [lambda] [captured destination] |
| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end : [lambda] [captured destination] | semmle.label | do ... end : [lambda] [captured destination] |
| ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | semmle.label | destination_file |
| ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | semmle.label | call to join |
| ArchiveApiPathTraversal.rb:52:38:52:48 | destination | semmle.label | destination |
@@ -113,7 +113,7 @@ nodes
| tainted_path.rb:10:31:10:36 | call to params | semmle.label | call to params |
| tainted_path.rb:10:31:10:43 | ...[...] | semmle.label | ...[...] |
| tainted_path.rb:11:26:11:29 | path | semmle.label | path |
| tainted_path.rb:16:5:16:8 | path | semmle.label | path |
| tainted_path.rb:16:5:16:8 | path : String | semmle.label | path : String |
| tainted_path.rb:16:15:16:41 | call to dirname | semmle.label | call to dirname |
| tainted_path.rb:16:28:16:33 | call to params | semmle.label | call to params |
| tainted_path.rb:16:28:16:40 | ...[...] | semmle.label | ...[...] |

View File

@@ -13,9 +13,9 @@ edges
| impl/unsafeShell.rb:51:17:51:17 | x | impl/unsafeShell.rb:54:29:54:29 | x | provenance | |
| impl/unsafeShell.rb:57:21:57:21 | x | impl/unsafeShell.rb:58:23:58:23 | x | provenance | |
| impl/unsafeShell.rb:61:20:61:20 | x | impl/unsafeShell.rb:63:14:63:14 | x | provenance | |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:64:14:64:16 | arr | provenance | |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:68:14:68:16 | arr | provenance | |
| impl/unsafeShell.rb:63:14:63:14 | x | impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | provenance | |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr : [collection] [element] | impl/unsafeShell.rb:64:14:64:16 | arr | provenance | |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr : [collection] [element] | impl/unsafeShell.rb:68:14:68:16 | arr | provenance | |
| impl/unsafeShell.rb:63:14:63:14 | x | impl/unsafeShell.rb:63:5:63:7 | [post] arr : [collection] [element] | provenance | |
nodes
| impl/sub/notImported.rb:2:12:2:17 | target | semmle.label | target |
| impl/sub/notImported.rb:3:19:3:27 | #{...} | semmle.label | #{...} |
@@ -43,7 +43,7 @@ nodes
| impl/unsafeShell.rb:57:21:57:21 | x | semmle.label | x |
| impl/unsafeShell.rb:58:23:58:23 | x | semmle.label | x |
| impl/unsafeShell.rb:61:20:61:20 | x | semmle.label | x |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | semmle.label | [post] arr [element] |
| impl/unsafeShell.rb:63:5:63:7 | [post] arr : [collection] [element] | semmle.label | [post] arr : [collection] [element] |
| impl/unsafeShell.rb:63:14:63:14 | x | semmle.label | x |
| impl/unsafeShell.rb:64:14:64:16 | arr | semmle.label | arr |
| impl/unsafeShell.rb:68:14:68:16 | arr | semmle.label | arr |

View File

@@ -15,16 +15,16 @@ edges
| app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | app/views/foo/bars/show.html.erb:40:3:40:16 | @instance_text | provenance | Config |
| app/controllers/foo/bars_controller.rb:24:39:24:44 | call to params | app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | provenance | |
| app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | app/controllers/foo/bars_controller.rb:24:39:24:59 | ... = ... | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:35:3:35:14 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:82:6:82:17 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:85:36:85:47 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | app/views/foo/bars/show.html.erb:86:28:86:39 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:35:3:35:14 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:82:6:82:17 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:85:36:85:47 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | app/views/foo/bars/show.html.erb:86:28:86:39 | call to display_text | provenance | |
| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | provenance | |
| app/controllers/foo/bars_controller.rb:30:5:30:7 | str | app/controllers/foo/bars_controller.rb:31:5:31:7 | str | provenance | |
| app/controllers/foo/bars_controller.rb:30:11:30:16 | call to params | app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | provenance | |
| app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | app/controllers/foo/bars_controller.rb:30:5:30:7 | str | provenance | |
@@ -36,19 +36,19 @@ edges
| app/controllers/foo/bars_controller.rb:36:34:36:51 | ...[...] | app/controllers/foo/bars_controller.rb:36:5:36:52 | call to t | provenance | |
| app/controllers/foo/bars_controller.rb:37:42:37:47 | call to params | app/controllers/foo/bars_controller.rb:37:42:37:59 | ...[...] | provenance | |
| app/controllers/foo/bars_controller.rb:37:42:37:59 | ...[...] | app/controllers/foo/bars_controller.rb:37:5:37:60 | call to translate | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:26 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:32 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text, element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text] | provenance | |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text, element] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:26 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns : Hash [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:32 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text] | provenance | |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... : [collection] [element] | app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text, element] | provenance | |
| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | provenance | |
| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | provenance | |
| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... : [collection] [element] | provenance | |
| app/views/foo/bars/show.html.erb:53:29:53:34 | call to params | app/views/foo/bars/show.html.erb:53:29:53:44 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:56:13:56:18 | call to params | app/views/foo/bars/show.html.erb:56:13:56:28 | ...[...] | provenance | |
| app/views/foo/bars/show.html.erb:73:19:73:24 | call to params | app/views/foo/bars/show.html.erb:73:19:73:34 | ...[...] | provenance | |
@@ -70,7 +70,7 @@ nodes
| app/controllers/foo/bars_controller.rb:24:39:24:44 | call to params | semmle.label | call to params |
| app/controllers/foo/bars_controller.rb:24:39:24:59 | ... = ... | semmle.label | ... = ... |
| app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | semmle.label | ...[...] |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] [element :display_text] | semmle.label | call to [] [element :display_text] |
| app/controllers/foo/bars_controller.rb:26:37:26:76 | call to [] : Hash [element :display_text] | semmle.label | call to [] : Hash [element :display_text] |
| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | semmle.label | dt |
| app/controllers/foo/bars_controller.rb:30:5:30:7 | str | semmle.label | str |
| app/controllers/foo/bars_controller.rb:30:11:30:16 | call to params | semmle.label | call to params |
@@ -89,23 +89,23 @@ nodes
| app/controllers/foo/bars_controller.rb:37:42:37:47 | call to params | semmle.label | call to params |
| app/controllers/foo/bars_controller.rb:37:42:37:59 | ...[...] | semmle.label | ...[...] |
| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | semmle.label | call to local_assigns [element :display_text, element] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | semmle.label | call to local_assigns : Hash [element :display_text, element] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | semmle.label | ...[...] |
| app/views/foo/bars/show.html.erb:2:18:2:30 | @user_website | semmle.label | @user_website |
| app/views/foo/bars/show.html.erb:5:9:5:20 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/bars/show.html.erb:8:9:8:36 | ...[...] | semmle.label | ...[...] |
| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/bars/show.html.erb:12:9:12:26 | ...[...] | semmle.label | ...[...] |
| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/bars/show.html.erb:17:15:17:32 | ...[...] | semmle.label | ...[...] |
| app/views/foo/bars/show.html.erb:35:3:35:14 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/show.html.erb:40:3:40:16 | @instance_text | semmle.label | @instance_text |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text, element] | semmle.label | call to [] [element :display_text, element] |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] [element :display_text] | semmle.label | call to [] [element :display_text] |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text, element] | semmle.label | call to [] : Hash [element :display_text, element] |
| app/views/foo/bars/show.html.erb:43:48:43:89 | call to [] : Hash [element :display_text] | semmle.label | call to [] : Hash [element :display_text] |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | semmle.label | ... + ... |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | semmle.label | ... + ... [element] |
| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... : [collection] [element] | semmle.label | ... + ... : [collection] [element] |
| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/show.html.erb:46:5:46:13 | call to user_name | semmle.label | call to user_name |
| app/views/foo/bars/show.html.erb:50:5:50:18 | call to user_name_memo | semmle.label | call to user_name_memo |

View File

@@ -3,50 +3,50 @@ edges
| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | provenance | |
| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | provenance | |
| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/views/foo/stores/show.html.erb:37:3:37:16 | @instance_text | provenance | Config |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:32:3:32:14 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:32 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text, element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text] | provenance | |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text, element] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:32:3:32:14 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | provenance | |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns : Hash [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns : Hash [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:32 | ...[...] | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | provenance | |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text] | provenance | |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... : [collection] [element] | app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text, element] | provenance | |
| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | provenance | |
| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | provenance | |
| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... : [collection] [element] | provenance | |
| app/views/foo/stores/show.html.erb:86:17:86:28 | call to handle | app/views/foo/stores/show.html.erb:86:3:86:29 | call to sprintf | provenance | AdditionalTaintStep |
nodes
| app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | semmle.label | dt |
| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | semmle.label | call to read |
| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | semmle.label | dt |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] [element :display_text] | semmle.label | call to [] [element :display_text] |
| app/controllers/foo/stores_controller.rb:13:39:13:78 | call to [] : Hash [element :display_text] | semmle.label | call to [] : Hash [element :display_text] |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | semmle.label | dt |
| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | semmle.label | call to local_assigns [element :display_text, element] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text, element] | semmle.label | call to local_assigns : Hash [element :display_text, element] |
| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | semmle.label | ...[...] |
| app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text | semmle.label | call to display_text |
| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] | semmle.label | ...[...] |
| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] | semmle.label | ...[...] |
| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | semmle.label | call to local_assigns [element :display_text] |
| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns : Hash [element :display_text] | semmle.label | call to local_assigns : Hash [element :display_text] |
| app/views/foo/stores/show.html.erb:14:15:14:32 | ...[...] | semmle.label | ...[...] |
| app/views/foo/stores/show.html.erb:32:3:32:14 | call to display_text | semmle.label | call to display_text |
| app/views/foo/stores/show.html.erb:37:3:37:16 | @instance_text | semmle.label | @instance_text |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text, element] | semmle.label | call to [] [element :display_text, element] |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] [element :display_text] | semmle.label | call to [] [element :display_text] |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text, element] | semmle.label | call to [] : Hash [element :display_text, element] |
| app/views/foo/stores/show.html.erb:40:48:40:89 | call to [] : Hash [element :display_text] | semmle.label | call to [] : Hash [element :display_text] |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | semmle.label | ... + ... |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | semmle.label | ... + ... [element] |
| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... : [collection] [element] | semmle.label | ... + ... : [collection] [element] |
| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | semmle.label | call to display_text |
| app/views/foo/stores/show.html.erb:46:5:46:16 | call to handle | semmle.label | call to handle |
| app/views/foo/stores/show.html.erb:63:3:63:18 | call to handle | semmle.label | call to handle |

View File

@@ -11,12 +11,12 @@ edges
| ActiveRecordInjection.rb:50:29:50:39 | ...[...] | ActiveRecordInjection.rb:50:20:50:42 | "id = '#{...}'" | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:55:30:55:35 | call to params | ActiveRecordInjection.rb:55:30:55:40 | ...[...] | provenance | |
| ActiveRecordInjection.rb:55:30:55:40 | ...[...] | ActiveRecordInjection.rb:55:21:55:43 | "id = '#{...}'" | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" | ActiveRecordInjection.rb:59:21:59:45 | call to [] | provenance | |
| ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" : String | ActiveRecordInjection.rb:59:21:59:45 | call to [] | provenance | |
| ActiveRecordInjection.rb:59:31:59:36 | call to params | ActiveRecordInjection.rb:59:31:59:41 | ...[...] | provenance | |
| ActiveRecordInjection.rb:59:31:59:41 | ...[...] | ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" | ActiveRecordInjection.rb:64:22:64:46 | call to [] | provenance | |
| ActiveRecordInjection.rb:59:31:59:41 | ...[...] | ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" : String | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" : String | ActiveRecordInjection.rb:64:22:64:46 | call to [] | provenance | |
| ActiveRecordInjection.rb:64:32:64:37 | call to params | ActiveRecordInjection.rb:64:32:64:42 | ...[...] | provenance | |
| ActiveRecordInjection.rb:64:32:64:42 | ...[...] | ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:64:32:64:42 | ...[...] | ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" : String | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:69:21:69:26 | call to params | ActiveRecordInjection.rb:69:21:69:35 | ...[...] | provenance | |
| ActiveRecordInjection.rb:69:21:69:35 | ...[...] | ActiveRecordInjection.rb:68:16:68:21 | <<-SQL | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:75:34:75:39 | call to params | ActiveRecordInjection.rb:75:34:75:44 | ...[...] | provenance | |
@@ -51,12 +51,10 @@ edges
| ActiveRecordInjection.rb:129:29:129:34 | call to params | ActiveRecordInjection.rb:129:29:129:39 | ...[...] | provenance | |
| ActiveRecordInjection.rb:135:5:135:6 | ps | ActiveRecordInjection.rb:136:11:136:12 | ps | provenance | |
| ActiveRecordInjection.rb:135:10:135:15 | call to params | ActiveRecordInjection.rb:135:5:135:6 | ps | provenance | |
| ActiveRecordInjection.rb:136:5:136:7 | uid | ActiveRecordInjection.rb:137:5:137:9 | uidEq | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:136:5:136:7 | uid | ActiveRecordInjection.rb:137:5:137:9 | uidEq : String | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:136:11:136:12 | ps | ActiveRecordInjection.rb:136:11:136:17 | ...[...] | provenance | |
| ActiveRecordInjection.rb:136:11:136:17 | ...[...] | ActiveRecordInjection.rb:136:5:136:7 | uid | provenance | |
| ActiveRecordInjection.rb:137:5:137:9 | uidEq | ActiveRecordInjection.rb:141:20:141:32 | ... + ... | provenance | |
| ActiveRecordInjection.rb:137:5:137:9 | uidEq | ActiveRecordInjection.rb:141:28:141:32 | uidEq | provenance | |
| ActiveRecordInjection.rb:141:28:141:32 | uidEq | ActiveRecordInjection.rb:141:20:141:32 | ... + ... | provenance | |
| ActiveRecordInjection.rb:137:5:137:9 | uidEq : String | ActiveRecordInjection.rb:141:20:141:32 | ... + ... | provenance | |
| ActiveRecordInjection.rb:174:21:174:26 | call to params | ActiveRecordInjection.rb:174:21:174:44 | ...[...] | provenance | |
| ActiveRecordInjection.rb:174:21:174:26 | call to params | ActiveRecordInjection.rb:174:21:174:44 | ...[...] | provenance | |
| ActiveRecordInjection.rb:174:21:174:44 | ...[...] | ActiveRecordInjection.rb:27:22:27:30 | condition | provenance | |
@@ -64,9 +62,9 @@ edges
| ActiveRecordInjection.rb:188:59:188:74 | ...[...] | ActiveRecordInjection.rb:188:27:188:76 | "this is an unsafe annotation:..." | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:199:5:199:13 | my_params | ActiveRecordInjection.rb:200:47:200:55 | my_params | provenance | |
| ActiveRecordInjection.rb:199:17:199:32 | call to permitted_params | ActiveRecordInjection.rb:199:5:199:13 | my_params | provenance | |
| ActiveRecordInjection.rb:200:5:200:9 | query | ActiveRecordInjection.rb:201:37:201:41 | query | provenance | |
| ActiveRecordInjection.rb:200:5:200:9 | query : String | ActiveRecordInjection.rb:201:37:201:41 | query | provenance | |
| ActiveRecordInjection.rb:200:47:200:55 | my_params | ActiveRecordInjection.rb:200:47:200:65 | ...[...] | provenance | |
| ActiveRecordInjection.rb:200:47:200:65 | ...[...] | ActiveRecordInjection.rb:200:5:200:9 | query | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:200:47:200:65 | ...[...] | ActiveRecordInjection.rb:200:5:200:9 | query : String | provenance | AdditionalTaintStep |
| ActiveRecordInjection.rb:206:5:206:10 | call to params | ActiveRecordInjection.rb:206:5:206:27 | call to require | provenance | |
| ActiveRecordInjection.rb:206:5:206:27 | call to require | ActiveRecordInjection.rb:206:5:206:59 | call to permit | provenance | |
| ActiveRecordInjection.rb:206:5:206:59 | call to permit | ActiveRecordInjection.rb:199:17:199:32 | call to permitted_params | provenance | |
@@ -83,18 +81,18 @@ edges
| ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | provenance | AdditionalTaintStep |
| ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | provenance | |
| ArelInjection.rb:4:12:4:29 | ...[...] | ArelInjection.rb:4:5:4:8 | name | provenance | |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:13:5:13:8 | qry1 | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:19:5:19:8 | qry2 | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:31:5:31:8 | qry3 | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:43:5:43:8 | qry3 | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:13:5:13:8 | qry1 : String | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:19:5:19:8 | qry2 : String | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:31:5:31:8 | qry3 : String | provenance | AdditionalTaintStep |
| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:43:5:43:8 | qry3 : String | provenance | AdditionalTaintStep |
| PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:6:12:6:24 | ...[...] | provenance | |
| PgInjection.rb:6:12:6:24 | ...[...] | PgInjection.rb:6:5:6:8 | name | provenance | |
| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:14:15:14:18 | qry1 | provenance | |
| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:15:21:15:24 | qry1 | provenance | |
| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:20:22:20:25 | qry2 | provenance | |
| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:21:28:21:31 | qry2 | provenance | |
| PgInjection.rb:31:5:31:8 | qry3 | PgInjection.rb:32:29:32:32 | qry3 | provenance | |
| PgInjection.rb:43:5:43:8 | qry3 | PgInjection.rb:44:29:44:32 | qry3 | provenance | |
| PgInjection.rb:13:5:13:8 | qry1 : String | PgInjection.rb:14:15:14:18 | qry1 | provenance | |
| PgInjection.rb:13:5:13:8 | qry1 : String | PgInjection.rb:15:21:15:24 | qry1 | provenance | |
| PgInjection.rb:19:5:19:8 | qry2 : String | PgInjection.rb:20:22:20:25 | qry2 | provenance | |
| PgInjection.rb:19:5:19:8 | qry2 : String | PgInjection.rb:21:28:21:31 | qry2 | provenance | |
| PgInjection.rb:31:5:31:8 | qry3 : String | PgInjection.rb:32:29:32:32 | qry3 | provenance | |
| PgInjection.rb:43:5:43:8 | qry3 : String | PgInjection.rb:44:29:44:32 | qry3 | provenance | |
nodes
| ActiveRecordInjection.rb:8:25:8:28 | name | semmle.label | name |
| ActiveRecordInjection.rb:8:31:8:34 | pass | semmle.label | pass |
@@ -114,11 +112,11 @@ nodes
| ActiveRecordInjection.rb:55:30:55:35 | call to params | semmle.label | call to params |
| ActiveRecordInjection.rb:55:30:55:40 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:59:21:59:45 | call to [] | semmle.label | call to [] |
| ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" | semmle.label | "id = '#{...}'" |
| ActiveRecordInjection.rb:59:22:59:44 | "id = '#{...}'" : String | semmle.label | "id = '#{...}'" : String |
| ActiveRecordInjection.rb:59:31:59:36 | call to params | semmle.label | call to params |
| ActiveRecordInjection.rb:59:31:59:41 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:64:22:64:46 | call to [] | semmle.label | call to [] |
| ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" | semmle.label | "id = '#{...}'" |
| ActiveRecordInjection.rb:64:23:64:45 | "id = '#{...}'" : String | semmle.label | "id = '#{...}'" : String |
| ActiveRecordInjection.rb:64:32:64:37 | call to params | semmle.label | call to params |
| ActiveRecordInjection.rb:64:32:64:42 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:68:16:68:21 | <<-SQL | semmle.label | <<-SQL |
@@ -179,9 +177,8 @@ nodes
| ActiveRecordInjection.rb:136:5:136:7 | uid | semmle.label | uid |
| ActiveRecordInjection.rb:136:11:136:12 | ps | semmle.label | ps |
| ActiveRecordInjection.rb:136:11:136:17 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:137:5:137:9 | uidEq | semmle.label | uidEq |
| ActiveRecordInjection.rb:137:5:137:9 | uidEq : String | semmle.label | uidEq : String |
| ActiveRecordInjection.rb:141:20:141:32 | ... + ... | semmle.label | ... + ... |
| ActiveRecordInjection.rb:141:28:141:32 | uidEq | semmle.label | uidEq |
| ActiveRecordInjection.rb:174:21:174:26 | call to params | semmle.label | call to params |
| ActiveRecordInjection.rb:174:21:174:44 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:174:21:174:44 | ...[...] | semmle.label | ...[...] |
@@ -190,7 +187,7 @@ nodes
| ActiveRecordInjection.rb:188:59:188:74 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:199:5:199:13 | my_params | semmle.label | my_params |
| ActiveRecordInjection.rb:199:17:199:32 | call to permitted_params | semmle.label | call to permitted_params |
| ActiveRecordInjection.rb:200:5:200:9 | query | semmle.label | query |
| ActiveRecordInjection.rb:200:5:200:9 | query : String | semmle.label | query : String |
| ActiveRecordInjection.rb:200:47:200:55 | my_params | semmle.label | my_params |
| ActiveRecordInjection.rb:200:47:200:65 | ...[...] | semmle.label | ...[...] |
| ActiveRecordInjection.rb:201:37:201:41 | query | semmle.label | query |
@@ -215,15 +212,15 @@ nodes
| PgInjection.rb:6:5:6:8 | name | semmle.label | name |
| PgInjection.rb:6:12:6:17 | call to params | semmle.label | call to params |
| PgInjection.rb:6:12:6:24 | ...[...] | semmle.label | ...[...] |
| PgInjection.rb:13:5:13:8 | qry1 | semmle.label | qry1 |
| PgInjection.rb:13:5:13:8 | qry1 : String | semmle.label | qry1 : String |
| PgInjection.rb:14:15:14:18 | qry1 | semmle.label | qry1 |
| PgInjection.rb:15:21:15:24 | qry1 | semmle.label | qry1 |
| PgInjection.rb:19:5:19:8 | qry2 | semmle.label | qry2 |
| PgInjection.rb:19:5:19:8 | qry2 : String | semmle.label | qry2 : String |
| PgInjection.rb:20:22:20:25 | qry2 | semmle.label | qry2 |
| PgInjection.rb:21:28:21:31 | qry2 | semmle.label | qry2 |
| PgInjection.rb:31:5:31:8 | qry3 | semmle.label | qry3 |
| PgInjection.rb:31:5:31:8 | qry3 : String | semmle.label | qry3 : String |
| PgInjection.rb:32:29:32:32 | qry3 | semmle.label | qry3 |
| PgInjection.rb:43:5:43:8 | qry3 | semmle.label | qry3 |
| PgInjection.rb:43:5:43:8 | qry3 : String | semmle.label | qry3 : String |
| PgInjection.rb:44:29:44:32 | qry3 | semmle.label | qry3 |
subpaths
#select

View File

@@ -15,19 +15,19 @@ nodes
| CodeInjection.rb:78:12:78:17 | call to params | semmle.label | call to params |
| CodeInjection.rb:78:12:78:24 | ...[...] | semmle.label | ...[...] |
| CodeInjection.rb:80:16:80:19 | code | semmle.label | code |
| CodeInjection.rb:86:10:86:25 | ... + ... [element] | semmle.label | ... + ... [element] |
| CodeInjection.rb:86:10:86:25 | ... + ... : [collection] [element] | semmle.label | ... + ... : [collection] [element] |
| CodeInjection.rb:86:10:86:37 | ... + ... | semmle.label | ... + ... |
| CodeInjection.rb:86:22:86:25 | code | semmle.label | code |
| CodeInjection.rb:88:10:88:32 | "prefix_#{...}_suffix" | semmle.label | "prefix_#{...}_suffix" |
| CodeInjection.rb:90:10:90:13 | code | semmle.label | code |
| CodeInjection.rb:101:3:102:5 | self in index [@foo] | semmle.label | self in index [@foo] |
| CodeInjection.rb:101:3:102:5 | self in index : PostsController [@foo] | semmle.label | self in index : PostsController [@foo] |
| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | semmle.label | [post] self [@foo] |
| CodeInjection.rb:105:12:105:17 | call to params | semmle.label | call to params |
| CodeInjection.rb:105:12:105:23 | ...[...] | semmle.label | ...[...] |
| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | semmle.label | self in bar [@foo] |
| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | semmle.label | self in baz [@foo] |
| CodeInjection.rb:108:3:109:5 | self in bar : PostsController [@foo] | semmle.label | self in bar : PostsController [@foo] |
| CodeInjection.rb:111:3:113:5 | self in baz : PostsController [@foo] | semmle.label | self in baz : PostsController [@foo] |
| CodeInjection.rb:112:10:112:13 | @foo | semmle.label | @foo |
| CodeInjection.rb:112:10:112:13 | self [@foo] | semmle.label | self [@foo] |
| CodeInjection.rb:112:10:112:13 | self : PostsController [@foo] | semmle.label | self : PostsController [@foo] |
edges
| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:8:10:8:13 | code | provenance | |
| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:20:20:20:23 | code | provenance | |
@@ -46,15 +46,15 @@ edges
| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:90:10:90:13 | code | provenance | |
| CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | provenance | |
| CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | provenance | |
| CodeInjection.rb:86:10:86:25 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | |
| CodeInjection.rb:86:22:86:25 | code | CodeInjection.rb:86:10:86:25 | ... + ... [element] | provenance | |
| CodeInjection.rb:101:3:102:5 | self in index [@foo] | CodeInjection.rb:111:3:113:5 | self in baz [@foo] | provenance | |
| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar [@foo] | provenance | |
| CodeInjection.rb:86:10:86:25 | ... + ... : [collection] [element] | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | |
| CodeInjection.rb:86:22:86:25 | code | CodeInjection.rb:86:10:86:25 | ... + ... : [collection] [element] | provenance | |
| CodeInjection.rb:101:3:102:5 | self in index : PostsController [@foo] | CodeInjection.rb:111:3:113:5 | self in baz : PostsController [@foo] | provenance | |
| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar : PostsController [@foo] | provenance | |
| CodeInjection.rb:105:12:105:17 | call to params | CodeInjection.rb:105:12:105:23 | ...[...] | provenance | |
| CodeInjection.rb:105:12:105:23 | ...[...] | CodeInjection.rb:105:5:105:8 | [post] self [@foo] | provenance | |
| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | CodeInjection.rb:101:3:102:5 | self in index [@foo] | provenance | |
| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | CodeInjection.rb:112:10:112:13 | self [@foo] | provenance | |
| CodeInjection.rb:112:10:112:13 | self [@foo] | CodeInjection.rb:112:10:112:13 | @foo | provenance | |
| CodeInjection.rb:108:3:109:5 | self in bar : PostsController [@foo] | CodeInjection.rb:101:3:102:5 | self in index : PostsController [@foo] | provenance | |
| CodeInjection.rb:111:3:113:5 | self in baz : PostsController [@foo] | CodeInjection.rb:112:10:112:13 | self : PostsController [@foo] | provenance | |
| CodeInjection.rb:112:10:112:13 | self : PostsController [@foo] | CodeInjection.rb:112:10:112:13 | @foo | provenance | |
subpaths
#select
| CodeInjection.rb:8:10:8:13 | code | CodeInjection.rb:5:12:5:17 | call to params | CodeInjection.rb:8:10:8:13 | code | This code execution depends on a $@. | CodeInjection.rb:5:12:5:17 | call to params | user-provided value |

View File

@@ -4,26 +4,26 @@ edges
| impl/unsafeCode.rb:12:12:12:12 | x | impl/unsafeCode.rb:13:33:13:33 | x | provenance | |
| impl/unsafeCode.rb:28:17:28:22 | my_arr | impl/unsafeCode.rb:29:10:29:15 | my_arr | provenance | |
| impl/unsafeCode.rb:32:21:32:21 | x | impl/unsafeCode.rb:33:12:33:12 | x | provenance | |
| impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | impl/unsafeCode.rb:34:10:34:12 | arr | provenance | |
| impl/unsafeCode.rb:33:11:33:23 | call to [] [element 0] | impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | provenance | |
| impl/unsafeCode.rb:33:12:33:12 | x | impl/unsafeCode.rb:33:11:33:23 | call to [] [element 0] | provenance | |
| impl/unsafeCode.rb:33:5:33:7 | arr : Array [element 0] | impl/unsafeCode.rb:34:10:34:12 | arr | provenance | |
| impl/unsafeCode.rb:33:11:33:23 | call to [] : Array [element 0] | impl/unsafeCode.rb:33:5:33:7 | arr : Array [element 0] | provenance | |
| impl/unsafeCode.rb:33:12:33:12 | x | impl/unsafeCode.rb:33:11:33:23 | call to [] : Array [element 0] | provenance | |
| impl/unsafeCode.rb:37:15:37:15 | x | impl/unsafeCode.rb:39:14:39:14 | x | provenance | |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:40:10:40:12 | arr | provenance | |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:44:10:44:12 | arr | provenance | |
| impl/unsafeCode.rb:39:14:39:14 | x | impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | provenance | |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr : [collection] [element] | impl/unsafeCode.rb:40:10:40:12 | arr | provenance | |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr : [collection] [element] | impl/unsafeCode.rb:44:10:44:12 | arr | provenance | |
| impl/unsafeCode.rb:39:14:39:14 | x | impl/unsafeCode.rb:39:5:39:7 | [post] arr : [collection] [element] | provenance | |
| impl/unsafeCode.rb:47:15:47:15 | x | impl/unsafeCode.rb:49:9:49:12 | #{...} | provenance | |
| impl/unsafeCode.rb:54:21:54:21 | x | impl/unsafeCode.rb:55:22:55:22 | x | provenance | |
| impl/unsafeCode.rb:59:21:59:21 | x | impl/unsafeCode.rb:60:17:60:17 | x | provenance | |
| impl/unsafeCode.rb:59:24:59:24 | y | impl/unsafeCode.rb:63:30:63:30 | y | provenance | |
| impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | impl/unsafeCode.rb:61:10:61:12 | arr | provenance | |
| impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | provenance | |
| impl/unsafeCode.rb:60:17:60:17 | x | impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | provenance | |
| impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | impl/unsafeCode.rb:64:10:64:13 | arr2 | provenance | |
| impl/unsafeCode.rb:63:12:63:43 | call to [] [element 0] | impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | provenance | |
| impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | impl/unsafeCode.rb:63:13:63:42 | call to join | provenance | |
| impl/unsafeCode.rb:63:13:63:42 | call to join | impl/unsafeCode.rb:63:12:63:43 | call to [] [element 0] | provenance | |
| impl/unsafeCode.rb:63:19:63:31 | call to [] [element 1] | impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | provenance | |
| impl/unsafeCode.rb:63:30:63:30 | y | impl/unsafeCode.rb:63:19:63:31 | call to [] [element 1] | provenance | |
| impl/unsafeCode.rb:60:5:60:7 | arr : [collection] [element 0] | impl/unsafeCode.rb:61:10:61:12 | arr | provenance | |
| impl/unsafeCode.rb:60:11:60:18 | call to Array : [collection] [element 0] | impl/unsafeCode.rb:60:5:60:7 | arr : [collection] [element 0] | provenance | |
| impl/unsafeCode.rb:60:17:60:17 | x | impl/unsafeCode.rb:60:11:60:18 | call to Array : [collection] [element 0] | provenance | |
| impl/unsafeCode.rb:63:5:63:8 | arr2 : Array [element 0] | impl/unsafeCode.rb:64:10:64:13 | arr2 | provenance | |
| impl/unsafeCode.rb:63:12:63:43 | call to [] : Array [element 0] | impl/unsafeCode.rb:63:5:63:8 | arr2 : Array [element 0] | provenance | |
| impl/unsafeCode.rb:63:13:63:32 | call to Array : Array [element 1] | impl/unsafeCode.rb:63:13:63:42 | call to join | provenance | |
| impl/unsafeCode.rb:63:13:63:42 | call to join | impl/unsafeCode.rb:63:12:63:43 | call to [] : Array [element 0] | provenance | |
| impl/unsafeCode.rb:63:19:63:31 | call to [] : Array [element 1] | impl/unsafeCode.rb:63:13:63:32 | call to Array : Array [element 1] | provenance | |
| impl/unsafeCode.rb:63:30:63:30 | y | impl/unsafeCode.rb:63:19:63:31 | call to [] : Array [element 1] | provenance | |
nodes
| impl/unsafeCode.rb:2:12:2:17 | target | semmle.label | target |
| impl/unsafeCode.rb:3:17:3:25 | #{...} | semmle.label | #{...} |
@@ -34,12 +34,12 @@ nodes
| impl/unsafeCode.rb:28:17:28:22 | my_arr | semmle.label | my_arr |
| impl/unsafeCode.rb:29:10:29:15 | my_arr | semmle.label | my_arr |
| impl/unsafeCode.rb:32:21:32:21 | x | semmle.label | x |
| impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | semmle.label | arr [element 0] |
| impl/unsafeCode.rb:33:11:33:23 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| impl/unsafeCode.rb:33:5:33:7 | arr : Array [element 0] | semmle.label | arr : Array [element 0] |
| impl/unsafeCode.rb:33:11:33:23 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| impl/unsafeCode.rb:33:12:33:12 | x | semmle.label | x |
| impl/unsafeCode.rb:34:10:34:12 | arr | semmle.label | arr |
| impl/unsafeCode.rb:37:15:37:15 | x | semmle.label | x |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | semmle.label | [post] arr [element] |
| impl/unsafeCode.rb:39:5:39:7 | [post] arr : [collection] [element] | semmle.label | [post] arr : [collection] [element] |
| impl/unsafeCode.rb:39:14:39:14 | x | semmle.label | x |
| impl/unsafeCode.rb:40:10:40:12 | arr | semmle.label | arr |
| impl/unsafeCode.rb:44:10:44:12 | arr | semmle.label | arr |
@@ -49,15 +49,15 @@ nodes
| impl/unsafeCode.rb:55:22:55:22 | x | semmle.label | x |
| impl/unsafeCode.rb:59:21:59:21 | x | semmle.label | x |
| impl/unsafeCode.rb:59:24:59:24 | y | semmle.label | y |
| impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | semmle.label | arr [element 0] |
| impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | semmle.label | call to Array [element 0] |
| impl/unsafeCode.rb:60:5:60:7 | arr : [collection] [element 0] | semmle.label | arr : [collection] [element 0] |
| impl/unsafeCode.rb:60:11:60:18 | call to Array : [collection] [element 0] | semmle.label | call to Array : [collection] [element 0] |
| impl/unsafeCode.rb:60:17:60:17 | x | semmle.label | x |
| impl/unsafeCode.rb:61:10:61:12 | arr | semmle.label | arr |
| impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | semmle.label | arr2 [element 0] |
| impl/unsafeCode.rb:63:12:63:43 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | semmle.label | call to Array [element 1] |
| impl/unsafeCode.rb:63:5:63:8 | arr2 : Array [element 0] | semmle.label | arr2 : Array [element 0] |
| impl/unsafeCode.rb:63:12:63:43 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] |
| impl/unsafeCode.rb:63:13:63:32 | call to Array : Array [element 1] | semmle.label | call to Array : Array [element 1] |
| impl/unsafeCode.rb:63:13:63:42 | call to join | semmle.label | call to join |
| impl/unsafeCode.rb:63:19:63:31 | call to [] [element 1] | semmle.label | call to [] [element 1] |
| impl/unsafeCode.rb:63:19:63:31 | call to [] : Array [element 1] | semmle.label | call to [] : Array [element 1] |
| impl/unsafeCode.rb:63:30:63:30 | y | semmle.label | y |
| impl/unsafeCode.rb:64:10:64:13 | arr2 | semmle.label | arr2 |
subpaths

View File

@@ -7,16 +7,16 @@ edges
| app/controllers/users_controller.rb:15:19:15:30 | ...[...] | app/controllers/users_controller.rb:15:5:15:15 | unsanitized | provenance | |
| app/controllers/users_controller.rb:17:31:17:41 | unsanitized | app/controllers/users_controller.rb:17:19:17:41 | ... + ... | provenance | |
| app/controllers/users_controller.rb:23:20:23:30 | unsanitized | app/controllers/users_controller.rb:23:20:23:44 | call to sub | provenance | |
| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | provenance | |
| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:24:18:26:7 | do ... end : [lambda] [captured unsanitized2] | provenance | |
| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | provenance | |
| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | provenance | |
| app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | app/controllers/users_controller.rb:25:7:25:18 | unsanitized2 | provenance | heuristic-callback |
| app/controllers/users_controller.rb:24:18:26:7 | do ... end : [lambda] [captured unsanitized2] | app/controllers/users_controller.rb:25:7:25:18 | unsanitized2 | provenance | heuristic-callback |
| app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | provenance | |
| app/controllers/users_controller.rb:33:19:33:25 | call to cookies | app/controllers/users_controller.rb:33:19:33:31 | ...[...] | provenance | |
| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | provenance | |
| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | provenance | |
| app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:34:33:34:43 | unsanitized | provenance | heuristic-callback |
| app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:35:45:35:55 | unsanitized | provenance | heuristic-callback |
| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:34:31:34:45 | { ... } : [lambda] [captured unsanitized] | provenance | |
| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:35:31:35:57 | { ... } : [lambda] [captured unsanitized] | provenance | |
| app/controllers/users_controller.rb:34:31:34:45 | { ... } : [lambda] [captured unsanitized] | app/controllers/users_controller.rb:34:33:34:43 | unsanitized | provenance | heuristic-callback |
| app/controllers/users_controller.rb:35:31:35:57 | { ... } : [lambda] [captured unsanitized] | app/controllers/users_controller.rb:35:45:35:55 | unsanitized | provenance | heuristic-callback |
| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | app/controllers/users_controller.rb:35:33:35:55 | ... + ... | provenance | |
| app/controllers/users_controller.rb:49:19:49:24 | call to params | app/controllers/users_controller.rb:49:19:49:30 | ...[...] | provenance | |
nodes
@@ -28,15 +28,15 @@ nodes
| app/controllers/users_controller.rb:17:31:17:41 | unsanitized | semmle.label | unsanitized |
| app/controllers/users_controller.rb:23:20:23:30 | unsanitized | semmle.label | unsanitized |
| app/controllers/users_controller.rb:23:20:23:44 | call to sub | semmle.label | call to sub |
| app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | semmle.label | do ... end [captured unsanitized2] |
| app/controllers/users_controller.rb:24:18:26:7 | do ... end : [lambda] [captured unsanitized2] | semmle.label | do ... end : [lambda] [captured unsanitized2] |
| app/controllers/users_controller.rb:25:7:25:18 | unsanitized2 | semmle.label | unsanitized2 |
| app/controllers/users_controller.rb:27:16:27:39 | ... + ... | semmle.label | ... + ... |
| app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | semmle.label | unsanitized2 |
| app/controllers/users_controller.rb:33:19:33:25 | call to cookies | semmle.label | call to cookies |
| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | semmle.label | ...[...] |
| app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | semmle.label | { ... } [captured unsanitized] |
| app/controllers/users_controller.rb:34:31:34:45 | { ... } : [lambda] [captured unsanitized] | semmle.label | { ... } : [lambda] [captured unsanitized] |
| app/controllers/users_controller.rb:34:33:34:43 | unsanitized | semmle.label | unsanitized |
| app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | semmle.label | { ... } [captured unsanitized] |
| app/controllers/users_controller.rb:35:31:35:57 | { ... } : [lambda] [captured unsanitized] | semmle.label | { ... } : [lambda] [captured unsanitized] |
| app/controllers/users_controller.rb:35:33:35:55 | ... + ... | semmle.label | ... + ... |
| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | semmle.label | unsanitized |
| app/controllers/users_controller.rb:49:19:49:24 | call to params | semmle.label | call to params |

View File

@@ -1,47 +1,47 @@
edges
| logging.rb:3:1:3:8 | password | logging.rb:6:20:6:27 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:8:21:8:28 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:10:21:10:28 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:12:21:12:28 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:14:23:14:30 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:16:20:16:27 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:19:33:19:40 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:21:44:21:51 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:23:33:23:40 | password | provenance | |
| logging.rb:3:1:3:8 | password | logging.rb:26:18:26:34 | "pw: #{...}" | provenance | AdditionalTaintStep |
| logging.rb:3:1:3:8 | password | logging.rb:28:26:28:33 | password | provenance | |
| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:3:1:3:8 | password | provenance | |
| logging.rb:30:1:30:4 | hsh1 [element :password] | logging.rb:38:20:38:23 | hsh1 [element :password] | provenance | |
| logging.rb:30:8:30:55 | call to [] [element :password] | logging.rb:30:1:30:4 | hsh1 [element :password] | provenance | |
| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | logging.rb:30:8:30:55 | call to [] [element :password] | provenance | |
| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:35:1:35:4 | hsh3 [element :password] | provenance | |
| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:40:20:40:23 | hsh2 [element :password] | provenance | |
| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | logging.rb:34:1:34:4 | [post] hsh2 [element :password] | provenance | |
| logging.rb:35:1:35:4 | hsh3 [element :password] | logging.rb:42:20:42:23 | hsh3 [element :password] | provenance | |
| logging.rb:38:20:38:23 | hsh1 [element :password] | logging.rb:38:20:38:34 | ...[...] | provenance | |
| logging.rb:40:20:40:23 | hsh2 [element :password] | logging.rb:40:20:40:34 | ...[...] | provenance | |
| logging.rb:42:20:42:23 | hsh3 [element :password] | logging.rb:42:20:42:34 | ...[...] | provenance | |
| logging.rb:64:1:64:31 | password_masked_ineffective_sub | logging.rb:68:35:68:65 | password_masked_ineffective_sub | provenance | |
| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:64:1:64:31 | password_masked_ineffective_sub | provenance | |
| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | provenance | |
| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | provenance | |
| logging.rb:66:1:66:32 | password_masked_ineffective_gsub | logging.rb:70:36:70:67 | password_masked_ineffective_gsub | provenance | |
| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:66:1:66:32 | password_masked_ineffective_gsub | provenance | |
| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | provenance | |
| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:6:20:6:27 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:8:21:8:28 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:10:21:10:28 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:12:21:12:28 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:14:23:14:30 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:16:20:16:27 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:19:33:19:40 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:21:44:21:51 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:23:33:23:40 | password | provenance | |
| logging.rb:3:1:3:8 | password : String | logging.rb:26:18:26:34 | "pw: #{...}" | provenance | AdditionalTaintStep |
| logging.rb:3:1:3:8 | password : String | logging.rb:28:26:28:33 | password | provenance | |
| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:3:1:3:8 | password : String | provenance | |
| logging.rb:30:1:30:4 | hsh1 : Hash [element :password] : String | logging.rb:38:20:38:23 | hsh1 : Hash [element :password] : String | provenance | |
| logging.rb:30:8:30:55 | call to [] : Hash [element :password] : String | logging.rb:30:1:30:4 | hsh1 : Hash [element :password] : String | provenance | |
| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" : String | logging.rb:30:8:30:55 | call to [] : Hash [element :password] : String | provenance | |
| logging.rb:34:1:34:4 | [post] hsh2 : [collection] [element :password] : String | logging.rb:35:1:35:4 | hsh3 : [collection] [element :password] : String | provenance | |
| logging.rb:34:1:34:4 | [post] hsh2 : [collection] [element :password] : String | logging.rb:40:20:40:23 | hsh2 : [collection] [element :password] : String | provenance | |
| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" : String | logging.rb:34:1:34:4 | [post] hsh2 : [collection] [element :password] : String | provenance | |
| logging.rb:35:1:35:4 | hsh3 : [collection] [element :password] : String | logging.rb:42:20:42:23 | hsh3 : [collection] [element :password] : String | provenance | |
| logging.rb:38:20:38:23 | hsh1 : Hash [element :password] : String | logging.rb:38:20:38:34 | ...[...] | provenance | |
| logging.rb:40:20:40:23 | hsh2 : [collection] [element :password] : String | logging.rb:40:20:40:34 | ...[...] | provenance | |
| logging.rb:42:20:42:23 | hsh3 : [collection] [element :password] : String | logging.rb:42:20:42:34 | ...[...] | provenance | |
| logging.rb:64:1:64:31 | password_masked_ineffective_sub : String | logging.rb:68:35:68:65 | password_masked_ineffective_sub : String | provenance | |
| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" : String | logging.rb:64:1:64:31 | password_masked_ineffective_sub : String | provenance | |
| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex : String | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | provenance | |
| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" : String | logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex : String | provenance | |
| logging.rb:66:1:66:32 | password_masked_ineffective_gsub : String | logging.rb:70:36:70:67 | password_masked_ineffective_gsub : String | provenance | |
| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" : String | logging.rb:66:1:66:32 | password_masked_ineffective_gsub : String | provenance | |
| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex : String | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | provenance | |
| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" : String | logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex : String | provenance | |
| logging.rb:68:1:68:31 | password_masked_ineffective_sub | logging.rb:74:20:74:50 | password_masked_ineffective_sub | provenance | |
| logging.rb:68:35:68:65 | password_masked_ineffective_sub | logging.rb:68:35:68:88 | call to sub | provenance | |
| logging.rb:68:35:68:65 | password_masked_ineffective_sub : String | logging.rb:68:35:68:88 | call to sub | provenance | |
| logging.rb:68:35:68:88 | call to sub | logging.rb:68:1:68:31 | password_masked_ineffective_sub | provenance | |
| logging.rb:70:1:70:32 | password_masked_ineffective_gsub | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | provenance | |
| logging.rb:70:36:70:67 | password_masked_ineffective_gsub | logging.rb:70:36:70:86 | call to gsub | provenance | |
| logging.rb:70:36:70:67 | password_masked_ineffective_gsub : String | logging.rb:70:36:70:86 | call to gsub | provenance | |
| logging.rb:70:36:70:86 | call to gsub | logging.rb:70:1:70:32 | password_masked_ineffective_gsub | provenance | |
| logging.rb:82:9:82:16 | password | logging.rb:84:15:84:22 | password | provenance | |
| logging.rb:87:1:87:12 | password_arg | logging.rb:88:5:88:16 | password_arg | provenance | |
| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | logging.rb:87:1:87:12 | password_arg | provenance | |
| logging.rb:88:5:88:16 | password_arg | logging.rb:82:9:82:16 | password | provenance | |
| logging.rb:82:9:82:16 | password : String | logging.rb:84:15:84:22 | password | provenance | |
| logging.rb:87:1:87:12 | password_arg : String | logging.rb:88:5:88:16 | password_arg : String | provenance | |
| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" : String | logging.rb:87:1:87:12 | password_arg : String | provenance | |
| logging.rb:88:5:88:16 | password_arg : String | logging.rb:82:9:82:16 | password : String | provenance | |
nodes
| logging.rb:3:1:3:8 | password | semmle.label | password |
| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | semmle.label | "043697b96909e03ca907599d6420555f" |
| logging.rb:3:1:3:8 | password : String | semmle.label | password : String |
| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | semmle.label | "043697b96909e03ca907599d6420555f" : String |
| logging.rb:6:20:6:27 | password | semmle.label | password |
| logging.rb:8:21:8:28 | password | semmle.label | password |
| logging.rb:10:21:10:28 | password | semmle.label | password |
@@ -53,62 +53,62 @@ nodes
| logging.rb:23:33:23:40 | password | semmle.label | password |
| logging.rb:26:18:26:34 | "pw: #{...}" | semmle.label | "pw: #{...}" |
| logging.rb:28:26:28:33 | password | semmle.label | password |
| logging.rb:30:1:30:4 | hsh1 [element :password] | semmle.label | hsh1 [element :password] |
| logging.rb:30:8:30:55 | call to [] [element :password] | semmle.label | call to [] [element :password] |
| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | semmle.label | "aec5058e61f7f122998b1a30ee2c66b6" |
| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | semmle.label | [post] hsh2 [element :password] |
| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | semmle.label | "beeda625d7306b45784d91ea0336e201" |
| logging.rb:35:1:35:4 | hsh3 [element :password] | semmle.label | hsh3 [element :password] |
| logging.rb:38:20:38:23 | hsh1 [element :password] | semmle.label | hsh1 [element :password] |
| logging.rb:30:1:30:4 | hsh1 : Hash [element :password] : String | semmle.label | hsh1 : Hash [element :password] : String |
| logging.rb:30:8:30:55 | call to [] : Hash [element :password] : String | semmle.label | call to [] : Hash [element :password] : String |
| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" : String | semmle.label | "aec5058e61f7f122998b1a30ee2c66b6" : String |
| logging.rb:34:1:34:4 | [post] hsh2 : [collection] [element :password] : String | semmle.label | [post] hsh2 : [collection] [element :password] : String |
| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" : String | semmle.label | "beeda625d7306b45784d91ea0336e201" : String |
| logging.rb:35:1:35:4 | hsh3 : [collection] [element :password] : String | semmle.label | hsh3 : [collection] [element :password] : String |
| logging.rb:38:20:38:23 | hsh1 : Hash [element :password] : String | semmle.label | hsh1 : Hash [element :password] : String |
| logging.rb:38:20:38:34 | ...[...] | semmle.label | ...[...] |
| logging.rb:40:20:40:23 | hsh2 [element :password] | semmle.label | hsh2 [element :password] |
| logging.rb:40:20:40:23 | hsh2 : [collection] [element :password] : String | semmle.label | hsh2 : [collection] [element :password] : String |
| logging.rb:40:20:40:34 | ...[...] | semmle.label | ...[...] |
| logging.rb:42:20:42:23 | hsh3 [element :password] | semmle.label | hsh3 [element :password] |
| logging.rb:42:20:42:23 | hsh3 : [collection] [element :password] : String | semmle.label | hsh3 : [collection] [element :password] : String |
| logging.rb:42:20:42:34 | ...[...] | semmle.label | ...[...] |
| logging.rb:64:1:64:31 | password_masked_ineffective_sub | semmle.label | password_masked_ineffective_sub |
| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | semmle.label | "ca497451f5e883662fb1a37bc9ec7838" |
| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | semmle.label | password_masked_ineffective_sub_ex |
| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | semmle.label | "ca497451f5e883662fb1a37bc9ec7838" |
| logging.rb:66:1:66:32 | password_masked_ineffective_gsub | semmle.label | password_masked_ineffective_gsub |
| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | semmle.label | "a7e3747b19930d4f4b8181047194832f" |
| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | semmle.label | password_masked_ineffective_gsub_ex |
| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | semmle.label | "a7e3747b19930d4f4b8181047194832f" |
| logging.rb:64:1:64:31 | password_masked_ineffective_sub : String | semmle.label | password_masked_ineffective_sub : String |
| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" : String | semmle.label | "ca497451f5e883662fb1a37bc9ec7838" : String |
| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex : String | semmle.label | password_masked_ineffective_sub_ex : String |
| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" : String | semmle.label | "ca497451f5e883662fb1a37bc9ec7838" : String |
| logging.rb:66:1:66:32 | password_masked_ineffective_gsub : String | semmle.label | password_masked_ineffective_gsub : String |
| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" : String | semmle.label | "a7e3747b19930d4f4b8181047194832f" : String |
| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex : String | semmle.label | password_masked_ineffective_gsub_ex : String |
| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" : String | semmle.label | "a7e3747b19930d4f4b8181047194832f" : String |
| logging.rb:68:1:68:31 | password_masked_ineffective_sub | semmle.label | password_masked_ineffective_sub |
| logging.rb:68:35:68:65 | password_masked_ineffective_sub | semmle.label | password_masked_ineffective_sub |
| logging.rb:68:35:68:65 | password_masked_ineffective_sub : String | semmle.label | password_masked_ineffective_sub : String |
| logging.rb:68:35:68:88 | call to sub | semmle.label | call to sub |
| logging.rb:70:1:70:32 | password_masked_ineffective_gsub | semmle.label | password_masked_ineffective_gsub |
| logging.rb:70:36:70:67 | password_masked_ineffective_gsub | semmle.label | password_masked_ineffective_gsub |
| logging.rb:70:36:70:67 | password_masked_ineffective_gsub : String | semmle.label | password_masked_ineffective_gsub : String |
| logging.rb:70:36:70:86 | call to gsub | semmle.label | call to gsub |
| logging.rb:74:20:74:50 | password_masked_ineffective_sub | semmle.label | password_masked_ineffective_sub |
| logging.rb:76:20:76:51 | password_masked_ineffective_gsub | semmle.label | password_masked_ineffective_gsub |
| logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | semmle.label | password_masked_ineffective_sub_ex |
| logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | semmle.label | password_masked_ineffective_gsub_ex |
| logging.rb:82:9:82:16 | password | semmle.label | password |
| logging.rb:82:9:82:16 | password : String | semmle.label | password : String |
| logging.rb:84:15:84:22 | password | semmle.label | password |
| logging.rb:87:1:87:12 | password_arg | semmle.label | password_arg |
| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | semmle.label | "65f2950df2f0e2c38d7ba2ccca767291" |
| logging.rb:88:5:88:16 | password_arg | semmle.label | password_arg |
| logging.rb:87:1:87:12 | password_arg : String | semmle.label | password_arg : String |
| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" : String | semmle.label | "65f2950df2f0e2c38d7ba2ccca767291" : String |
| logging.rb:88:5:88:16 | password_arg : String | semmle.label | password_arg : String |
subpaths
#select
| logging.rb:6:20:6:27 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:6:20:6:27 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:8:21:8:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:8:21:8:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:10:21:10:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:10:21:10:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:12:21:12:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:12:21:12:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:14:23:14:30 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:14:23:14:30 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:16:20:16:27 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:16:20:16:27 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:19:33:19:40 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:19:33:19:40 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:21:44:21:51 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:21:44:21:51 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:23:33:23:40 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:23:33:23:40 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:26:18:26:34 | "pw: #{...}" | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:26:18:26:34 | "pw: #{...}" | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:28:26:28:33 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:28:26:28:33 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:38:20:38:34 | ...[...] | logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | logging.rb:38:20:38:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | a write to password |
| logging.rb:40:20:40:34 | ...[...] | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | logging.rb:40:20:40:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | a write to password |
| logging.rb:42:20:42:34 | ...[...] | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | logging.rb:42:20:42:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | a write to password |
| logging.rb:74:20:74:50 | password_masked_ineffective_sub | logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:74:20:74:50 | password_masked_ineffective_sub | This logs sensitive data returned by $@ as clear text. | logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | an assignment to password_masked_ineffective_sub |
| logging.rb:6:20:6:27 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:6:20:6:27 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:8:21:8:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:8:21:8:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:10:21:10:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:10:21:10:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:12:21:12:28 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:12:21:12:28 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:14:23:14:30 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:14:23:14:30 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:16:20:16:27 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:16:20:16:27 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:19:33:19:40 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:19:33:19:40 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:21:44:21:51 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:21:44:21:51 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:23:33:23:40 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:23:33:23:40 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:26:18:26:34 | "pw: #{...}" | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:26:18:26:34 | "pw: #{...}" | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:28:26:28:33 | password | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" : String | logging.rb:28:26:28:33 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | an assignment to password |
| logging.rb:38:20:38:34 | ...[...] | logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" : String | logging.rb:38:20:38:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | a write to password |
| logging.rb:40:20:40:34 | ...[...] | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" : String | logging.rb:40:20:40:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | a write to password |
| logging.rb:42:20:42:34 | ...[...] | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" : String | logging.rb:42:20:42:34 | ...[...] | This logs sensitive data returned by $@ as clear text. | logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | a write to password |
| logging.rb:74:20:74:50 | password_masked_ineffective_sub | logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" : String | logging.rb:74:20:74:50 | password_masked_ineffective_sub | This logs sensitive data returned by $@ as clear text. | logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | an assignment to password_masked_ineffective_sub |
| logging.rb:74:20:74:50 | password_masked_ineffective_sub | logging.rb:68:35:68:88 | call to sub | logging.rb:74:20:74:50 | password_masked_ineffective_sub | This logs sensitive data returned by $@ as clear text. | logging.rb:68:35:68:88 | call to sub | an assignment to password_masked_ineffective_sub |
| logging.rb:76:20:76:51 | password_masked_ineffective_gsub | logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | This logs sensitive data returned by $@ as clear text. | logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | an assignment to password_masked_ineffective_gsub |
| logging.rb:76:20:76:51 | password_masked_ineffective_gsub | logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" : String | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | This logs sensitive data returned by $@ as clear text. | logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | an assignment to password_masked_ineffective_gsub |
| logging.rb:76:20:76:51 | password_masked_ineffective_gsub | logging.rb:70:36:70:86 | call to gsub | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | This logs sensitive data returned by $@ as clear text. | logging.rb:70:36:70:86 | call to gsub | an assignment to password_masked_ineffective_gsub |
| logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | This logs sensitive data returned by $@ as clear text. | logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | an assignment to password_masked_ineffective_sub_ex |
| logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | This logs sensitive data returned by $@ as clear text. | logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | an assignment to password_masked_ineffective_gsub_ex |
| logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" : String | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | This logs sensitive data returned by $@ as clear text. | logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | an assignment to password_masked_ineffective_sub_ex |
| logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" : String | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | This logs sensitive data returned by $@ as clear text. | logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | an assignment to password_masked_ineffective_gsub_ex |
| logging.rb:84:15:84:22 | password | logging.rb:84:15:84:22 | password | logging.rb:84:15:84:22 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:84:15:84:22 | password | a parameter password |
| logging.rb:84:15:84:22 | password | logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | logging.rb:84:15:84:22 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | an assignment to password_arg |
| logging.rb:84:15:84:22 | password | logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" : String | logging.rb:84:15:84:22 | password | This logs sensitive data returned by $@ as clear text. | logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | an assignment to password_arg |

View File

@@ -1,147 +1,151 @@
edges
| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:5:39:5:50 | new_password | provenance | |
| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:7:41:7:52 | new_password | provenance | |
| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | app/controllers/users_controller.rb:3:5:3:16 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:13:42:13:53 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | |
| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:11:5:11:16 | new_password | provenance | |
| app/controllers/users_controller.rb:3:5:3:16 | new_password : String | app/controllers/users_controller.rb:5:39:5:50 | new_password | provenance | |
| app/controllers/users_controller.rb:3:5:3:16 | new_password : String | app/controllers/users_controller.rb:7:41:7:52 | new_password | provenance | |
| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" : String | app/controllers/users_controller.rb:3:5:3:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password : String | app/controllers/users_controller.rb:13:42:13:53 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password : String | app/controllers/users_controller.rb:15:49:15:60 | new_password | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password : String | app/controllers/users_controller.rb:15:49:15:60 | new_password : String | provenance | |
| app/controllers/users_controller.rb:11:5:11:16 | new_password : String | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | |
| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String | app/controllers/users_controller.rb:11:5:11:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | |
| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | app/controllers/users_controller.rb:19:5:19:16 | new_password | provenance | |
| app/controllers/users_controller.rb:15:49:15:60 | new_password : String | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password : String | app/controllers/users_controller.rb:21:45:21:56 | new_password | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password : String | app/controllers/users_controller.rb:21:45:21:56 | new_password : String | provenance | |
| app/controllers/users_controller.rb:19:5:19:16 | new_password : String | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | |
| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" : String | app/controllers/users_controller.rb:19:5:19:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | |
| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:28:27:28:38 | new_password | provenance | |
| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:30:28:30:39 | new_password | provenance | |
| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | app/controllers/users_controller.rb:26:5:26:16 | new_password | provenance | |
| app/controllers/users_controller.rb:35:5:35:16 | new_password | app/controllers/users_controller.rb:37:39:37:50 | new_password | provenance | |
| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | app/controllers/users_controller.rb:35:5:35:16 | new_password | provenance | |
| app/controllers/users_controller.rb:42:5:42:16 | new_password | app/controllers/users_controller.rb:44:21:44:32 | new_password | provenance | |
| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | app/controllers/users_controller.rb:42:5:42:16 | new_password | provenance | |
| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | provenance | AdditionalTaintStep |
| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | provenance | AdditionalTaintStep |
| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | app/controllers/users_controller.rb:58:5:58:16 | new_password | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :SSN] | app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :SSN] | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :credit_card_number] | app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :credit_card_number] | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :password] | app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :password] | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 1, element :password] | app/controllers/users_controller.rb:85:5:85:8 | info [element 1, element :password] | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :SSN] | app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :SSN] | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :credit_card_number] | app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :credit_card_number] | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :password] | app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :password] | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 1, element :password] | app/controllers/users_controller.rb:76:5:76:8 | info [element 1, element :password] | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :SSN] | app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :SSN] | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :credit_card_number] | app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :credit_card_number] | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :password] | app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :password] | provenance | |
| app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" | app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :password] | provenance | |
| app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" | app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :credit_card_number] | provenance | |
| app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" | app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :SSN] | provenance | |
| app/controllers/users_controller.rb:83:7:83:39 | call to [] [element :password] | app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 1, element :password] | provenance | |
| app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" | app/controllers/users_controller.rb:83:7:83:39 | call to [] [element :password] | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :SSN] | app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :credit_card_number] | app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :password] | app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 1, element :password] | app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/models/user.rb:3:5:3:16 | new_password | app/models/user.rb:5:27:5:38 | new_password | provenance | |
| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | app/models/user.rb:3:5:3:16 | new_password | provenance | |
| app/models/user.rb:9:5:9:16 | new_password | app/models/user.rb:11:22:11:33 | new_password | provenance | |
| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | app/models/user.rb:9:5:9:16 | new_password | provenance | |
| app/models/user.rb:15:5:15:16 | new_password | app/models/user.rb:17:21:17:32 | new_password | provenance | |
| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | app/models/user.rb:15:5:15:16 | new_password | provenance | |
| app/controllers/users_controller.rb:21:45:21:56 | new_password : String | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | |
| app/controllers/users_controller.rb:26:5:26:16 | new_password : String | app/controllers/users_controller.rb:28:27:28:38 | new_password | provenance | |
| app/controllers/users_controller.rb:26:5:26:16 | new_password : String | app/controllers/users_controller.rb:30:28:30:39 | new_password | provenance | |
| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" : String | app/controllers/users_controller.rb:26:5:26:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:35:5:35:16 | new_password : String | app/controllers/users_controller.rb:37:39:37:50 | new_password | provenance | |
| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" : String | app/controllers/users_controller.rb:35:5:35:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:42:5:42:16 | new_password : String | app/controllers/users_controller.rb:44:21:44:32 | new_password | provenance | |
| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" : String | app/controllers/users_controller.rb:42:5:42:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:58:5:58:16 | new_password : String | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | provenance | AdditionalTaintStep |
| app/controllers/users_controller.rb:58:5:58:16 | new_password : String | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | provenance | AdditionalTaintStep |
| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" : String | app/controllers/users_controller.rb:58:5:58:16 | new_password : String | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :SSN] : String | app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :SSN] : String | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :credit_card_number] : String | app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :credit_card_number] : String | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :password] : String | app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :password] : String | provenance | |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 1, element :password] : String | app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 1, element :password] : String | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :SSN] : String | app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :SSN] : String | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :credit_card_number] : String | app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :credit_card_number] : String | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :password] : String | app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :password] : String | provenance | |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 1, element :password] : String | app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 1, element :password] : String | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :SSN] : String | app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :SSN] : String | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :credit_card_number] : String | app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :credit_card_number] : String | provenance | |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :password] : String | app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :password] : String | provenance | |
| app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" : String | app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :password] : String | provenance | |
| app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" : String | app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :credit_card_number] : String | provenance | |
| app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" : String | app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :SSN] : String | provenance | |
| app/controllers/users_controller.rb:83:7:83:39 | call to [] : Hash [element :password] : String | app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 1, element :password] : String | provenance | |
| app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" : String | app/controllers/users_controller.rb:83:7:83:39 | call to [] : Hash [element :password] : String | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :SSN] : String | app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] : String | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :credit_card_number] : String | app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] : String | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :password] : String | app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] : String | provenance | |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 1, element :password] : String | app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] : String | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] : String | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] : String | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] : String | app/controllers/users_controller.rb:87:20:87:22 | inf | provenance | |
| app/models/user.rb:3:5:3:16 | new_password : String | app/models/user.rb:5:27:5:38 | new_password | provenance | |
| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" : String | app/models/user.rb:3:5:3:16 | new_password : String | provenance | |
| app/models/user.rb:9:5:9:16 | new_password : String | app/models/user.rb:11:22:11:33 | new_password | provenance | |
| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" : String | app/models/user.rb:9:5:9:16 | new_password : String | provenance | |
| app/models/user.rb:15:5:15:16 | new_password : String | app/models/user.rb:17:21:17:32 | new_password | provenance | |
| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" : String | app/models/user.rb:15:5:15:16 | new_password : String | provenance | |
nodes
| app/controllers/users_controller.rb:3:5:3:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | semmle.label | "043697b96909e03ca907599d6420555f" |
| app/controllers/users_controller.rb:3:5:3:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" : String | semmle.label | "043697b96909e03ca907599d6420555f" : String |
| app/controllers/users_controller.rb:5:39:5:50 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:7:41:7:52 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:11:5:11:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | semmle.label | "083c9e1da4cc0c2f5480bb4dbe6ff141" |
| app/controllers/users_controller.rb:11:5:11:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String | semmle.label | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String |
| app/controllers/users_controller.rb:13:42:13:53 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:15:87:15:98 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:19:5:19:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | semmle.label | "504d224a806cf8073cd14ef08242d422" |
| app/controllers/users_controller.rb:19:5:19:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" : String | semmle.label | "504d224a806cf8073cd14ef08242d422" : String |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:21:45:21:56 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:21:83:21:94 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:26:5:26:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | semmle.label | "7d6ae08394c3f284506dca70f05995f6" |
| app/controllers/users_controller.rb:26:5:26:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" : String | semmle.label | "7d6ae08394c3f284506dca70f05995f6" : String |
| app/controllers/users_controller.rb:28:27:28:38 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:30:28:30:39 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:35:5:35:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | semmle.label | "ff295f8648a406c37fbe378377320e4c" |
| app/controllers/users_controller.rb:35:5:35:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" : String | semmle.label | "ff295f8648a406c37fbe378377320e4c" : String |
| app/controllers/users_controller.rb:37:39:37:50 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:42:5:42:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | semmle.label | "78ffbec583b546bd073efd898f833184" |
| app/controllers/users_controller.rb:42:5:42:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" : String | semmle.label | "78ffbec583b546bd073efd898f833184" : String |
| app/controllers/users_controller.rb:44:21:44:32 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:58:5:58:16 | new_password | semmle.label | new_password |
| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | semmle.label | "0157af7c38cbdd24f1616de4e5321861" |
| app/controllers/users_controller.rb:58:5:58:16 | new_password : String | semmle.label | new_password : String |
| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" : String | semmle.label | "0157af7c38cbdd24f1616de4e5321861" : String |
| app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | semmle.label | "password: #{...}\\n" |
| app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | semmle.label | "password: #{...}" |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :SSN] | semmle.label | info [element 0, element :SSN] |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :credit_card_number] | semmle.label | info [element 0, element :credit_card_number] |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 0, element :password] | semmle.label | info [element 0, element :password] |
| app/controllers/users_controller.rb:76:5:76:8 | info [element 1, element :password] | semmle.label | info [element 1, element :password] |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :SSN] | semmle.label | call to [] [element 0, element :SSN] |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :credit_card_number] | semmle.label | call to [] [element 0, element :credit_card_number] |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 0, element :password] | semmle.label | call to [] [element 0, element :password] |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] [element 1, element :password] | semmle.label | call to [] [element 1, element :password] |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :SSN] | semmle.label | call to [] [element :SSN] |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :credit_card_number] | semmle.label | call to [] [element :credit_card_number] |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] [element :password] | semmle.label | call to [] [element :password] |
| app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" | semmle.label | "aaaaaaaaaa" |
| app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" | semmle.label | "0000-0000-0000-0000" |
| app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" | semmle.label | "000-00-00000" |
| app/controllers/users_controller.rb:83:7:83:39 | call to [] [element :password] | semmle.label | call to [] [element :password] |
| app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" | semmle.label | "bbbbbbb" |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :SSN] | semmle.label | info [element 0, element :SSN] |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :credit_card_number] | semmle.label | info [element 0, element :credit_card_number] |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 0, element :password] | semmle.label | info [element 0, element :password] |
| app/controllers/users_controller.rb:85:5:85:8 | info [element 1, element :password] | semmle.label | info [element 1, element :password] |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] | semmle.label | inf [element :SSN] |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] | semmle.label | inf [element :credit_card_number] |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] | semmle.label | inf [element :password] |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :SSN] : String | semmle.label | info : Array [element 0, element :SSN] : String |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :credit_card_number] : String | semmle.label | info : Array [element 0, element :credit_card_number] : String |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 0, element :password] : String | semmle.label | info : Array [element 0, element :password] : String |
| app/controllers/users_controller.rb:76:5:76:8 | info : Array [element 1, element :password] : String | semmle.label | info : Array [element 1, element :password] : String |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :SSN] : String | semmle.label | call to [] : Array [element 0, element :SSN] : String |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :credit_card_number] : String | semmle.label | call to [] : Array [element 0, element :credit_card_number] : String |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 0, element :password] : String | semmle.label | call to [] : Array [element 0, element :password] : String |
| app/controllers/users_controller.rb:76:12:84:5 | call to [] : Array [element 1, element :password] : String | semmle.label | call to [] : Array [element 1, element :password] : String |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :SSN] : String | semmle.label | call to [] : Hash [element :SSN] : String |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :credit_card_number] : String | semmle.label | call to [] : Hash [element :credit_card_number] : String |
| app/controllers/users_controller.rb:77:7:82:7 | call to [] : Hash [element :password] : String | semmle.label | call to [] : Hash [element :password] : String |
| app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" : String | semmle.label | "aaaaaaaaaa" : String |
| app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" : String | semmle.label | "0000-0000-0000-0000" : String |
| app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" : String | semmle.label | "000-00-00000" : String |
| app/controllers/users_controller.rb:83:7:83:39 | call to [] : Hash [element :password] : String | semmle.label | call to [] : Hash [element :password] : String |
| app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" : String | semmle.label | "bbbbbbb" : String |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :SSN] : String | semmle.label | info : Array [element 0, element :SSN] : String |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :credit_card_number] : String | semmle.label | info : Array [element 0, element :credit_card_number] : String |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 0, element :password] : String | semmle.label | info : Array [element 0, element :password] : String |
| app/controllers/users_controller.rb:85:5:85:8 | info : Array [element 1, element :password] : String | semmle.label | info : Array [element 1, element :password] : String |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :SSN] : String | semmle.label | inf [element :SSN] : String |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :credit_card_number] : String | semmle.label | inf [element :credit_card_number] : String |
| app/controllers/users_controller.rb:85:19:85:21 | inf [element :password] : String | semmle.label | inf [element :password] : String |
| app/controllers/users_controller.rb:87:20:87:22 | inf | semmle.label | inf |
| app/models/user.rb:3:5:3:16 | new_password | semmle.label | new_password |
| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | semmle.label | "06c38c6a8a9c11a9d3b209a3193047b4" |
| app/models/user.rb:3:5:3:16 | new_password : String | semmle.label | new_password : String |
| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" : String | semmle.label | "06c38c6a8a9c11a9d3b209a3193047b4" : String |
| app/models/user.rb:5:27:5:38 | new_password | semmle.label | new_password |
| app/models/user.rb:9:5:9:16 | new_password | semmle.label | new_password |
| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | semmle.label | "52652fb5c709fb6b9b5a0194af7c6067" |
| app/models/user.rb:9:5:9:16 | new_password : String | semmle.label | new_password : String |
| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" : String | semmle.label | "52652fb5c709fb6b9b5a0194af7c6067" : String |
| app/models/user.rb:11:22:11:33 | new_password | semmle.label | new_password |
| app/models/user.rb:15:5:15:16 | new_password | semmle.label | new_password |
| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | semmle.label | "f982bf2531c149a8a1444a951b12e830" |
| app/models/user.rb:15:5:15:16 | new_password : String | semmle.label | new_password : String |
| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" : String | semmle.label | "f982bf2531c149a8a1444a951b12e830" : String |
| app/models/user.rb:17:21:17:32 | new_password | semmle.label | new_password |
subpaths
#select
| app/controllers/users_controller.rb:5:39:5:50 | new_password | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | app/controllers/users_controller.rb:5:39:5:50 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | an assignment to new_password |
| app/controllers/users_controller.rb:7:41:7:52 | new_password | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | app/controllers/users_controller.rb:7:41:7:52 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | an assignment to new_password |
| app/controllers/users_controller.rb:5:39:5:50 | new_password | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" : String | app/controllers/users_controller.rb:5:39:5:50 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | an assignment to new_password |
| app/controllers/users_controller.rb:7:41:7:52 | new_password | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" : String | app/controllers/users_controller.rb:7:41:7:52 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | an assignment to new_password |
| app/controllers/users_controller.rb:7:41:7:52 | new_password | app/controllers/users_controller.rb:7:41:7:52 | new_password | app/controllers/users_controller.rb:7:41:7:52 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:7:41:7:52 | new_password | a write to password |
| app/controllers/users_controller.rb:13:42:13:53 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:13:42:13:53 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:15:49:15:60 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:13:42:13:53 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String | app/controllers/users_controller.rb:13:42:13:53 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String | app/controllers/users_controller.rb:15:49:15:60 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:15:49:15:60 | new_password | a write to password |
| app/controllers/users_controller.rb:15:87:15:98 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:15:87:15:98 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:15:87:15:98 | new_password | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" : String | app/controllers/users_controller.rb:15:87:15:98 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | an assignment to new_password |
| app/controllers/users_controller.rb:15:87:15:98 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:15:49:15:60 | new_password | a write to password |
| app/controllers/users_controller.rb:15:87:15:98 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:15:87:15:98 | new_password | a write to password |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | app/controllers/users_controller.rb:21:45:21:56 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | an assignment to new_password |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" : String | app/controllers/users_controller.rb:21:45:21:56 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | an assignment to new_password |
| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:21:45:21:56 | new_password | a write to password |
| app/controllers/users_controller.rb:21:83:21:94 | new_password | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | app/controllers/users_controller.rb:21:83:21:94 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | an assignment to new_password |
| app/controllers/users_controller.rb:21:83:21:94 | new_password | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" : String | app/controllers/users_controller.rb:21:83:21:94 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | an assignment to new_password |
| app/controllers/users_controller.rb:21:83:21:94 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:21:45:21:56 | new_password | a write to password |
| app/controllers/users_controller.rb:21:83:21:94 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:21:83:21:94 | new_password | a write to password |
| app/controllers/users_controller.rb:28:27:28:38 | new_password | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | app/controllers/users_controller.rb:28:27:28:38 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | an assignment to new_password |
| app/controllers/users_controller.rb:30:28:30:39 | new_password | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | app/controllers/users_controller.rb:30:28:30:39 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | an assignment to new_password |
| app/controllers/users_controller.rb:28:27:28:38 | new_password | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" : String | app/controllers/users_controller.rb:28:27:28:38 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | an assignment to new_password |
| app/controllers/users_controller.rb:30:28:30:39 | new_password | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" : String | app/controllers/users_controller.rb:30:28:30:39 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | an assignment to new_password |
| app/controllers/users_controller.rb:30:28:30:39 | new_password | app/controllers/users_controller.rb:30:28:30:39 | new_password | app/controllers/users_controller.rb:30:28:30:39 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:30:28:30:39 | new_password | a write to password |
| app/controllers/users_controller.rb:37:39:37:50 | new_password | app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | app/controllers/users_controller.rb:37:39:37:50 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | an assignment to new_password |
| app/controllers/users_controller.rb:44:21:44:32 | new_password | app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | app/controllers/users_controller.rb:44:21:44:32 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | an assignment to new_password |
| app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | an assignment to new_password |
| app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | an assignment to new_password |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" | a write to password |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" | a write to credit_card_number |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" | a write to SSN |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" | a write to password |
| app/models/user.rb:5:27:5:38 | new_password | app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | app/models/user.rb:5:27:5:38 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | an assignment to new_password |
| app/models/user.rb:11:22:11:33 | new_password | app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | app/models/user.rb:11:22:11:33 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | an assignment to new_password |
| app/models/user.rb:17:21:17:32 | new_password | app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | app/models/user.rb:17:21:17:32 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | an assignment to new_password |
| app/controllers/users_controller.rb:37:39:37:50 | new_password | app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" : String | app/controllers/users_controller.rb:37:39:37:50 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | an assignment to new_password |
| app/controllers/users_controller.rb:44:21:44:32 | new_password | app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" : String | app/controllers/users_controller.rb:44:21:44:32 | new_password | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | an assignment to new_password |
| app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" : String | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | an assignment to new_password |
| app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" : String | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | an assignment to new_password |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" : String | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:79:19:79:30 | "aaaaaaaaaa" | a write to password |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" : String | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:80:29:80:49 | "0000-0000-0000-0000" | a write to credit_card_number |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" : String | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:81:14:81:27 | "000-00-00000" | a write to SSN |
| app/controllers/users_controller.rb:87:20:87:22 | inf | app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" : String | app/controllers/users_controller.rb:87:20:87:22 | inf | This stores sensitive data returned by $@ as clear text. | app/controllers/users_controller.rb:83:30:83:38 | "bbbbbbb" | a write to password |
| app/models/user.rb:5:27:5:38 | new_password | app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" : String | app/models/user.rb:5:27:5:38 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | an assignment to new_password |
| app/models/user.rb:11:22:11:33 | new_password | app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" : String | app/models/user.rb:11:22:11:33 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | an assignment to new_password |
| app/models/user.rb:17:21:17:32 | new_password | app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" : String | app/models/user.rb:17:21:17:32 | new_password | This stores sensitive data returned by $@ as clear text. | app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | an assignment to new_password |

View File

@@ -1,35 +1,35 @@
edges
| tst.rb:1:7:1:7 | r | tst.rb:2:4:2:4 | r | provenance | |
| tst.rb:2:3:2:5 | call to [] [element 0] | tst.rb:2:3:2:15 | call to pack | provenance | Config |
| tst.rb:2:4:2:4 | r | tst.rb:2:3:2:5 | call to [] [element 0] | provenance | |
| tst.rb:5:1:5:23 | totally_harmless_string | tst.rb:7:8:7:30 | totally_harmless_string | provenance | |
| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | tst.rb:5:1:5:23 | totally_harmless_string | provenance | |
| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:1:7:1:7 | r | provenance | |
| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:7:6:7:31 | call to e | provenance | Config |
| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:1:7:1:7 | r | provenance | |
| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:10:9:10:25 | call to e | provenance | Config |
| tst.rb:16:1:16:27 | another_questionable_string | tst.rb:17:6:17:32 | another_questionable_string | provenance | |
| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | tst.rb:16:1:16:27 | another_questionable_string | provenance | |
| tst.rb:17:6:17:32 | another_questionable_string | tst.rb:17:6:17:38 | call to strip | provenance | Config |
| tst.rb:1:7:1:7 | r : String | tst.rb:2:4:2:4 | r : String | provenance | |
| tst.rb:2:3:2:5 | call to [] : Array [element 0] : String | tst.rb:2:3:2:15 | call to pack | provenance | Config |
| tst.rb:2:4:2:4 | r : String | tst.rb:2:3:2:5 | call to [] : Array [element 0] : String | provenance | |
| tst.rb:5:1:5:23 | totally_harmless_string : String | tst.rb:7:8:7:30 | totally_harmless_string : String | provenance | |
| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." : String | tst.rb:5:1:5:23 | totally_harmless_string : String | provenance | |
| tst.rb:7:8:7:30 | totally_harmless_string : String | tst.rb:1:7:1:7 | r : String | provenance | |
| tst.rb:7:8:7:30 | totally_harmless_string : String | tst.rb:7:6:7:31 | call to e | provenance | Config |
| tst.rb:10:11:10:24 | "666f6f626172" : String | tst.rb:1:7:1:7 | r : String | provenance | |
| tst.rb:10:11:10:24 | "666f6f626172" : String | tst.rb:10:9:10:25 | call to e | provenance | Config |
| tst.rb:16:1:16:27 | another_questionable_string : String | tst.rb:17:6:17:32 | another_questionable_string : String | provenance | |
| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." : String | tst.rb:16:1:16:27 | another_questionable_string : String | provenance | |
| tst.rb:17:6:17:32 | another_questionable_string : String | tst.rb:17:6:17:38 | call to strip | provenance | Config |
nodes
| tst.rb:1:7:1:7 | r | semmle.label | r |
| tst.rb:2:3:2:5 | call to [] [element 0] | semmle.label | call to [] [element 0] |
| tst.rb:1:7:1:7 | r : String | semmle.label | r : String |
| tst.rb:2:3:2:5 | call to [] : Array [element 0] : String | semmle.label | call to [] : Array [element 0] : String |
| tst.rb:2:3:2:15 | call to pack | semmle.label | call to pack |
| tst.rb:2:4:2:4 | r | semmle.label | r |
| tst.rb:5:1:5:23 | totally_harmless_string | semmle.label | totally_harmless_string |
| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | semmle.label | "707574732822636f646520696e6a6..." |
| tst.rb:2:4:2:4 | r : String | semmle.label | r : String |
| tst.rb:5:1:5:23 | totally_harmless_string : String | semmle.label | totally_harmless_string : String |
| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." : String | semmle.label | "707574732822636f646520696e6a6..." : String |
| tst.rb:7:6:7:31 | call to e | semmle.label | call to e |
| tst.rb:7:8:7:30 | totally_harmless_string | semmle.label | totally_harmless_string |
| tst.rb:7:8:7:30 | totally_harmless_string : String | semmle.label | totally_harmless_string : String |
| tst.rb:10:9:10:25 | call to e | semmle.label | call to e |
| tst.rb:10:11:10:24 | "666f6f626172" | semmle.label | "666f6f626172" |
| tst.rb:16:1:16:27 | another_questionable_string | semmle.label | another_questionable_string |
| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | semmle.label | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." |
| tst.rb:17:6:17:32 | another_questionable_string | semmle.label | another_questionable_string |
| tst.rb:10:11:10:24 | "666f6f626172" : String | semmle.label | "666f6f626172" : String |
| tst.rb:16:1:16:27 | another_questionable_string : String | semmle.label | another_questionable_string : String |
| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." : String | semmle.label | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." : String |
| tst.rb:17:6:17:32 | another_questionable_string : String | semmle.label | another_questionable_string : String |
| tst.rb:17:6:17:38 | call to strip | semmle.label | call to strip |
subpaths
| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:1:7:1:7 | r | tst.rb:2:3:2:15 | call to pack | tst.rb:7:6:7:31 | call to e |
| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:1:7:1:7 | r | tst.rb:2:3:2:15 | call to pack | tst.rb:10:9:10:25 | call to e |
| tst.rb:7:8:7:30 | totally_harmless_string : String | tst.rb:1:7:1:7 | r : String | tst.rb:2:3:2:15 | call to pack | tst.rb:7:6:7:31 | call to e |
| tst.rb:10:11:10:24 | "666f6f626172" : String | tst.rb:1:7:1:7 | r : String | tst.rb:2:3:2:15 | call to pack | tst.rb:10:9:10:25 | call to e |
#select
| tst.rb:7:6:7:31 | call to e | tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | tst.rb:7:6:7:31 | call to e | $@ is interpreted as code. | tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | Hard-coded data |
| tst.rb:10:9:10:25 | call to e | tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:10:9:10:25 | call to e | $@ is interpreted as an import path. | tst.rb:10:11:10:24 | "666f6f626172" | Hard-coded data |
| tst.rb:17:6:17:38 | call to strip | tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | tst.rb:17:6:17:38 | call to strip | $@ is interpreted as code. | tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | Hard-coded data |
| tst.rb:7:6:7:31 | call to e | tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." : String | tst.rb:7:6:7:31 | call to e | $@ is interpreted as code. | tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | Hard-coded data |
| tst.rb:10:9:10:25 | call to e | tst.rb:10:11:10:24 | "666f6f626172" : String | tst.rb:10:9:10:25 | call to e | $@ is interpreted as an import path. | tst.rb:10:11:10:24 | "666f6f626172" | Hard-coded data |
| tst.rb:17:6:17:38 | call to strip | tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." : String | tst.rb:17:6:17:38 | call to strip | $@ is interpreted as code. | tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | Hard-coded data |

View File

@@ -1,25 +1,25 @@
edges
| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:53:19:53:22 | perm | provenance | |
| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:54:3:54:7 | perm2 | provenance | |
| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:3:51:6 | perm | provenance | |
| FilePermissions.rb:54:3:54:7 | perm2 | FilePermissions.rb:56:19:56:23 | perm2 | provenance | |
| FilePermissions.rb:58:3:58:6 | perm | FilePermissions.rb:59:3:59:7 | perm2 | provenance | |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:58:3:58:6 | perm | provenance | |
| FilePermissions.rb:59:3:59:7 | perm2 | FilePermissions.rb:61:19:61:23 | perm2 | provenance | |
| FilePermissions.rb:51:3:51:6 | perm : Integer | FilePermissions.rb:53:19:53:22 | perm | provenance | |
| FilePermissions.rb:51:3:51:6 | perm : Integer | FilePermissions.rb:54:3:54:7 | perm2 : Integer | provenance | |
| FilePermissions.rb:51:10:51:13 | 0777 : Integer | FilePermissions.rb:51:3:51:6 | perm : Integer | provenance | |
| FilePermissions.rb:54:3:54:7 | perm2 : Integer | FilePermissions.rb:56:19:56:23 | perm2 | provenance | |
| FilePermissions.rb:58:3:58:6 | perm : String | FilePermissions.rb:59:3:59:7 | perm2 : String | provenance | |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" : String | FilePermissions.rb:58:3:58:6 | perm : String | provenance | |
| FilePermissions.rb:59:3:59:7 | perm2 : String | FilePermissions.rb:61:19:61:23 | perm2 | provenance | |
nodes
| FilePermissions.rb:5:19:5:22 | 0222 | semmle.label | 0222 |
| FilePermissions.rb:7:19:7:22 | 0622 | semmle.label | 0622 |
| FilePermissions.rb:9:19:9:22 | 0755 | semmle.label | 0755 |
| FilePermissions.rb:11:19:11:22 | 0777 | semmle.label | 0777 |
| FilePermissions.rb:28:13:28:16 | 0755 | semmle.label | 0755 |
| FilePermissions.rb:51:3:51:6 | perm | semmle.label | perm |
| FilePermissions.rb:51:10:51:13 | 0777 | semmle.label | 0777 |
| FilePermissions.rb:51:3:51:6 | perm : Integer | semmle.label | perm : Integer |
| FilePermissions.rb:51:10:51:13 | 0777 : Integer | semmle.label | 0777 : Integer |
| FilePermissions.rb:53:19:53:22 | perm | semmle.label | perm |
| FilePermissions.rb:54:3:54:7 | perm2 | semmle.label | perm2 |
| FilePermissions.rb:54:3:54:7 | perm2 : Integer | semmle.label | perm2 : Integer |
| FilePermissions.rb:56:19:56:23 | perm2 | semmle.label | perm2 |
| FilePermissions.rb:58:3:58:6 | perm | semmle.label | perm |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | semmle.label | "u=wrx,g=rwx,o=x" |
| FilePermissions.rb:59:3:59:7 | perm2 | semmle.label | perm2 |
| FilePermissions.rb:58:3:58:6 | perm : String | semmle.label | perm : String |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" : String | semmle.label | "u=wrx,g=rwx,o=x" : String |
| FilePermissions.rb:59:3:59:7 | perm2 : String | semmle.label | perm2 : String |
| FilePermissions.rb:61:19:61:23 | perm2 | semmle.label | perm2 |
| FilePermissions.rb:63:19:63:29 | "u=rwx,o+r" | semmle.label | "u=rwx,o+r" |
| FilePermissions.rb:67:19:67:24 | "a+rw" | semmle.label | "a+rw" |
@@ -31,9 +31,9 @@ subpaths
| FilePermissions.rb:9:19:9:22 | 0755 | FilePermissions.rb:9:19:9:22 | 0755 | FilePermissions.rb:9:19:9:22 | 0755 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:9:3:9:32 | call to chmod | call to chmod |
| FilePermissions.rb:11:19:11:22 | 0777 | FilePermissions.rb:11:19:11:22 | 0777 | FilePermissions.rb:11:19:11:22 | 0777 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:11:3:11:32 | call to chmod | call to chmod |
| FilePermissions.rb:28:13:28:16 | 0755 | FilePermissions.rb:28:13:28:16 | 0755 | FilePermissions.rb:28:13:28:16 | 0755 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:28:3:28:26 | call to chmod | call to chmod |
| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:53:19:53:22 | perm | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:53:3:53:32 | call to chmod | call to chmod |
| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:56:19:56:23 | perm2 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:56:3:56:33 | call to chmod | call to chmod |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:61:19:61:23 | perm2 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:61:3:61:33 | call to chmod | call to chmod |
| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:10:51:13 | 0777 : Integer | FilePermissions.rb:53:19:53:22 | perm | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:53:3:53:32 | call to chmod | call to chmod |
| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:10:51:13 | 0777 : Integer | FilePermissions.rb:56:19:56:23 | perm2 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:56:3:56:33 | call to chmod | call to chmod |
| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" : String | FilePermissions.rb:61:19:61:23 | perm2 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:61:3:61:33 | call to chmod | call to chmod |
| FilePermissions.rb:63:19:63:29 | "u=rwx,o+r" | FilePermissions.rb:63:19:63:29 | "u=rwx,o+r" | FilePermissions.rb:63:19:63:29 | "u=rwx,o+r" | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:63:3:63:39 | call to chmod | call to chmod |
| FilePermissions.rb:67:19:67:24 | "a+rw" | FilePermissions.rb:67:19:67:24 | "a+rw" | FilePermissions.rb:67:19:67:24 | "a+rw" | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:67:3:67:34 | call to chmod | call to chmod |
| FilePermissions.rb:72:21:72:24 | 0755 | FilePermissions.rb:72:21:72:24 | 0755 | FilePermissions.rb:72:21:72:24 | 0755 | This overly permissive mask used in $@ allows read or write access to others. | FilePermissions.rb:72:3:72:34 | call to chmod_R | call to chmod_R |

View File

@@ -1,55 +1,55 @@
edges
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:1:23:1:30 | password | provenance | |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:1:33:1:36 | cert | provenance | |
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." : String | HardcodedCredentials.rb:1:23:1:30 | password | provenance | |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." : String | HardcodedCredentials.rb:1:33:1:36 | cert | provenance | |
| HardcodedCredentials.rb:18:19:18:72 | ... + ... | HardcodedCredentials.rb:1:23:1:30 | password | provenance | |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:18:19:18:72 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:20:1:20:7 | pw_left | HardcodedCredentials.rb:22:6:22:12 | pw_left | provenance | |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:20:1:20:7 | pw_left | provenance | |
| HardcodedCredentials.rb:21:1:21:8 | pw_right | HardcodedCredentials.rb:22:16:22:23 | pw_right | provenance | |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:21:1:21:8 | pw_right | provenance | |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." : String | HardcodedCredentials.rb:18:19:18:72 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:20:1:20:7 | pw_left : String | HardcodedCredentials.rb:22:6:22:12 | pw_left : String | provenance | |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." : String | HardcodedCredentials.rb:20:1:20:7 | pw_left : String | provenance | |
| HardcodedCredentials.rb:21:1:21:8 | pw_right : String | HardcodedCredentials.rb:22:16:22:23 | pw_right : String | provenance | |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" : String | HardcodedCredentials.rb:21:1:21:8 | pw_right : String | provenance | |
| HardcodedCredentials.rb:22:1:22:2 | pw | HardcodedCredentials.rb:23:19:23:20 | pw | provenance | |
| HardcodedCredentials.rb:22:6:22:12 | pw_left | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:22:6:22:12 | pw_left : String | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:22:6:22:23 | ... + ... | HardcodedCredentials.rb:22:1:22:2 | pw | provenance | |
| HardcodedCredentials.rb:22:16:22:23 | pw_right | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:22:16:22:23 | pw_right : String | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | Config |
| HardcodedCredentials.rb:23:19:23:20 | pw | HardcodedCredentials.rb:1:23:1:30 | password | provenance | |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:31:18:31:23 | passwd | provenance | |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:18:43:25 | username | provenance | |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:46:43:53 | password | provenance | |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." : String | HardcodedCredentials.rb:31:18:31:23 | passwd | provenance | |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" : String | HardcodedCredentials.rb:43:18:43:25 | username | provenance | |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" : String | HardcodedCredentials.rb:43:46:43:53 | password | provenance | |
nodes
| HardcodedCredentials.rb:1:23:1:30 | password | semmle.label | password |
| HardcodedCredentials.rb:1:33:1:36 | cert | semmle.label | cert |
| HardcodedCredentials.rb:4:20:4:65 | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." | semmle.label | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." |
| HardcodedCredentials.rb:8:30:8:75 | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." | semmle.label | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." |
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | semmle.label | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | semmle.label | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." |
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." : String | semmle.label | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." : String |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | semmle.label | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." : String | semmle.label | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." : String |
| HardcodedCredentials.rb:18:19:18:72 | ... + ... | semmle.label | ... + ... |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | semmle.label | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." |
| HardcodedCredentials.rb:20:1:20:7 | pw_left | semmle.label | pw_left |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | semmle.label | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." |
| HardcodedCredentials.rb:21:1:21:8 | pw_right | semmle.label | pw_right |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | semmle.label | "4fQuzXef4f2yow8KWvIJTA==" |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." : String | semmle.label | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." : String |
| HardcodedCredentials.rb:20:1:20:7 | pw_left : String | semmle.label | pw_left : String |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." : String | semmle.label | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." : String |
| HardcodedCredentials.rb:21:1:21:8 | pw_right : String | semmle.label | pw_right : String |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" : String | semmle.label | "4fQuzXef4f2yow8KWvIJTA==" : String |
| HardcodedCredentials.rb:22:1:22:2 | pw | semmle.label | pw |
| HardcodedCredentials.rb:22:6:22:12 | pw_left | semmle.label | pw_left |
| HardcodedCredentials.rb:22:6:22:12 | pw_left : String | semmle.label | pw_left : String |
| HardcodedCredentials.rb:22:6:22:23 | ... + ... | semmle.label | ... + ... |
| HardcodedCredentials.rb:22:16:22:23 | pw_right | semmle.label | pw_right |
| HardcodedCredentials.rb:22:16:22:23 | pw_right : String | semmle.label | pw_right : String |
| HardcodedCredentials.rb:23:19:23:20 | pw | semmle.label | pw |
| HardcodedCredentials.rb:31:18:31:23 | passwd | semmle.label | passwd |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | semmle.label | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." : String | semmle.label | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." : String |
| HardcodedCredentials.rb:43:18:43:25 | username | semmle.label | username |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | semmle.label | "user@test.com" |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" : String | semmle.label | "user@test.com" : String |
| HardcodedCredentials.rb:43:46:43:53 | password | semmle.label | password |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | semmle.label | "abcdef123456" |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" : String | semmle.label | "abcdef123456" : String |
subpaths
#select
| HardcodedCredentials.rb:4:20:4:65 | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." | HardcodedCredentials.rb:4:20:4:65 | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." | HardcodedCredentials.rb:4:20:4:65 | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." | This hardcoded value is $@. | HardcodedCredentials.rb:4:20:4:65 | "xwjVWdfzfRlbcgKkbSfG/xSrUeHYq..." | used as credentials |
| HardcodedCredentials.rb:8:30:8:75 | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." | HardcodedCredentials.rb:8:30:8:75 | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." | HardcodedCredentials.rb:8:30:8:75 | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." | This hardcoded value is $@. | HardcodedCredentials.rb:8:30:8:75 | "X6BLgRWSAtAWG/GaHS+WGGW2K7zZF..." | used as credentials |
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:1:33:1:36 | cert | This hardcoded value is $@. | HardcodedCredentials.rb:1:33:1:36 | cert | used as credentials |
| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." : String | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | This hardcoded value is $@. | HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | used as credentials |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:31:18:31:23 | passwd | This hardcoded value is $@. | HardcodedCredentials.rb:31:18:31:23 | passwd | used as credentials |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:18:43:25 | username | This hardcoded value is $@. | HardcodedCredentials.rb:43:18:43:25 | username | used as credentials |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:46:43:53 | password | This hardcoded value is $@. | HardcodedCredentials.rb:43:46:43:53 | password | used as credentials |
| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." : String | HardcodedCredentials.rb:1:33:1:36 | cert | This hardcoded value is $@. | HardcodedCredentials.rb:1:33:1:36 | cert | used as credentials |
| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." : String | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." : String | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" : String | HardcodedCredentials.rb:1:23:1:30 | password | This hardcoded value is $@. | HardcodedCredentials.rb:1:23:1:30 | password | used as credentials |
| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." : String | HardcodedCredentials.rb:31:18:31:23 | passwd | This hardcoded value is $@. | HardcodedCredentials.rb:31:18:31:23 | passwd | used as credentials |
| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:29:43:43 | "user@test.com" : String | HardcodedCredentials.rb:43:18:43:25 | username | This hardcoded value is $@. | HardcodedCredentials.rb:43:18:43:25 | username | used as credentials |
| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" : String | HardcodedCredentials.rb:43:46:43:53 | password | This hardcoded value is $@. | HardcodedCredentials.rb:43:46:43:53 | password | used as credentials |

View File

@@ -1,16 +1,16 @@
testFailures
edges
| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | provenance | |
| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | provenance | |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | provenance | |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | provenance | |
| insecure_download.rb:31:5:31:7 | url : String | insecure_download.rb:33:15:33:17 | url | provenance | |
| insecure_download.rb:31:5:31:7 | url : String | insecure_download.rb:33:15:33:17 | url | provenance | |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:31:5:31:7 | url : String | provenance | |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:31:5:31:7 | url : String | provenance | |
nodes
| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" |
| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" |
| insecure_download.rb:31:5:31:7 | url | semmle.label | url |
| insecure_download.rb:31:5:31:7 | url | semmle.label | url |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" |
| insecure_download.rb:31:5:31:7 | url : String | semmle.label | url : String |
| insecure_download.rb:31:5:31:7 | url : String | semmle.label | url : String |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | semmle.label | "http://example.org/unsafe.APK" : String |
| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | semmle.label | "http://example.org/unsafe.APK" : String |
| insecure_download.rb:33:15:33:17 | url | semmle.label | url |
| insecure_download.rb:33:15:33:17 | url | semmle.label | url |
| insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | semmle.label | "http://example.org/unsafe" |
@@ -21,8 +21,8 @@ subpaths
#select
| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" |
| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | "http://example.org/unsafe.APK" : String |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | "http://example.org/unsafe.APK" : String |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:33:15:33:17 | url | url |
| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:33:15:33:17 | url | url |
| insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | $@ | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | "http://example.org/unsafe" |

View File

@@ -14,6 +14,9 @@ signature module InputSig<LocationSig Location, DF::InputSig<Location> DataFlowL
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
default predicate uniqueCallEnclosingCallableExclude(DataFlowLang::DataFlowCall call) { none() }
/** Holds if `n` should be excluded from the consistency test `uniqueType`. */
default predicate uniqueTypeExclude(DataFlowLang::Node n) { none() }
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
default predicate uniqueNodeLocationExclude(DataFlowLang::Node n) { none() }
@@ -123,6 +126,7 @@ module MakeConsistency<
n instanceof RelevantNode and
c = count(getNodeType(n)) and
c != 1 and
not Input::uniqueTypeExclude(n) and
msg = "Node should have one type but has " + c + "."
)
}