mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
Merge branch 'replace-ast-with-ir-use-usedataflow' into fix-ssa-flow
This commit is contained in:
@@ -143,7 +143,7 @@ private module VirtualDispatch {
|
||||
private class DataSensitiveExprCall extends DataSensitiveCall {
|
||||
DataSensitiveExprCall() { not exists(this.getStaticCallTarget()) }
|
||||
|
||||
override DataFlow::Node getDispatchValue() { result.asInstruction() = this.getCallTarget() }
|
||||
override DataFlow::Node getDispatchValue() { result.asOperand() = this.getCallTargetOperand() }
|
||||
|
||||
override Function resolve() {
|
||||
exists(FunctionInstruction fi |
|
||||
|
||||
@@ -6,6 +6,86 @@ private import DataFlowImplConsistency
|
||||
private import semmle.code.cpp.ir.internal.IRCppLanguage
|
||||
private import SsaInternals as Ssa
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
* A node that represents the indirect value of an operand in the IR
|
||||
* after `index` number of loads.
|
||||
*
|
||||
* Note: Unlike `RawIndirectOperand`, a value of type `IndirectOperand` may
|
||||
* be an `OperandNode`.
|
||||
*/
|
||||
class IndirectOperand extends Node {
|
||||
Operand operand;
|
||||
int indirectionIndex;
|
||||
|
||||
IndirectOperand() {
|
||||
this.(RawIndirectOperand).getOperand() = operand and
|
||||
this.(RawIndirectOperand).getIndirectionIndex() = indirectionIndex
|
||||
or
|
||||
this.(OperandNode).getOperand() =
|
||||
Ssa::getIRRepresentationOfIndirectOperand(operand, indirectionIndex)
|
||||
}
|
||||
|
||||
/** Gets the underlying operand. */
|
||||
Operand getOperand() { result = operand }
|
||||
|
||||
/** Gets the underlying indirection index. */
|
||||
int getIndirectionIndex() { result = indirectionIndex }
|
||||
|
||||
/**
|
||||
* Holds if this `IndirectOperand` is represented directly in the IR instead of
|
||||
* a `RawIndirectionOperand` with operand `op` and indirection index `index`.
|
||||
*/
|
||||
predicate isIRRepresentationOf(Operand op, int index) {
|
||||
this instanceof OperandNode and
|
||||
(
|
||||
op = operand and
|
||||
index = indirectionIndex
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
* A node that represents the indirect value of an instruction in the IR
|
||||
* after `index` number of loads.
|
||||
*
|
||||
* Note: Unlike `RawIndirectInstruction`, a value of type `IndirectInstruction` may
|
||||
* be an `InstructionNode`.
|
||||
*/
|
||||
class IndirectInstruction extends Node {
|
||||
Instruction instr;
|
||||
int indirectionIndex;
|
||||
|
||||
IndirectInstruction() {
|
||||
this.(RawIndirectInstruction).getInstruction() = instr and
|
||||
this.(RawIndirectInstruction).getIndirectionIndex() = indirectionIndex
|
||||
or
|
||||
this.(InstructionNode).getInstruction() =
|
||||
Ssa::getIRRepresentationOfIndirectInstruction(instr, indirectionIndex)
|
||||
}
|
||||
|
||||
/** Gets the underlying instruction. */
|
||||
Instruction getInstruction() { result = instr }
|
||||
|
||||
/** Gets the underlying indirection index. */
|
||||
int getIndirectionIndex() { result = indirectionIndex }
|
||||
|
||||
/**
|
||||
* Holds if this `IndirectInstruction` is represented directly in the IR instead of
|
||||
* a `RawIndirectionInstruction` with instruction `i` and indirection index `index`.
|
||||
*/
|
||||
predicate isIRRepresentationOf(Instruction i, int index) {
|
||||
this instanceof InstructionNode and
|
||||
(
|
||||
i = instr and
|
||||
index = indirectionIndex
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/** Gets the callable in which this node occurs. */
|
||||
DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() }
|
||||
|
||||
@@ -47,24 +127,6 @@ private class PrimaryArgumentNode extends ArgumentNode, OperandNode {
|
||||
override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) {
|
||||
op = call.getArgumentOperand(pos.(DirectPosition).getIndex())
|
||||
}
|
||||
|
||||
override string toStringImpl() { result = argumentOperandToString(op) }
|
||||
}
|
||||
|
||||
private string argumentOperandToString(ArgumentOperand op) {
|
||||
exists(Expr unconverted |
|
||||
unconverted = op.getDef().getUnconvertedResultExpression() and
|
||||
result = unconverted.toString()
|
||||
)
|
||||
or
|
||||
// Certain instructions don't map to an unconverted result expression. For these cases
|
||||
// we fall back to a simpler naming scheme. This can happen in IR-generated constructors.
|
||||
not exists(op.getDef().getUnconvertedResultExpression()) and
|
||||
(
|
||||
result = "Argument " + op.(PositionalArgumentOperand).getIndex()
|
||||
or
|
||||
op instanceof ThisArgumentOperand and result = "Argument this"
|
||||
)
|
||||
}
|
||||
|
||||
private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode {
|
||||
@@ -73,10 +135,6 @@ private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode
|
||||
pos.(IndirectionPosition).getArgumentIndex() = this.getArgumentIndex() and
|
||||
pos.(IndirectionPosition).getIndirectionIndex() = super.getIndirectionIndex()
|
||||
}
|
||||
|
||||
override string toStringImpl() {
|
||||
result = argumentOperandToString(this.getAddressOperand()) + " indirection"
|
||||
}
|
||||
}
|
||||
|
||||
/** A parameter position represented by an integer. */
|
||||
@@ -200,15 +258,21 @@ private predicate hasNonInitializeParameterDef(IRVariable v) {
|
||||
|
||||
class ReturnIndirectionNode extends IndirectReturnNode, ReturnNode {
|
||||
override ReturnKind getKind() {
|
||||
exists(int argumentIndex, ReturnIndirectionInstruction returnInd |
|
||||
returnInd.hasIndex(argumentIndex) and
|
||||
this.getAddressOperand() = returnInd.getSourceAddressOperand() and
|
||||
result = TIndirectReturnKind(argumentIndex, this.getIndirectionIndex()) and
|
||||
hasNonInitializeParameterDef(returnInd.getIRVariable())
|
||||
exists(Operand op, int i |
|
||||
hasOperandAndIndex(this, pragma[only_bind_into](op), pragma[only_bind_into](i))
|
||||
|
|
||||
exists(int argumentIndex, ReturnIndirectionInstruction returnInd |
|
||||
op = returnInd.getSourceAddressOperand() and
|
||||
returnInd.hasIndex(argumentIndex) and
|
||||
hasNonInitializeParameterDef(returnInd.getIRVariable()) and
|
||||
result = TIndirectReturnKind(argumentIndex, pragma[only_bind_into](i))
|
||||
)
|
||||
or
|
||||
exists(ReturnValueInstruction return |
|
||||
op = return.getReturnAddressOperand() and
|
||||
result = TNormalReturnKind(i - 1)
|
||||
)
|
||||
)
|
||||
or
|
||||
this.getAddressOperand() = any(ReturnValueInstruction r).getReturnAddressOperand() and
|
||||
result = TNormalReturnKind(this.getIndirectionIndex() - 1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,9 +26,9 @@ private module Cached {
|
||||
* - `SsaPhiNode`, which represents phi nodes as computed by the shared SSA library.
|
||||
* - `IndirectArgumentOutNode`, which represents the value of an argument (and its indirections) after
|
||||
* it leaves a function call.
|
||||
* - `IndirectOperand`, which represents the value of `operand` after loading the address a number
|
||||
* - `RawIndirectOperand`, which represents the value of `operand` after loading the address a number
|
||||
* of times.
|
||||
* - `IndirectInstruction`, which represents the value of `instr` after loading the address a number
|
||||
* - `RawIndirectInstruction`, which represents the value of `instr` after loading the address a number
|
||||
* of times.
|
||||
*/
|
||||
cached
|
||||
@@ -52,11 +52,11 @@ private module Cached {
|
||||
Ssa::isModifiableByCall(operand) and
|
||||
indirectionIndex = [1 .. Ssa::countIndirectionsForCppType(operand.getLanguageType())]
|
||||
} or
|
||||
TIndirectOperand(Operand op, int indirectionIndex) {
|
||||
Ssa::hasIndirectOperand(op, indirectionIndex)
|
||||
TRawIndirectOperand(Operand op, int indirectionIndex) {
|
||||
Ssa::hasRawIndirectOperand(op, indirectionIndex)
|
||||
} or
|
||||
TIndirectInstruction(Instruction instr, int indirectionIndex) {
|
||||
Ssa::hasIndirectInstruction(instr, indirectionIndex)
|
||||
TRawIndirectInstruction(Instruction instr, int indirectionIndex) {
|
||||
Ssa::hasRawIndirectInstruction(instr, indirectionIndex)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -589,7 +589,7 @@ class IndirectArgumentOutNode extends Node, TIndirectArgumentOutNode, PartialDef
|
||||
|
||||
pragma[nomagic]
|
||||
predicate indirectReturnOutNodeOperand0(CallInstruction call, Operand operand, int indirectionIndex) {
|
||||
Ssa::hasIndirectInstruction(call, indirectionIndex) and
|
||||
Ssa::hasRawIndirectInstruction(call, indirectionIndex) and
|
||||
operandForfullyConvertedCall(operand, call)
|
||||
}
|
||||
|
||||
@@ -597,7 +597,7 @@ pragma[nomagic]
|
||||
predicate indirectReturnOutNodeInstruction0(
|
||||
CallInstruction call, Instruction instr, int indirectionIndex
|
||||
) {
|
||||
Ssa::hasIndirectInstruction(call, indirectionIndex) and
|
||||
Ssa::hasRawIndirectInstruction(call, indirectionIndex) and
|
||||
instructionForfullyConvertedCall(instr, call)
|
||||
}
|
||||
|
||||
@@ -643,15 +643,16 @@ private Type getTypeImpl(Type t, int indirectionIndex) {
|
||||
* A node that represents the indirect value of an operand in the IR
|
||||
* after `index` number of loads.
|
||||
*/
|
||||
class IndirectOperand extends Node, TIndirectOperand {
|
||||
class RawIndirectOperand extends Node, TRawIndirectOperand {
|
||||
Operand operand;
|
||||
int indirectionIndex;
|
||||
|
||||
IndirectOperand() { this = TIndirectOperand(operand, indirectionIndex) }
|
||||
RawIndirectOperand() { this = TRawIndirectOperand(operand, indirectionIndex) }
|
||||
|
||||
/** Gets the underlying instruction. */
|
||||
Operand getOperand() { result = operand }
|
||||
|
||||
/** Gets the underlying indirection index. */
|
||||
int getIndirectionIndex() { result = indirectionIndex }
|
||||
|
||||
override Function getFunction() { result = this.getOperand().getDef().getEnclosingFunction() }
|
||||
@@ -696,15 +697,16 @@ class UninitializedNode extends Node {
|
||||
* A node that represents the indirect value of an instruction in the IR
|
||||
* after `index` number of loads.
|
||||
*/
|
||||
class IndirectInstruction extends Node, TIndirectInstruction {
|
||||
class RawIndirectInstruction extends Node, TRawIndirectInstruction {
|
||||
Instruction instr;
|
||||
int indirectionIndex;
|
||||
|
||||
IndirectInstruction() { this = TIndirectInstruction(instr, indirectionIndex) }
|
||||
RawIndirectInstruction() { this = TRawIndirectInstruction(instr, indirectionIndex) }
|
||||
|
||||
/** Gets the underlying instruction. */
|
||||
Instruction getInstruction() { result = instr }
|
||||
|
||||
/** Gets the underlying indirection index. */
|
||||
int getIndirectionIndex() { result = indirectionIndex }
|
||||
|
||||
override Function getFunction() { result = this.getInstruction().getEnclosingFunction() }
|
||||
@@ -725,7 +727,11 @@ class IndirectInstruction extends Node, TIndirectInstruction {
|
||||
}
|
||||
|
||||
private predicate isFullyConvertedArgument(Expr e) {
|
||||
e = any(Call call).getAnArgument().getFullyConverted()
|
||||
exists(Call call |
|
||||
e = call.getAnArgument().getFullyConverted()
|
||||
or
|
||||
e = call.getQualifier().getFullyConverted()
|
||||
)
|
||||
}
|
||||
|
||||
private predicate isFullyConvertedCall(Expr e) { e = any(Call call).getFullyConverted() }
|
||||
@@ -738,40 +744,27 @@ private predicate convertedExprMustBeOperand(Expr e) {
|
||||
}
|
||||
|
||||
/** Holds if `node` is an `OperandNode` that should map `node.asExpr()` to `e`. */
|
||||
predicate exprNodeShouldBeOperand(Node node, Expr e) {
|
||||
e = node.asOperand().getDef().getConvertedResultExpression() and
|
||||
convertedExprMustBeOperand(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `load` is a `LoadInstruction` that is the result of evaluating `e`
|
||||
* and `node` is an `IndirectOperandNode` that should map `node.asExpr()` to `e`.
|
||||
*
|
||||
* We map `e` to `node.asExpr()` when `node` semantically represents the
|
||||
* same value as `load`. A subsequent flow step will flow `node` to
|
||||
* the `LoadInstruction`.
|
||||
*/
|
||||
private predicate exprNodeShouldBeIndirectOperand(IndirectOperand node, Expr e, LoadInstruction load) {
|
||||
node.getIndirectionIndex() = 1 and
|
||||
e = load.getConvertedResultExpression() and
|
||||
load.getSourceAddressOperand() = node.getOperand() and
|
||||
not convertedExprMustBeOperand(e)
|
||||
predicate exprNodeShouldBeOperand(OperandNode node, Expr e) {
|
||||
exists(Operand operand |
|
||||
node.getOperand() = operand and
|
||||
e = operand.getDef().getConvertedResultExpression()
|
||||
|
|
||||
convertedExprMustBeOperand(e)
|
||||
or
|
||||
node.(IndirectOperand).isIRRepresentationOf(_, _)
|
||||
)
|
||||
}
|
||||
|
||||
private predicate indirectExprNodeShouldBeIndirectOperand0(
|
||||
VariableAddressInstruction instr, IndirectOperand node, Expr e
|
||||
VariableAddressInstruction instr, RawIndirectOperand node, Expr e
|
||||
) {
|
||||
instr = node.getOperand().getDef() and
|
||||
not node instanceof ExprNode and
|
||||
e = instr.getAst().(Expr).getUnconverted()
|
||||
}
|
||||
|
||||
/** Holds if `node` should be an `IndirectOperand` that maps `node.asIndirectExpr()` to `e`. */
|
||||
private predicate indirectExprNodeShouldBeIndirectOperand(IndirectOperand node, Expr e) {
|
||||
exists(Instruction instr |
|
||||
instr = node.getOperand().getDef() and
|
||||
not node instanceof ExprNode
|
||||
|
|
||||
private predicate indirectExprNodeShouldBeIndirectOperand(RawIndirectOperand node, Expr e) {
|
||||
exists(Instruction instr | instr = node.getOperand().getDef() |
|
||||
exists(Expr e0 |
|
||||
indirectExprNodeShouldBeIndirectOperand0(instr, node, e0) and
|
||||
e = e0.getFullyConverted()
|
||||
@@ -794,7 +787,6 @@ private predicate exprNodeShouldBeIndirectOutNode(IndirectArgumentOutNode node,
|
||||
predicate exprNodeShouldBeInstruction(Node node, Expr e) {
|
||||
e = node.asInstruction().getConvertedResultExpression() and
|
||||
not exprNodeShouldBeOperand(_, e) and
|
||||
not exprNodeShouldBeIndirectOperand(_, e, _) and
|
||||
not exprNodeShouldBeIndirectOutNode(_, e)
|
||||
}
|
||||
|
||||
@@ -838,23 +830,6 @@ private class OperandExprNode extends ExprNodeBase, OperandNode {
|
||||
|
||||
final override Expr getExpr() { result = this.getConvertedExpr().getUnconverted() }
|
||||
|
||||
final override string toStringImpl() {
|
||||
// Avoid generating multiple `toString` results for `ArgumentNode`s
|
||||
// since they have a better `toString`.
|
||||
result = this.(ArgumentNode).toStringImpl()
|
||||
or
|
||||
not this instanceof ArgumentNode and
|
||||
result = this.getConvertedExpr().toString()
|
||||
}
|
||||
}
|
||||
|
||||
private class IndirectOperandExprNode extends ExprNodeBase, IndirectOperand {
|
||||
IndirectOperandExprNode() { exprNodeShouldBeIndirectOperand(this, _, _) }
|
||||
|
||||
final override Expr getConvertedExpr() { exprNodeShouldBeIndirectOperand(this, result, _) }
|
||||
|
||||
final override Expr getExpr() { result = this.getConvertedExpr().getUnconverted() }
|
||||
|
||||
final override string toStringImpl() { result = this.getConvertedExpr().toString() }
|
||||
}
|
||||
|
||||
@@ -869,7 +844,7 @@ abstract private class IndirectExprNodeBase extends Node {
|
||||
abstract Expr getExpr(int indirectionIndex);
|
||||
}
|
||||
|
||||
private class IndirectOperandIndirectExprNode extends IndirectExprNodeBase, IndirectOperand {
|
||||
private class IndirectOperandIndirectExprNode extends IndirectExprNodeBase, RawIndirectOperand {
|
||||
IndirectOperandIndirectExprNode() { indirectExprNodeShouldBeIndirectOperand(this, _) }
|
||||
|
||||
final override Expr getConvertedExpr(int index) {
|
||||
@@ -883,7 +858,8 @@ private class IndirectOperandIndirectExprNode extends IndirectExprNodeBase, Indi
|
||||
}
|
||||
}
|
||||
|
||||
private class IndirectInstructionIndirectExprNode extends IndirectExprNodeBase, IndirectInstruction {
|
||||
private class IndirectInstructionIndirectExprNode extends IndirectExprNodeBase,
|
||||
RawIndirectInstruction {
|
||||
IndirectInstructionIndirectExprNode() { indirectExprNodeShouldBeIndirectInstruction(this, _) }
|
||||
|
||||
final override Expr getConvertedExpr(int index) {
|
||||
@@ -903,8 +879,6 @@ private class IndirectArgumentOutExprNode extends ExprNodeBase, IndirectArgument
|
||||
final override Expr getConvertedExpr() { exprNodeShouldBeIndirectOutNode(this, result) }
|
||||
|
||||
final override Expr getExpr() { result = this.getConvertedExpr() }
|
||||
|
||||
final override string toStringImpl() { result = this.getConvertedExpr().toString() }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1171,7 +1145,7 @@ Node uninitializedNode(LocalVariable v) { none() }
|
||||
*/
|
||||
predicate localFlowStep = simpleLocalFlowStep/2;
|
||||
|
||||
private predicate indirectionOperandFlow(IndirectOperand nodeFrom, Node nodeTo) {
|
||||
private predicate indirectionOperandFlow(RawIndirectOperand nodeFrom, Node nodeTo) {
|
||||
// Reduce the indirection count by 1 if we're passing through a `LoadInstruction`.
|
||||
exists(int ind, LoadInstruction load |
|
||||
hasOperandAndIndex(nodeFrom, load.getSourceAddressOperand(), ind) and
|
||||
@@ -1208,7 +1182,7 @@ predicate hasInstructionAndIndex(
|
||||
indirectInstr.getIndirectionIndex() = indirectionIndex
|
||||
}
|
||||
|
||||
private predicate indirectionInstructionFlow(IndirectInstruction nodeFrom, IndirectOperand nodeTo) {
|
||||
private predicate indirectionInstructionFlow(RawIndirectInstruction nodeFrom, IndirectOperand nodeTo) {
|
||||
// If there's flow from an instruction to an operand, then there's also flow from the
|
||||
// indirect instruction to the indirect operand.
|
||||
exists(Operand operand, Instruction instr, int indirectionIndex |
|
||||
@@ -1463,9 +1437,9 @@ private IRBlock getBasicBlock(Node node) {
|
||||
or
|
||||
node.(SsaPhiNode).getPhiNode().getBasicBlock() = result
|
||||
or
|
||||
node.(IndirectOperand).getOperand().getUse().getBlock() = result
|
||||
node.(RawIndirectOperand).getOperand().getUse().getBlock() = result
|
||||
or
|
||||
node.(IndirectInstruction).getInstruction().getBlock() = result
|
||||
node.(RawIndirectInstruction).getInstruction().getBlock() = result
|
||||
or
|
||||
result = getBasicBlock(node.(PostUpdateNode).getPreUpdateNode())
|
||||
}
|
||||
@@ -1511,10 +1485,11 @@ signature predicate instructionGuardChecksSig(IRGuardCondition g, Instruction in
|
||||
module InstructionBarrierGuard<instructionGuardChecksSig/3 instructionGuardChecks> {
|
||||
/** Gets a node that is safely guarded by the given guard check. */
|
||||
ExprNode getABarrierNode() {
|
||||
exists(IRGuardCondition g, ValueNumber value, boolean edge |
|
||||
exists(IRGuardCondition g, ValueNumber value, boolean edge, Operand use |
|
||||
instructionGuardChecks(g, value.getAnInstruction(), edge) and
|
||||
result.asInstruction() = value.getAnInstruction() and
|
||||
g.controls(result.asInstruction().getBlock(), edge)
|
||||
use = value.getAnInstruction().getAUse() and
|
||||
result.asOperand() = use and
|
||||
g.controls(use.getDef().getBlock(), edge)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,21 +86,31 @@ private module SourceVariables {
|
||||
|
||||
import SourceVariables
|
||||
|
||||
predicate hasIndirectOperand(Operand op, int indirectionIndex) {
|
||||
/**
|
||||
* Holds if the `(operand, indirectionIndex)` columns should be
|
||||
* assigned a `RawIndirectOperand` value.
|
||||
*/
|
||||
predicate hasRawIndirectOperand(Operand op, int indirectionIndex) {
|
||||
exists(CppType type, int m |
|
||||
not ignoreOperand(op) and
|
||||
type = getLanguageType(op) and
|
||||
m = countIndirectionsForCppType(type) and
|
||||
indirectionIndex = [1 .. m]
|
||||
indirectionIndex = [1 .. m] and
|
||||
not exists(getIRRepresentationOfIndirectOperand(op, indirectionIndex))
|
||||
)
|
||||
}
|
||||
|
||||
predicate hasIndirectInstruction(Instruction instr, int indirectionIndex) {
|
||||
/**
|
||||
* Holds if the `(instr, indirectionIndex)` columns should be
|
||||
* assigned a `RawIndirectInstruction` value.
|
||||
*/
|
||||
predicate hasRawIndirectInstruction(Instruction instr, int indirectionIndex) {
|
||||
exists(CppType type, int m |
|
||||
not ignoreInstruction(instr) and
|
||||
type = getResultLanguageType(instr) and
|
||||
m = countIndirectionsForCppType(type) and
|
||||
indirectionIndex = [1 .. m]
|
||||
indirectionIndex = [1 .. m] and
|
||||
not exists(getIRRepresentationOfIndirectInstruction(instr, indirectionIndex))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -166,6 +166,38 @@ private module Cached {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if the underlying IR has a suitable operand to represent a value
|
||||
* that would otherwise need to be represented by a dedicated `RawIndirectOperand` value.
|
||||
*
|
||||
* Such operands do not create new `RawIndirectOperand` values, but are
|
||||
* instead associated with the operand returned by this predicate.
|
||||
*/
|
||||
cached
|
||||
Operand getIRRepresentationOfIndirectOperand(Operand operand, int indirectionIndex) {
|
||||
exists(LoadInstruction load |
|
||||
operand = load.getSourceAddressOperand() and
|
||||
result = unique( | | load.getAUse()) and
|
||||
isUseImpl(operand, _, indirectionIndex - 1)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if the underlying IR has a suitable instruction to represent a value
|
||||
* that would otherwise need to be represented by a dedicated `RawIndirectInstruction` value.
|
||||
*
|
||||
* Such instruction do not create new `RawIndirectOperand` values, but are
|
||||
* instead associated with the instruction returned by this predicate.
|
||||
*/
|
||||
cached
|
||||
Instruction getIRRepresentationOfIndirectInstruction(Instruction instr, int indirectionIndex) {
|
||||
exists(LoadInstruction load |
|
||||
load.getSourceAddress() = instr and
|
||||
isUseImpl(load.getSourceAddressOperand(), _, indirectionIndex - 1) and
|
||||
result = instr
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `operand` is a use of an SSA variable rooted at `base`, and the
|
||||
* path from `base` to `operand` passes through `ind` load-like instructions.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
edges
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode |
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode |
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode |
|
||||
| test.cpp:74:24:74:30 | medical | test.cpp:78:24:78:27 | temp |
|
||||
| test.cpp:74:24:74:30 | medical | test.cpp:81:22:81:28 | medical |
|
||||
| test.cpp:77:16:77:22 | medical | test.cpp:78:24:78:27 | temp |
|
||||
@@ -7,6 +9,8 @@ edges
|
||||
| test.cpp:81:22:81:28 | medical | test.cpp:82:24:82:28 | buff5 |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
@@ -14,6 +18,8 @@ edges
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
| test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode |
|
||||
nodes
|
||||
@@ -40,6 +46,7 @@ subpaths
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:57:9:57:18 | theZipcode | this source of private data. |
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:57:9:57:18 | theZipcode | this source of private data. |
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:57:9:57:18 | theZipcode | this source of private data. |
|
||||
| test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | test.cpp:57:9:57:18 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:57:9:57:18 | theZipcode | this source of private data. |
|
||||
| test.cpp:74:24:74:30 | medical | test.cpp:74:24:74:30 | medical | test.cpp:74:24:74:30 | medical | This write into the external location 'medical' may contain unencrypted data from $@. | test.cpp:74:24:74:30 | medical | this source of private data. |
|
||||
| test.cpp:78:24:78:27 | temp | test.cpp:74:24:74:30 | medical | test.cpp:78:24:78:27 | temp | This write into the external location 'temp' may contain unencrypted data from $@. | test.cpp:74:24:74:30 | medical | this source of private data. |
|
||||
| test.cpp:78:24:78:27 | temp | test.cpp:77:16:77:22 | medical | test.cpp:78:24:78:27 | temp | This write into the external location 'temp' may contain unencrypted data from $@. | test.cpp:77:16:77:22 | medical | this source of private data. |
|
||||
@@ -49,6 +56,7 @@ subpaths
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:96:37:96:46 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:96:37:96:46 | theZipcode | this source of private data. |
|
||||
@@ -56,5 +64,6 @@ subpaths
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:42:99:51 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:42:99:51 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:42:99:51 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:42:99:51 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:61:99:70 | theZipcode | this source of private data. |
|
||||
| test.cpp:99:42:99:51 | theZipcode | test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode | This write into the external location 'theZipcode' may contain unencrypted data from $@. | test.cpp:99:61:99:70 | theZipcode | this source of private data. |
|
||||
|
||||
@@ -4,7 +4,7 @@ bool guarded(int);
|
||||
|
||||
void bg_basic(int source) {
|
||||
if (guarded(source)) {
|
||||
sink(source); // $ SPURIOUS: ir
|
||||
sink(source);
|
||||
} else {
|
||||
sink(source); // $ ast,ir
|
||||
}
|
||||
@@ -14,13 +14,13 @@ void bg_not(int source) {
|
||||
if (!guarded(source)) {
|
||||
sink(source); // $ ast,ir
|
||||
} else {
|
||||
sink(source); // $ SPURIOUS: ir
|
||||
sink(source);
|
||||
}
|
||||
}
|
||||
|
||||
void bg_and(int source, bool arbitrary) {
|
||||
if (guarded(source) && arbitrary) {
|
||||
sink(source); // $ SPURIOUS: ir
|
||||
sink(source);
|
||||
} else {
|
||||
sink(source); // $ ast,ir
|
||||
}
|
||||
@@ -38,7 +38,7 @@ void bg_return(int source) {
|
||||
if (!guarded(source)) {
|
||||
return;
|
||||
}
|
||||
sink(source); // $ SPURIOUS: ir
|
||||
sink(source);
|
||||
}
|
||||
|
||||
struct XY {
|
||||
@@ -48,7 +48,7 @@ struct XY {
|
||||
void bg_stackstruct(XY s1, XY s2) {
|
||||
s1.x = source();
|
||||
if (guarded(s1.x)) {
|
||||
sink(s1.x); // $ SPURIOUS: ast,ir
|
||||
sink(s1.x); // $ SPURIOUS: ast
|
||||
} else if (guarded(s1.y)) {
|
||||
sink(s1.x); // $ ast,ir
|
||||
} else if (guarded(s2.y)) {
|
||||
@@ -59,7 +59,7 @@ void bg_stackstruct(XY s1, XY s2) {
|
||||
void bg_structptr(XY *p1, XY *p2) {
|
||||
p1->x = source();
|
||||
if (guarded(p1->x)) {
|
||||
sink(p1->x); // $ SPURIOUS: ast,ir
|
||||
sink(p1->x); // $ SPURIOUS: ast
|
||||
} else if (guarded(p1->y)) {
|
||||
sink(p1->x); // $ ast,ir
|
||||
} else if (guarded(p2->x)) {
|
||||
|
||||
@@ -38,7 +38,7 @@ reverseRead
|
||||
| dispatch.cpp:168:3:168:4 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| dispatch.cpp:173:37:173:38 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| dispatch.cpp:174:37:174:38 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| test.cpp:488:21:488:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| test.cpp:488:21:488:21 | s | Origin of readStep is missing a PostUpdateNode. |
|
||||
argHasPostUpdate
|
||||
postWithInFlow
|
||||
| test.cpp:384:10:384:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. |
|
||||
|
||||
@@ -346,7 +346,7 @@ namespace FlowThroughGlobals {
|
||||
void taintAndCall() {
|
||||
globalVar = source();
|
||||
calledAfterTaint();
|
||||
sink(globalVar); // $ ast ir ir=333:17 ir=347:17
|
||||
sink(globalVar); // $ ast ir=333:17 ir=347:17
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,52 +39,52 @@ uniquePostUpdate
|
||||
| struct_init.c:41:16:41:20 | VariableAddress indirection | Node has multiple PostUpdateNodes. |
|
||||
postIsInSameCallable
|
||||
reverseRead
|
||||
| A.cpp:49:10:49:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:65:10:65:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:66:10:66:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:74:10:74:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:75:10:75:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:107:12:107:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:120:12:120:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:132:10:132:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:152:10:152:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:153:10:153:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:49:10:49:10 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:65:10:65:11 | b1 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:66:10:66:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:74:10:74:11 | b1 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:75:10:75:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:107:12:107:13 | c1 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:120:12:120:13 | c1 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:132:10:132:10 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:152:10:152:10 | d | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:153:10:153:10 | d | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:153:13:153:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:154:10:154:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:163:10:163:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:164:10:164:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:154:10:154:10 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:163:10:163:11 | l3 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:164:10:164:11 | l3 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:164:14:164:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:165:10:165:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:165:10:165:11 | l3 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:165:14:165:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:165:20:165:23 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:166:10:166:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:166:10:166:11 | l3 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:166:14:166:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:166:20:166:23 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:166:26:166:29 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:169:12:169:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:9:10:9:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| A.cpp:169:12:169:12 | l | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:9:10:9:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:9:14:9:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:10:10:10:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:10:10:10:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:10:14:10:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:18:10:18:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:18:10:18:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:18:14:18:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:19:10:19:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:19:10:19:11 | b2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| B.cpp:19:14:19:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| C.cpp:29:10:29:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| C.cpp:31:10:31:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:30:5:30:5 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:37:5:37:5 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:58:5:58:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| C.cpp:29:10:29:11 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| C.cpp:31:10:31:11 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:30:5:30:5 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:37:5:37:5 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:58:5:58:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:58:5:58:12 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:64:10:64:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:64:10:64:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:64:10:64:17 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| D.cpp:64:20:64:22 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:21:10:21:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:21:10:21:10 | p | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:21:13:21:16 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:29:21:29:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:29:21:29:21 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:30:21:30:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:30:23:30:26 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:32:10:32:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| E.cpp:32:10:32:10 | b | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:70:11:70:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:73:8:73:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:77:11:77:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
@@ -111,12 +111,12 @@ reverseRead
|
||||
| aliasing.cpp:194:16:194:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:194:19:194:19 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:196:8:196:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:200:16:200:18 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:200:16:200:18 | ps2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:200:21:200:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:201:8:201:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:205:16:205:18 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:201:8:201:10 | ps2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:205:16:205:18 | ps2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:205:21:205:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:206:8:206:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| aliasing.cpp:206:8:206:10 | ps2 | Origin of readStep is missing a PostUpdateNode. |
|
||||
| arrays.cpp:36:3:36:3 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| arrays.cpp:36:5:36:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| arrays.cpp:37:8:37:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
@@ -144,35 +144,35 @@ reverseRead
|
||||
| by_reference.cpp:102:22:102:26 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:103:21:103:25 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:104:16:104:20 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:106:22:106:27 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:107:21:107:26 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:108:16:108:21 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:106:22:106:27 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:107:21:107:26 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:108:16:108:21 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:110:8:110:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:110:14:110:25 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:111:8:111:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:111:14:111:22 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:112:8:112:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:114:8:114:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:114:8:114:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:114:16:114:27 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:115:8:115:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:115:8:115:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:115:16:115:24 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:116:8:116:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:116:8:116:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:122:21:122:25 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:123:22:123:26 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:124:15:124:19 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:126:21:126:26 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:127:22:127:27 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:128:15:128:20 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:126:21:126:26 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:127:22:127:27 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:128:15:128:20 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:130:8:130:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:130:14:130:25 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:131:8:131:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:131:14:131:22 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:132:8:132:12 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:134:8:134:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:134:8:134:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:134:16:134:27 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:135:8:135:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:135:8:135:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:135:16:135:24 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:136:8:136:13 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| by_reference.cpp:136:8:136:13 | pouter | Origin of readStep is missing a PostUpdateNode. |
|
||||
| complex.cpp:22:3:22:5 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| complex.cpp:25:7:25:7 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| complex.cpp:42:8:42:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
@@ -187,10 +187,10 @@ reverseRead
|
||||
| complex.cpp:55:6:55:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| complex.cpp:56:3:56:4 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| complex.cpp:56:6:56:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:54:3:54:4 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:55:8:55:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:60:3:60:4 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:61:8:61:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:54:3:54:4 | ll | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:55:8:55:9 | ll | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:60:3:60:4 | ll | Origin of readStep is missing a PostUpdateNode. |
|
||||
| conflated.cpp:61:8:61:9 | ll | Origin of readStep is missing a PostUpdateNode. |
|
||||
| qualifiers.cpp:23:10:23:14 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| qualifiers.cpp:23:16:23:20 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| qualifiers.cpp:28:10:28:14 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
@@ -230,10 +230,10 @@ reverseRead
|
||||
| realistic.cpp:65:21:65:30 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| realistic.cpp:65:32:65:34 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| realistic.cpp:65:37:65:45 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| simple.cpp:79:16:79:17 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| simple.cpp:83:9:83:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:15:8:15:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:16:8:16:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| simple.cpp:79:16:79:17 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| simple.cpp:83:9:83:10 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:15:8:15:9 | ab | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:16:8:16:9 | ab | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:22:8:22:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:23:8:23:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| struct_init.c:26:16:26:20 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
|
||||
@@ -5,8 +5,8 @@ edges
|
||||
| A.cpp:27:22:27:32 | Store | A.cpp:27:28:27:28 | Load indirection [post update] [c] |
|
||||
| A.cpp:28:8:28:10 | this indirection [c] | A.cpp:28:23:28:26 | Load indirection [c] |
|
||||
| A.cpp:28:23:28:26 | Load indirection [c] | A.cpp:28:8:28:10 | VariableAddress indirection |
|
||||
| A.cpp:28:23:28:26 | Load indirection [c] | A.cpp:28:29:28:29 | c |
|
||||
| A.cpp:28:29:28:29 | c | A.cpp:28:8:28:10 | VariableAddress indirection |
|
||||
| A.cpp:28:23:28:26 | Load indirection [c] | A.cpp:28:29:28:29 | FieldAddress indirection |
|
||||
| A.cpp:28:29:28:29 | FieldAddress indirection | A.cpp:28:8:28:10 | VariableAddress indirection |
|
||||
| A.cpp:29:23:29:23 | c | A.cpp:31:20:31:20 | c |
|
||||
| A.cpp:31:14:31:21 | call to B [c] | A.cpp:29:15:29:18 | VariableAddress indirection [c] |
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c |
|
||||
@@ -20,15 +20,15 @@ edges
|
||||
| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c |
|
||||
| A.cpp:48:20:48:20 | c | A.cpp:48:12:48:18 | call to make indirection [c] |
|
||||
| A.cpp:49:10:49:10 | Load indirection [c] | A.cpp:49:10:49:13 | c |
|
||||
| A.cpp:49:10:49:10 | Load indirection [c] | A.cpp:49:13:49:13 | c |
|
||||
| A.cpp:49:10:49:10 | Load indirection [c] | A.cpp:49:13:49:13 | c |
|
||||
| A.cpp:49:13:49:13 | c | A.cpp:49:10:49:13 | c |
|
||||
| A.cpp:55:5:55:5 | set output argument [c] | A.cpp:56:10:56:10 | b indirection [c] |
|
||||
| A.cpp:49:10:49:10 | Load indirection [c] | A.cpp:49:13:49:13 | FieldAddress indirection |
|
||||
| A.cpp:49:13:49:13 | FieldAddress indirection | A.cpp:49:10:49:13 | c |
|
||||
| A.cpp:49:13:49:13 | FieldAddress indirection | A.cpp:49:13:49:13 | c |
|
||||
| A.cpp:55:5:55:5 | set output argument [c] | A.cpp:56:10:56:10 | Load indirection [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:55:5:55:5 | set output argument [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:55:12:55:19 | new |
|
||||
| A.cpp:56:10:56:10 | b indirection [c] | A.cpp:28:8:28:10 | this indirection [c] |
|
||||
| A.cpp:56:10:56:10 | b indirection [c] | A.cpp:56:10:56:17 | call to get |
|
||||
| A.cpp:56:10:56:10 | Load indirection [c] | A.cpp:28:8:28:10 | this indirection [c] |
|
||||
| A.cpp:56:10:56:10 | Load indirection [c] | A.cpp:56:10:56:17 | call to get |
|
||||
| A.cpp:57:11:57:24 | call to B [c] | A.cpp:57:11:57:24 | new indirection [c] |
|
||||
| A.cpp:57:11:57:24 | new indirection [c] | A.cpp:28:8:28:10 | this indirection [c] |
|
||||
| A.cpp:57:11:57:24 | new indirection [c] | A.cpp:57:10:57:32 | call to get |
|
||||
@@ -40,17 +40,17 @@ edges
|
||||
| A.cpp:64:21:64:28 | new | A.cpp:64:21:64:28 | new |
|
||||
| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c |
|
||||
| A.cpp:66:10:66:11 | Load indirection [c] | A.cpp:66:10:66:14 | c |
|
||||
| A.cpp:66:10:66:11 | Load indirection [c] | A.cpp:66:14:66:14 | c |
|
||||
| A.cpp:66:10:66:11 | Load indirection [c] | A.cpp:66:14:66:14 | c |
|
||||
| A.cpp:66:14:66:14 | c | A.cpp:66:10:66:14 | c |
|
||||
| A.cpp:66:10:66:11 | Load indirection [c] | A.cpp:66:14:66:14 | FieldAddress indirection |
|
||||
| A.cpp:66:14:66:14 | FieldAddress indirection | A.cpp:66:10:66:14 | c |
|
||||
| A.cpp:66:14:66:14 | FieldAddress indirection | A.cpp:66:14:66:14 | c |
|
||||
| A.cpp:73:10:73:19 | call to setOnBWrap indirection [c] | A.cpp:75:10:75:11 | Load indirection [c] |
|
||||
| A.cpp:73:25:73:32 | new | A.cpp:73:10:73:19 | call to setOnBWrap indirection [c] |
|
||||
| A.cpp:73:25:73:32 | new | A.cpp:73:25:73:32 | new |
|
||||
| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c |
|
||||
| A.cpp:75:10:75:11 | Load indirection [c] | A.cpp:75:10:75:14 | c |
|
||||
| A.cpp:75:10:75:11 | Load indirection [c] | A.cpp:75:14:75:14 | c |
|
||||
| A.cpp:75:10:75:11 | Load indirection [c] | A.cpp:75:14:75:14 | c |
|
||||
| A.cpp:75:14:75:14 | c | A.cpp:75:10:75:14 | c |
|
||||
| A.cpp:75:10:75:11 | Load indirection [c] | A.cpp:75:14:75:14 | FieldAddress indirection |
|
||||
| A.cpp:75:14:75:14 | FieldAddress indirection | A.cpp:75:10:75:14 | c |
|
||||
| A.cpp:75:14:75:14 | FieldAddress indirection | A.cpp:75:14:75:14 | c |
|
||||
| A.cpp:78:27:78:27 | c | A.cpp:81:21:81:21 | c |
|
||||
| A.cpp:81:10:81:15 | call to setOnB indirection [c] | A.cpp:78:6:78:15 | VariableAddress indirection [c] |
|
||||
| A.cpp:81:21:81:21 | c | A.cpp:81:10:81:15 | call to setOnB indirection [c] |
|
||||
@@ -61,26 +61,26 @@ edges
|
||||
| A.cpp:90:15:90:15 | c | A.cpp:90:7:90:8 | set output argument [c] |
|
||||
| A.cpp:98:12:98:18 | new | A.cpp:100:5:100:13 | Store |
|
||||
| A.cpp:100:5:100:13 | Store | A.cpp:100:9:100:9 | Load indirection [post update] [a] |
|
||||
| A.cpp:100:9:100:9 | Load indirection [post update] [a] | A.cpp:101:8:101:9 | c1 indirection [a] |
|
||||
| A.cpp:101:8:101:9 | c1 indirection [a] | A.cpp:103:14:103:14 | c indirection [a] |
|
||||
| A.cpp:100:9:100:9 | Load indirection [post update] [a] | A.cpp:101:8:101:9 | ConvertToNonVirtualBase indirection [a] |
|
||||
| A.cpp:101:8:101:9 | ConvertToNonVirtualBase indirection [a] | A.cpp:103:14:103:14 | c indirection [a] |
|
||||
| A.cpp:103:14:103:14 | c indirection [a] | A.cpp:107:12:107:13 | Load indirection [a] |
|
||||
| A.cpp:103:14:103:14 | c indirection [a] | A.cpp:120:12:120:13 | Load indirection [a] |
|
||||
| A.cpp:107:12:107:13 | Load indirection [a] | A.cpp:107:12:107:16 | a |
|
||||
| A.cpp:107:12:107:13 | Load indirection [a] | A.cpp:107:16:107:16 | a |
|
||||
| A.cpp:107:12:107:13 | Load indirection [a] | A.cpp:107:16:107:16 | a |
|
||||
| A.cpp:107:16:107:16 | a | A.cpp:107:12:107:16 | a |
|
||||
| A.cpp:107:12:107:13 | Load indirection [a] | A.cpp:107:16:107:16 | FieldAddress indirection |
|
||||
| A.cpp:107:16:107:16 | FieldAddress indirection | A.cpp:107:12:107:16 | a |
|
||||
| A.cpp:107:16:107:16 | FieldAddress indirection | A.cpp:107:16:107:16 | a |
|
||||
| A.cpp:120:12:120:13 | Load indirection [a] | A.cpp:120:12:120:16 | a |
|
||||
| A.cpp:120:12:120:13 | Load indirection [a] | A.cpp:120:16:120:16 | a |
|
||||
| A.cpp:120:12:120:13 | Load indirection [a] | A.cpp:120:16:120:16 | a |
|
||||
| A.cpp:120:16:120:16 | a | A.cpp:120:12:120:16 | a |
|
||||
| A.cpp:120:12:120:13 | Load indirection [a] | A.cpp:120:16:120:16 | FieldAddress indirection |
|
||||
| A.cpp:120:16:120:16 | FieldAddress indirection | A.cpp:120:12:120:16 | a |
|
||||
| A.cpp:120:16:120:16 | FieldAddress indirection | A.cpp:120:16:120:16 | a |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:131:8:131:8 | f7 output argument [c] |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | set output argument [c] |
|
||||
| A.cpp:131:8:131:8 | f7 output argument [c] | A.cpp:132:10:132:10 | Load indirection [c] |
|
||||
| A.cpp:132:10:132:10 | Load indirection [c] | A.cpp:132:10:132:13 | c |
|
||||
| A.cpp:132:10:132:10 | Load indirection [c] | A.cpp:132:13:132:13 | c |
|
||||
| A.cpp:132:10:132:10 | Load indirection [c] | A.cpp:132:13:132:13 | c |
|
||||
| A.cpp:132:13:132:13 | c | A.cpp:132:10:132:13 | c |
|
||||
| A.cpp:132:10:132:10 | Load indirection [c] | A.cpp:132:13:132:13 | FieldAddress indirection |
|
||||
| A.cpp:132:13:132:13 | FieldAddress indirection | A.cpp:132:10:132:13 | c |
|
||||
| A.cpp:132:13:132:13 | FieldAddress indirection | A.cpp:132:13:132:13 | c |
|
||||
| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | Store |
|
||||
| A.cpp:142:7:142:20 | Store | A.cpp:142:10:142:10 | Load indirection [post update] [c] |
|
||||
| A.cpp:142:10:142:10 | Load indirection [post update] [c] | A.cpp:143:7:143:31 | Store indirection [c] |
|
||||
@@ -99,31 +99,31 @@ edges
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:152:10:152:10 | Load indirection [b] | A.cpp:152:10:152:13 | b |
|
||||
| A.cpp:152:10:152:10 | Load indirection [b] | A.cpp:152:13:152:13 | b |
|
||||
| A.cpp:152:10:152:10 | Load indirection [b] | A.cpp:152:13:152:13 | b |
|
||||
| A.cpp:152:13:152:13 | b | A.cpp:152:10:152:13 | b |
|
||||
| A.cpp:152:10:152:10 | Load indirection [b] | A.cpp:152:13:152:13 | FieldAddress indirection |
|
||||
| A.cpp:152:13:152:13 | FieldAddress indirection | A.cpp:152:10:152:13 | b |
|
||||
| A.cpp:152:13:152:13 | FieldAddress indirection | A.cpp:152:13:152:13 | b |
|
||||
| A.cpp:153:10:153:10 | Load indirection [b indirection, c] | A.cpp:153:13:153:13 | FieldAddress indirection [c] |
|
||||
| A.cpp:153:10:153:10 | Load indirection [b indirection, c] | A.cpp:153:13:153:13 | b indirection [c] |
|
||||
| A.cpp:153:13:153:13 | FieldAddress indirection [c] | A.cpp:153:13:153:13 | b indirection [c] |
|
||||
| A.cpp:153:13:153:13 | b indirection [c] | A.cpp:153:10:153:16 | c |
|
||||
| A.cpp:153:13:153:13 | b indirection [c] | A.cpp:153:16:153:16 | c |
|
||||
| A.cpp:153:13:153:13 | b indirection [c] | A.cpp:153:16:153:16 | c |
|
||||
| A.cpp:153:16:153:16 | c | A.cpp:153:10:153:16 | c |
|
||||
| A.cpp:153:13:153:13 | b indirection [c] | A.cpp:153:16:153:16 | FieldAddress indirection |
|
||||
| A.cpp:153:16:153:16 | FieldAddress indirection | A.cpp:153:10:153:16 | c |
|
||||
| A.cpp:153:16:153:16 | FieldAddress indirection | A.cpp:153:16:153:16 | c |
|
||||
| A.cpp:154:10:154:10 | Load indirection [c] | A.cpp:154:10:154:13 | c |
|
||||
| A.cpp:154:10:154:10 | Load indirection [c] | A.cpp:154:13:154:13 | c |
|
||||
| A.cpp:154:10:154:10 | Load indirection [c] | A.cpp:154:13:154:13 | c |
|
||||
| A.cpp:154:13:154:13 | c | A.cpp:154:10:154:13 | c |
|
||||
| A.cpp:154:10:154:10 | Load indirection [c] | A.cpp:154:13:154:13 | FieldAddress indirection |
|
||||
| A.cpp:154:13:154:13 | FieldAddress indirection | A.cpp:154:10:154:13 | c |
|
||||
| A.cpp:154:13:154:13 | FieldAddress indirection | A.cpp:154:13:154:13 | c |
|
||||
| A.cpp:159:12:159:18 | new | A.cpp:160:29:160:29 | b |
|
||||
| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | l1 indirection [head] |
|
||||
| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | Load indirection [head] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead |
|
||||
| A.cpp:161:18:161:40 | call to MyList [next indirection, head] | A.cpp:162:38:162:39 | l2 indirection [next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | l1 indirection [head] | A.cpp:161:18:161:40 | call to MyList [next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | l1 indirection [head] | A.cpp:181:32:181:35 | next indirection [head] |
|
||||
| A.cpp:161:18:161:40 | call to MyList [next indirection, head] | A.cpp:162:38:162:39 | Load indirection [next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | Load indirection [head] | A.cpp:161:18:161:40 | call to MyList [next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | Load indirection [head] | A.cpp:181:32:181:35 | next indirection [head] |
|
||||
| A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] | A.cpp:165:10:165:11 | Load indirection [next indirection, next indirection, head] |
|
||||
| A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] | A.cpp:167:44:167:44 | Load indirection [next indirection, next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | l2 indirection [next indirection, head] | A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | l2 indirection [next indirection, head] | A.cpp:181:32:181:35 | next indirection [next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | Load indirection [next indirection, head] | A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | Load indirection [next indirection, head] | A.cpp:181:32:181:35 | next indirection [next indirection, head] |
|
||||
| A.cpp:165:10:165:11 | Load indirection [next indirection, next indirection, head] | A.cpp:165:14:165:17 | FieldAddress indirection [next indirection, head] |
|
||||
| A.cpp:165:10:165:11 | Load indirection [next indirection, next indirection, head] | A.cpp:165:14:165:17 | next indirection [next indirection, head] |
|
||||
| A.cpp:165:14:165:17 | FieldAddress indirection [next indirection, head] | A.cpp:165:14:165:17 | next indirection [next indirection, head] |
|
||||
@@ -131,9 +131,9 @@ edges
|
||||
| A.cpp:165:14:165:17 | next indirection [next indirection, head] | A.cpp:165:20:165:23 | next indirection [head] |
|
||||
| A.cpp:165:20:165:23 | FieldAddress indirection [head] | A.cpp:165:20:165:23 | next indirection [head] |
|
||||
| A.cpp:165:20:165:23 | next indirection [head] | A.cpp:165:10:165:29 | head |
|
||||
| A.cpp:165:20:165:23 | next indirection [head] | A.cpp:165:26:165:29 | head |
|
||||
| A.cpp:165:20:165:23 | next indirection [head] | A.cpp:165:26:165:29 | head |
|
||||
| A.cpp:165:26:165:29 | head | A.cpp:165:10:165:29 | head |
|
||||
| A.cpp:165:20:165:23 | next indirection [head] | A.cpp:165:26:165:29 | FieldAddress indirection |
|
||||
| A.cpp:165:26:165:29 | FieldAddress indirection | A.cpp:165:10:165:29 | head |
|
||||
| A.cpp:165:26:165:29 | FieldAddress indirection | A.cpp:165:26:165:29 | head |
|
||||
| A.cpp:167:44:167:44 | Load indirection [next indirection, head] | A.cpp:167:47:167:50 | FieldAddress indirection [head] |
|
||||
| A.cpp:167:44:167:44 | Load indirection [next indirection, head] | A.cpp:167:47:167:50 | next indirection [head] |
|
||||
| A.cpp:167:44:167:44 | Load indirection [next indirection, next indirection, head] | A.cpp:167:47:167:50 | FieldAddress indirection [next indirection, head] |
|
||||
@@ -143,9 +143,9 @@ edges
|
||||
| A.cpp:167:47:167:50 | next indirection [head] | A.cpp:169:12:169:12 | Load indirection [head] |
|
||||
| A.cpp:167:47:167:50 | next indirection [next indirection, head] | A.cpp:167:44:167:44 | Load indirection [next indirection, head] |
|
||||
| A.cpp:169:12:169:12 | Load indirection [head] | A.cpp:169:12:169:18 | head |
|
||||
| A.cpp:169:12:169:12 | Load indirection [head] | A.cpp:169:15:169:18 | head |
|
||||
| A.cpp:169:12:169:12 | Load indirection [head] | A.cpp:169:15:169:18 | head |
|
||||
| A.cpp:169:15:169:18 | head | A.cpp:169:12:169:18 | head |
|
||||
| A.cpp:169:12:169:12 | Load indirection [head] | A.cpp:169:15:169:18 | FieldAddress indirection |
|
||||
| A.cpp:169:15:169:18 | FieldAddress indirection | A.cpp:169:12:169:18 | head |
|
||||
| A.cpp:169:15:169:18 | FieldAddress indirection | A.cpp:169:15:169:18 | head |
|
||||
| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | Store |
|
||||
| A.cpp:181:32:181:35 | next indirection [head] | A.cpp:184:7:184:23 | Store indirection [head] |
|
||||
| A.cpp:181:32:181:35 | next indirection [next indirection, head] | A.cpp:184:7:184:23 | Store indirection [next indirection, head] |
|
||||
@@ -153,33 +153,33 @@ edges
|
||||
| A.cpp:184:7:184:23 | Store indirection [head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, head] |
|
||||
| A.cpp:184:7:184:23 | Store indirection [next indirection, head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, next indirection, head] |
|
||||
| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e |
|
||||
| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | b1 indirection [elem1] |
|
||||
| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | Load indirection [elem1] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 |
|
||||
| B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] | B.cpp:9:10:9:11 | Load indirection [box1 indirection, elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 indirection [elem1] | B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 indirection [elem1] | B.cpp:44:16:44:17 | b1 indirection [elem1] |
|
||||
| B.cpp:8:25:8:26 | Load indirection [elem1] | B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] |
|
||||
| B.cpp:8:25:8:26 | Load indirection [elem1] | B.cpp:44:16:44:17 | b1 indirection [elem1] |
|
||||
| B.cpp:9:10:9:11 | Load indirection [box1 indirection, elem1] | B.cpp:9:14:9:17 | FieldAddress indirection [elem1] |
|
||||
| B.cpp:9:10:9:11 | Load indirection [box1 indirection, elem1] | B.cpp:9:14:9:17 | box1 indirection [elem1] |
|
||||
| B.cpp:9:14:9:17 | FieldAddress indirection [elem1] | B.cpp:9:14:9:17 | box1 indirection [elem1] |
|
||||
| B.cpp:9:14:9:17 | box1 indirection [elem1] | B.cpp:9:10:9:24 | elem1 |
|
||||
| B.cpp:9:14:9:17 | box1 indirection [elem1] | B.cpp:9:20:9:24 | elem1 |
|
||||
| B.cpp:9:14:9:17 | box1 indirection [elem1] | B.cpp:9:20:9:24 | elem1 |
|
||||
| B.cpp:9:20:9:24 | elem1 | B.cpp:9:10:9:24 | elem1 |
|
||||
| B.cpp:9:14:9:17 | box1 indirection [elem1] | B.cpp:9:20:9:24 | FieldAddress indirection |
|
||||
| B.cpp:9:20:9:24 | FieldAddress indirection | B.cpp:9:10:9:24 | elem1 |
|
||||
| B.cpp:9:20:9:24 | FieldAddress indirection | B.cpp:9:20:9:24 | elem1 |
|
||||
| B.cpp:15:15:15:27 | new | B.cpp:16:37:16:37 | e |
|
||||
| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | b1 indirection [elem2] |
|
||||
| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | Load indirection [elem2] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 |
|
||||
| B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] | B.cpp:19:10:19:11 | Load indirection [box1 indirection, elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 indirection [elem2] | B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 indirection [elem2] | B.cpp:44:16:44:17 | b1 indirection [elem2] |
|
||||
| B.cpp:17:25:17:26 | Load indirection [elem2] | B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] |
|
||||
| B.cpp:17:25:17:26 | Load indirection [elem2] | B.cpp:44:16:44:17 | b1 indirection [elem2] |
|
||||
| B.cpp:19:10:19:11 | Load indirection [box1 indirection, elem2] | B.cpp:19:14:19:17 | FieldAddress indirection [elem2] |
|
||||
| B.cpp:19:10:19:11 | Load indirection [box1 indirection, elem2] | B.cpp:19:14:19:17 | box1 indirection [elem2] |
|
||||
| B.cpp:19:14:19:17 | FieldAddress indirection [elem2] | B.cpp:19:14:19:17 | box1 indirection [elem2] |
|
||||
| B.cpp:19:14:19:17 | box1 indirection [elem2] | B.cpp:19:10:19:24 | elem2 |
|
||||
| B.cpp:19:14:19:17 | box1 indirection [elem2] | B.cpp:19:20:19:24 | elem2 |
|
||||
| B.cpp:19:14:19:17 | box1 indirection [elem2] | B.cpp:19:20:19:24 | elem2 |
|
||||
| B.cpp:19:20:19:24 | elem2 | B.cpp:19:10:19:24 | elem2 |
|
||||
| B.cpp:19:14:19:17 | box1 indirection [elem2] | B.cpp:19:20:19:24 | FieldAddress indirection |
|
||||
| B.cpp:19:20:19:24 | FieldAddress indirection | B.cpp:19:10:19:24 | elem2 |
|
||||
| B.cpp:19:20:19:24 | FieldAddress indirection | B.cpp:19:20:19:24 | elem2 |
|
||||
| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | Store |
|
||||
| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | Store |
|
||||
| B.cpp:35:7:35:22 | Store | B.cpp:35:13:35:17 | Load indirection [post update] [elem1] |
|
||||
@@ -188,10 +188,10 @@ edges
|
||||
| B.cpp:44:16:44:17 | b1 indirection [elem2] | B.cpp:46:7:46:21 | Store indirection [elem2] |
|
||||
| B.cpp:46:7:46:21 | Store indirection [elem1] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem1] |
|
||||
| B.cpp:46:7:46:21 | Store indirection [elem2] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem2] |
|
||||
| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | c indirection [s1] |
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | c indirection [s3] |
|
||||
| C.cpp:19:5:19:5 | c indirection [s1] | C.cpp:27:8:27:11 | this indirection [s1] |
|
||||
| C.cpp:19:5:19:5 | c indirection [s3] | C.cpp:27:8:27:11 | this indirection [s3] |
|
||||
| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | Load indirection [s1] |
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | Load indirection [s3] |
|
||||
| C.cpp:19:5:19:5 | Load indirection [s1] | C.cpp:27:8:27:11 | this indirection [s1] |
|
||||
| C.cpp:19:5:19:5 | Load indirection [s3] | C.cpp:27:8:27:11 | this indirection [s3] |
|
||||
| C.cpp:22:9:22:22 | this indirection [post update] [s1] | C.cpp:18:12:18:18 | call to C [s1] |
|
||||
| C.cpp:22:12:22:21 | Store | C.cpp:22:9:22:22 | this indirection [post update] [s1] |
|
||||
| C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | Store |
|
||||
@@ -207,9 +207,9 @@ edges
|
||||
| C.cpp:31:10:31:11 | Load indirection [s3] | C.cpp:31:10:31:11 | FieldAddress indirection |
|
||||
| C.cpp:31:10:31:11 | Load indirection [s3] | C.cpp:31:10:31:11 | s3 |
|
||||
| D.cpp:10:11:10:17 | this indirection [elem] | D.cpp:10:30:10:33 | Load indirection [elem] |
|
||||
| D.cpp:10:30:10:33 | FieldAddress indirection | D.cpp:10:11:10:17 | VariableAddress indirection |
|
||||
| D.cpp:10:30:10:33 | Load indirection [elem] | D.cpp:10:11:10:17 | VariableAddress indirection |
|
||||
| D.cpp:10:30:10:33 | Load indirection [elem] | D.cpp:10:30:10:33 | elem |
|
||||
| D.cpp:10:30:10:33 | elem | D.cpp:10:11:10:17 | VariableAddress indirection |
|
||||
| D.cpp:10:30:10:33 | Load indirection [elem] | D.cpp:10:30:10:33 | FieldAddress indirection |
|
||||
| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | Store |
|
||||
| D.cpp:11:29:11:36 | Store | D.cpp:11:29:11:32 | Load indirection [post update] [elem] |
|
||||
| D.cpp:17:11:17:17 | this indirection [box indirection, elem] | D.cpp:17:30:17:32 | Load indirection [box indirection, elem] |
|
||||
@@ -217,39 +217,39 @@ edges
|
||||
| D.cpp:17:30:17:32 | Load indirection [box indirection, elem] | D.cpp:17:30:17:32 | FieldAddress indirection [elem] |
|
||||
| D.cpp:17:30:17:32 | Load indirection [box indirection, elem] | D.cpp:17:30:17:32 | box indirection [elem] |
|
||||
| D.cpp:17:30:17:32 | box indirection [elem] | D.cpp:17:11:17:17 | VariableAddress indirection [elem] |
|
||||
| D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] | D.cpp:22:10:22:11 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | b2 indirection [box indirection, elem] | D.cpp:17:11:17:17 | this indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | b2 indirection [box indirection, elem] | D.cpp:22:14:22:20 | call to getBox1 indirection [elem] |
|
||||
| D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] | D.cpp:22:10:22:11 | Load indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | Load indirection [box indirection, elem] | D.cpp:17:11:17:17 | this indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | Load indirection [box indirection, elem] | D.cpp:22:14:22:20 | call to getBox1 indirection [elem] |
|
||||
| D.cpp:22:14:22:20 | call to getBox1 indirection [elem] | D.cpp:10:11:10:17 | this indirection [elem] |
|
||||
| D.cpp:22:14:22:20 | call to getBox1 indirection [elem] | D.cpp:22:10:22:33 | call to getElem |
|
||||
| D.cpp:28:15:28:24 | new | D.cpp:30:5:30:20 | Store |
|
||||
| D.cpp:30:5:30:20 | Store | D.cpp:30:13:30:16 | box indirection [post update] [elem] |
|
||||
| D.cpp:30:8:30:10 | Load indirection [post update] [box indirection, elem] | D.cpp:31:14:31:14 | b indirection [box indirection, elem] |
|
||||
| D.cpp:30:8:30:10 | Load indirection [post update] [box indirection, elem] | D.cpp:31:14:31:14 | Load indirection [box indirection, elem] |
|
||||
| D.cpp:30:13:30:16 | box indirection [post update] [elem] | D.cpp:30:8:30:10 | Load indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:31:14:31:14 | b indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:31:14:31:14 | Load indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:35:15:35:24 | new | D.cpp:37:21:37:21 | e |
|
||||
| D.cpp:37:8:37:10 | Load indirection [post update] [box indirection, elem] | D.cpp:38:14:38:14 | b indirection [box indirection, elem] |
|
||||
| D.cpp:37:8:37:10 | Load indirection [post update] [box indirection, elem] | D.cpp:38:14:38:14 | Load indirection [box indirection, elem] |
|
||||
| D.cpp:37:8:37:10 | setElem output argument [elem] | D.cpp:37:8:37:10 | Load indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:37:8:37:10 | setElem output argument [elem] |
|
||||
| D.cpp:38:14:38:14 | b indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:38:14:38:14 | Load indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:42:15:42:24 | new | D.cpp:44:5:44:26 | Store |
|
||||
| D.cpp:44:5:44:5 | getBox1 output argument [box indirection, elem] | D.cpp:45:14:45:14 | b indirection [box indirection, elem] |
|
||||
| D.cpp:44:5:44:5 | getBox1 output argument [box indirection, elem] | D.cpp:45:14:45:14 | Load indirection [box indirection, elem] |
|
||||
| D.cpp:44:5:44:26 | Store | D.cpp:44:19:44:22 | call to getBox1 indirection [post update] [elem] |
|
||||
| D.cpp:44:19:44:22 | call to getBox1 indirection [post update] [elem] | D.cpp:44:5:44:5 | getBox1 output argument [box indirection, elem] |
|
||||
| D.cpp:45:14:45:14 | b indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:45:14:45:14 | Load indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:49:15:49:24 | new | D.cpp:51:27:51:27 | e |
|
||||
| D.cpp:51:5:51:5 | getBox1 output argument [box indirection, elem] | D.cpp:52:14:52:14 | b indirection [box indirection, elem] |
|
||||
| D.cpp:51:5:51:5 | getBox1 output argument [box indirection, elem] | D.cpp:52:14:52:14 | Load indirection [box indirection, elem] |
|
||||
| D.cpp:51:8:51:14 | setElem output argument [elem] | D.cpp:51:5:51:5 | getBox1 output argument [box indirection, elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:51:8:51:14 | setElem output argument [elem] |
|
||||
| D.cpp:52:14:52:14 | b indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:52:14:52:14 | Load indirection [box indirection, elem] | D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:56:15:56:24 | new | D.cpp:58:5:58:27 | Store |
|
||||
| D.cpp:58:5:58:12 | Load indirection [post update] [boxfield indirection, box indirection, elem] | D.cpp:59:5:59:7 | this indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:58:5:58:12 | Load indirection [post update] [boxfield indirection, box indirection, elem] | D.cpp:59:5:59:7 | Load indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:58:5:58:27 | Store | D.cpp:58:20:58:23 | box indirection [post update] [elem] |
|
||||
| D.cpp:58:15:58:17 | boxfield indirection [post update] [box indirection, elem] | D.cpp:58:5:58:12 | Load indirection [post update] [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:58:20:58:23 | box indirection [post update] [elem] | D.cpp:58:15:58:17 | boxfield indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:59:5:59:7 | this indirection [boxfield indirection, box indirection, elem] | D.cpp:63:8:63:10 | this indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:59:5:59:7 | Load indirection [boxfield indirection, box indirection, elem] | D.cpp:63:8:63:10 | this indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:63:8:63:10 | this indirection [boxfield indirection, box indirection, elem] | D.cpp:64:10:64:17 | Load indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:64:10:64:17 | FieldAddress indirection [box indirection, elem] | D.cpp:64:10:64:17 | boxfield indirection [box indirection, elem] |
|
||||
| D.cpp:64:10:64:17 | Load indirection [boxfield indirection, box indirection, elem] | D.cpp:64:10:64:17 | FieldAddress indirection [box indirection, elem] |
|
||||
@@ -258,9 +258,9 @@ edges
|
||||
| D.cpp:64:10:64:17 | boxfield indirection [box indirection, elem] | D.cpp:64:20:64:22 | box indirection [elem] |
|
||||
| D.cpp:64:20:64:22 | FieldAddress indirection [elem] | D.cpp:64:20:64:22 | box indirection [elem] |
|
||||
| D.cpp:64:20:64:22 | box indirection [elem] | D.cpp:64:10:64:28 | elem |
|
||||
| D.cpp:64:20:64:22 | box indirection [elem] | D.cpp:64:25:64:28 | elem |
|
||||
| D.cpp:64:20:64:22 | box indirection [elem] | D.cpp:64:25:64:28 | elem |
|
||||
| D.cpp:64:25:64:28 | elem | D.cpp:64:10:64:28 | elem |
|
||||
| D.cpp:64:20:64:22 | box indirection [elem] | D.cpp:64:25:64:28 | FieldAddress indirection |
|
||||
| D.cpp:64:25:64:28 | FieldAddress indirection | D.cpp:64:10:64:28 | elem |
|
||||
| D.cpp:64:25:64:28 | FieldAddress indirection | D.cpp:64:25:64:28 | elem |
|
||||
| E.cpp:19:27:19:27 | p indirection [data, buffer indirection] | E.cpp:21:10:21:10 | Load indirection [data, buffer indirection] |
|
||||
| E.cpp:21:10:21:10 | Load indirection [data, buffer indirection] | E.cpp:21:13:21:16 | data indirection [buffer indirection] |
|
||||
| E.cpp:21:13:21:16 | data indirection [buffer indirection] | E.cpp:21:18:21:23 | FieldAddress indirection |
|
||||
@@ -440,33 +440,33 @@ edges
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:31:46:31:46 | s indirection [a] | by_reference.cpp:32:12:32:12 | Load indirection [a] |
|
||||
| by_reference.cpp:32:12:32:12 | Load indirection [a] | by_reference.cpp:31:16:31:28 | VariableAddress indirection |
|
||||
| by_reference.cpp:32:12:32:12 | Load indirection [a] | by_reference.cpp:32:15:32:15 | a |
|
||||
| by_reference.cpp:32:15:32:15 | a | by_reference.cpp:31:16:31:28 | VariableAddress indirection |
|
||||
| by_reference.cpp:32:12:32:12 | Load indirection [a] | by_reference.cpp:32:15:32:15 | FieldAddress indirection |
|
||||
| by_reference.cpp:32:15:32:15 | FieldAddress indirection | by_reference.cpp:31:16:31:28 | VariableAddress indirection |
|
||||
| by_reference.cpp:35:9:35:19 | this indirection [a] | by_reference.cpp:36:12:36:15 | Load indirection [a] |
|
||||
| by_reference.cpp:36:12:36:15 | Load indirection [a] | by_reference.cpp:35:9:35:19 | VariableAddress indirection |
|
||||
| by_reference.cpp:36:12:36:15 | Load indirection [a] | by_reference.cpp:36:18:36:18 | a |
|
||||
| by_reference.cpp:36:18:36:18 | a | by_reference.cpp:35:9:35:19 | VariableAddress indirection |
|
||||
| by_reference.cpp:39:9:39:21 | this indirection [a] | by_reference.cpp:40:12:40:15 | this indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | this indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | this indirection [a] | by_reference.cpp:39:9:39:21 | VariableAddress indirection |
|
||||
| by_reference.cpp:43:9:43:27 | this indirection [a] | by_reference.cpp:44:26:44:29 | this indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | this indirection [a] | by_reference.cpp:31:46:31:46 | s indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | this indirection [a] | by_reference.cpp:43:9:43:27 | VariableAddress indirection |
|
||||
| by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | by_reference.cpp:51:8:51:8 | s indirection [a] |
|
||||
| by_reference.cpp:36:12:36:15 | Load indirection [a] | by_reference.cpp:36:18:36:18 | FieldAddress indirection |
|
||||
| by_reference.cpp:36:18:36:18 | FieldAddress indirection | by_reference.cpp:35:9:35:19 | VariableAddress indirection |
|
||||
| by_reference.cpp:39:9:39:21 | this indirection [a] | by_reference.cpp:40:12:40:15 | Load indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | Load indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | Load indirection [a] | by_reference.cpp:39:9:39:21 | VariableAddress indirection |
|
||||
| by_reference.cpp:43:9:43:27 | this indirection [a] | by_reference.cpp:44:26:44:29 | Load indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | Load indirection [a] | by_reference.cpp:31:46:31:46 | s indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | Load indirection [a] | by_reference.cpp:43:9:43:27 | VariableAddress indirection |
|
||||
| by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | by_reference.cpp:51:8:51:8 | Convert indirection [a] |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:51:8:51:8 | s indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] |
|
||||
| by_reference.cpp:51:8:51:8 | s indirection [a] | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | by_reference.cpp:57:8:57:8 | s indirection [a] |
|
||||
| by_reference.cpp:51:8:51:8 | Convert indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] |
|
||||
| by_reference.cpp:51:8:51:8 | Convert indirection [a] | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | by_reference.cpp:57:8:57:8 | Convert indirection [a] |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] |
|
||||
| by_reference.cpp:57:8:57:8 | s indirection [a] | by_reference.cpp:39:9:39:21 | this indirection [a] |
|
||||
| by_reference.cpp:57:8:57:8 | s indirection [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | by_reference.cpp:63:8:63:8 | s indirection [a] |
|
||||
| by_reference.cpp:57:8:57:8 | Convert indirection [a] | by_reference.cpp:39:9:39:21 | this indirection [a] |
|
||||
| by_reference.cpp:57:8:57:8 | Convert indirection [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | by_reference.cpp:63:8:63:8 | Convert indirection [a] |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] |
|
||||
| by_reference.cpp:63:8:63:8 | s indirection [a] | by_reference.cpp:43:9:43:27 | this indirection [a] |
|
||||
| by_reference.cpp:63:8:63:8 | s indirection [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:63:8:63:8 | Convert indirection [a] | by_reference.cpp:43:9:43:27 | this indirection [a] |
|
||||
| by_reference.cpp:63:8:63:8 | Convert indirection [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | by_reference.cpp:69:22:69:23 | & ... indirection [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] |
|
||||
@@ -567,13 +567,13 @@ edges
|
||||
| by_reference.cpp:136:8:136:13 | Load indirection [a] | by_reference.cpp:136:16:136:16 | a |
|
||||
| by_reference.cpp:136:16:136:16 | FieldAddress indirection | by_reference.cpp:136:16:136:16 | a |
|
||||
| complex.cpp:9:7:9:7 | this indirection [a_] | complex.cpp:9:20:9:21 | Load indirection [a_] |
|
||||
| complex.cpp:9:20:9:21 | FieldAddress indirection | complex.cpp:9:7:9:7 | VariableAddress indirection |
|
||||
| complex.cpp:9:20:9:21 | Load indirection [a_] | complex.cpp:9:7:9:7 | VariableAddress indirection |
|
||||
| complex.cpp:9:20:9:21 | Load indirection [a_] | complex.cpp:9:20:9:21 | a_ |
|
||||
| complex.cpp:9:20:9:21 | a_ | complex.cpp:9:7:9:7 | VariableAddress indirection |
|
||||
| complex.cpp:9:20:9:21 | Load indirection [a_] | complex.cpp:9:20:9:21 | FieldAddress indirection |
|
||||
| complex.cpp:10:7:10:7 | this indirection [b_] | complex.cpp:10:20:10:21 | Load indirection [b_] |
|
||||
| complex.cpp:10:20:10:21 | FieldAddress indirection | complex.cpp:10:7:10:7 | VariableAddress indirection |
|
||||
| complex.cpp:10:20:10:21 | Load indirection [b_] | complex.cpp:10:7:10:7 | VariableAddress indirection |
|
||||
| complex.cpp:10:20:10:21 | Load indirection [b_] | complex.cpp:10:20:10:21 | b_ |
|
||||
| complex.cpp:10:20:10:21 | b_ | complex.cpp:10:7:10:7 | VariableAddress indirection |
|
||||
| complex.cpp:10:20:10:21 | Load indirection [b_] | complex.cpp:10:20:10:21 | FieldAddress indirection |
|
||||
| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | Store |
|
||||
| complex.cpp:11:22:11:27 | Store | complex.cpp:11:22:11:23 | Load indirection [post update] [a_] |
|
||||
| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | Store |
|
||||
@@ -588,7 +588,7 @@ edges
|
||||
| complex.cpp:43:10:43:14 | inner indirection [f, b_] | complex.cpp:43:16:43:16 | f indirection [b_] |
|
||||
| complex.cpp:43:16:43:16 | f indirection [b_] | complex.cpp:10:7:10:7 | this indirection [b_] |
|
||||
| complex.cpp:43:16:43:16 | f indirection [b_] | complex.cpp:43:18:43:18 | call to b |
|
||||
| complex.cpp:53:6:53:10 | b1 indirection [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | b1 indirection [inner, f, a_] |
|
||||
| complex.cpp:53:6:53:10 | b1 indirection [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | CopyValue indirection [inner, f, a_] |
|
||||
| complex.cpp:53:12:53:12 | inner indirection [post update] [f, a_] | complex.cpp:53:6:53:10 | b1 indirection [post update] [inner, f, a_] |
|
||||
| complex.cpp:53:12:53:12 | inner indirection [post update] [f, a_] | complex.cpp:53:6:53:10 | b1 indirection [post update] [inner, f, a_] |
|
||||
| complex.cpp:53:12:53:12 | inner indirection [post update] [f, a_] | complex.cpp:53:6:53:10 | b1 indirection [post update] [inner, f, a_] |
|
||||
@@ -597,7 +597,7 @@ edges
|
||||
| complex.cpp:53:12:53:12 | setA output argument [a_] | complex.cpp:53:12:53:12 | inner indirection [post update] [f, a_] |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:53:12:53:12 | setA output argument [a_] |
|
||||
| complex.cpp:54:6:54:10 | b2 indirection [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | b2 indirection [inner, f, b_] |
|
||||
| complex.cpp:54:6:54:10 | b2 indirection [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | CopyValue indirection [inner, f, b_] |
|
||||
| complex.cpp:54:12:54:12 | inner indirection [post update] [f, b_] | complex.cpp:54:6:54:10 | b2 indirection [post update] [inner, f, b_] |
|
||||
| complex.cpp:54:12:54:12 | inner indirection [post update] [f, b_] | complex.cpp:54:6:54:10 | b2 indirection [post update] [inner, f, b_] |
|
||||
| complex.cpp:54:12:54:12 | inner indirection [post update] [f, b_] | complex.cpp:54:6:54:10 | b2 indirection [post update] [inner, f, b_] |
|
||||
@@ -606,7 +606,7 @@ edges
|
||||
| complex.cpp:54:12:54:12 | setB output argument [b_] | complex.cpp:54:12:54:12 | inner indirection [post update] [f, b_] |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:54:12:54:12 | setB output argument [b_] |
|
||||
| complex.cpp:55:6:55:10 | b3 indirection [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | b3 indirection [inner, f, a_] |
|
||||
| complex.cpp:55:6:55:10 | b3 indirection [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, a_] |
|
||||
| complex.cpp:55:12:55:12 | inner indirection [post update] [f, a_] | complex.cpp:55:6:55:10 | b3 indirection [post update] [inner, f, a_] |
|
||||
| complex.cpp:55:12:55:12 | inner indirection [post update] [f, a_] | complex.cpp:55:6:55:10 | b3 indirection [post update] [inner, f, a_] |
|
||||
| complex.cpp:55:12:55:12 | inner indirection [post update] [f, a_] | complex.cpp:55:6:55:10 | b3 indirection [post update] [inner, f, a_] |
|
||||
@@ -615,7 +615,7 @@ edges
|
||||
| complex.cpp:55:12:55:12 | setA output argument [a_] | complex.cpp:55:12:55:12 | inner indirection [post update] [f, a_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:55:12:55:12 | setA output argument [a_] |
|
||||
| complex.cpp:56:6:56:10 | b3 indirection [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | b3 indirection [inner, f, b_] |
|
||||
| complex.cpp:56:6:56:10 | b3 indirection [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, b_] |
|
||||
| complex.cpp:56:12:56:12 | inner indirection [post update] [f, b_] | complex.cpp:56:6:56:10 | b3 indirection [post update] [inner, f, b_] |
|
||||
| complex.cpp:56:12:56:12 | inner indirection [post update] [f, b_] | complex.cpp:56:6:56:10 | b3 indirection [post update] [inner, f, b_] |
|
||||
| complex.cpp:56:12:56:12 | inner indirection [post update] [f, b_] | complex.cpp:56:6:56:10 | b3 indirection [post update] [inner, f, b_] |
|
||||
@@ -624,10 +624,10 @@ edges
|
||||
| complex.cpp:56:12:56:12 | setB output argument [b_] | complex.cpp:56:12:56:12 | inner indirection [post update] [f, b_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:56:12:56:12 | setB output argument [b_] |
|
||||
| complex.cpp:59:7:59:8 | b1 indirection [inner, f, a_] | complex.cpp:40:17:40:17 | b indirection [inner, f, a_] |
|
||||
| complex.cpp:62:7:62:8 | b2 indirection [inner, f, b_] | complex.cpp:40:17:40:17 | b indirection [inner, f, b_] |
|
||||
| complex.cpp:65:7:65:8 | b3 indirection [inner, f, a_] | complex.cpp:40:17:40:17 | b indirection [inner, f, a_] |
|
||||
| complex.cpp:65:7:65:8 | b3 indirection [inner, f, b_] | complex.cpp:40:17:40:17 | b indirection [inner, f, b_] |
|
||||
| complex.cpp:59:7:59:8 | CopyValue indirection [inner, f, a_] | complex.cpp:40:17:40:17 | b indirection [inner, f, a_] |
|
||||
| complex.cpp:62:7:62:8 | CopyValue indirection [inner, f, b_] | complex.cpp:40:17:40:17 | b indirection [inner, f, b_] |
|
||||
| complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, a_] | complex.cpp:40:17:40:17 | b indirection [inner, f, a_] |
|
||||
| complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, b_] | complex.cpp:40:17:40:17 | b indirection [inner, f, b_] |
|
||||
| conflated.cpp:10:3:10:22 | Store | conflated.cpp:10:7:10:7 | (reference dereference) indirection [post update] [p indirection] |
|
||||
| conflated.cpp:10:7:10:7 | (reference dereference) indirection [post update] [p indirection] | conflated.cpp:11:9:11:10 | (reference dereference) indirection [p indirection] |
|
||||
| conflated.cpp:10:11:10:20 | call to user_input | conflated.cpp:10:3:10:22 | Store |
|
||||
@@ -671,39 +671,39 @@ edges
|
||||
| conflated.cpp:61:12:61:15 | next indirection [y] | conflated.cpp:61:18:61:18 | y |
|
||||
| conflated.cpp:61:18:61:18 | FieldAddress indirection | conflated.cpp:61:18:61:18 | y |
|
||||
| constructors.cpp:18:9:18:9 | this indirection [a_] | constructors.cpp:18:22:18:23 | Load indirection [a_] |
|
||||
| constructors.cpp:18:22:18:23 | FieldAddress indirection | constructors.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| constructors.cpp:18:22:18:23 | Load indirection [a_] | constructors.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| constructors.cpp:18:22:18:23 | Load indirection [a_] | constructors.cpp:18:22:18:23 | a_ |
|
||||
| constructors.cpp:18:22:18:23 | a_ | constructors.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| constructors.cpp:18:22:18:23 | Load indirection [a_] | constructors.cpp:18:22:18:23 | FieldAddress indirection |
|
||||
| constructors.cpp:19:9:19:9 | this indirection [b_] | constructors.cpp:19:22:19:23 | Load indirection [b_] |
|
||||
| constructors.cpp:19:22:19:23 | FieldAddress indirection | constructors.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| constructors.cpp:19:22:19:23 | Load indirection [b_] | constructors.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| constructors.cpp:19:22:19:23 | Load indirection [b_] | constructors.cpp:19:22:19:23 | b_ |
|
||||
| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| constructors.cpp:19:22:19:23 | Load indirection [b_] | constructors.cpp:19:22:19:23 | FieldAddress indirection |
|
||||
| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | Store |
|
||||
| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | Store |
|
||||
| constructors.cpp:23:28:23:28 | Store | constructors.cpp:23:25:23:29 | this indirection [post update] [a_] |
|
||||
| constructors.cpp:23:35:23:35 | Store | constructors.cpp:23:32:23:36 | this indirection [post update] [b_] |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [a_] | constructors.cpp:28:10:28:10 | f indirection [a_] |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [b_] | constructors.cpp:29:10:29:10 | f indirection [b_] |
|
||||
| constructors.cpp:28:10:28:10 | f indirection [a_] | constructors.cpp:18:9:18:9 | this indirection [a_] |
|
||||
| constructors.cpp:28:10:28:10 | f indirection [a_] | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | f indirection [b_] | constructors.cpp:19:9:19:9 | this indirection [b_] |
|
||||
| constructors.cpp:29:10:29:10 | f indirection [b_] | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:34:9:34:9 | call to Foo [a_] | constructors.cpp:40:9:40:9 | f indirection [a_] |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [a_] | constructors.cpp:28:10:28:10 | CopyValue indirection [a_] |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [b_] | constructors.cpp:29:10:29:10 | CopyValue indirection [b_] |
|
||||
| constructors.cpp:28:10:28:10 | CopyValue indirection [a_] | constructors.cpp:18:9:18:9 | this indirection [a_] |
|
||||
| constructors.cpp:28:10:28:10 | CopyValue indirection [a_] | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | CopyValue indirection [b_] | constructors.cpp:19:9:19:9 | this indirection [b_] |
|
||||
| constructors.cpp:29:10:29:10 | CopyValue indirection [b_] | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:34:9:34:9 | call to Foo [a_] | constructors.cpp:40:9:40:9 | CopyValue indirection [a_] |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:34:9:34:9 | call to Foo [a_] |
|
||||
| constructors.cpp:35:9:35:9 | call to Foo [b_] | constructors.cpp:43:9:43:9 | g indirection [b_] |
|
||||
| constructors.cpp:35:9:35:9 | call to Foo [b_] | constructors.cpp:43:9:43:9 | CopyValue indirection [b_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:35:9:35:9 | call to Foo [b_] |
|
||||
| constructors.cpp:36:9:36:9 | call to Foo [a_] | constructors.cpp:46:9:46:9 | h indirection [a_] |
|
||||
| constructors.cpp:36:9:36:9 | call to Foo [b_] | constructors.cpp:46:9:46:9 | h indirection [b_] |
|
||||
| constructors.cpp:36:9:36:9 | call to Foo [a_] | constructors.cpp:46:9:46:9 | CopyValue indirection [a_] |
|
||||
| constructors.cpp:36:9:36:9 | call to Foo [b_] | constructors.cpp:46:9:46:9 | CopyValue indirection [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [a_] |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [b_] |
|
||||
| constructors.cpp:40:9:40:9 | f indirection [a_] | constructors.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| constructors.cpp:43:9:43:9 | g indirection [b_] | constructors.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| constructors.cpp:46:9:46:9 | h indirection [a_] | constructors.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| constructors.cpp:46:9:46:9 | h indirection [b_] | constructors.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| constructors.cpp:40:9:40:9 | CopyValue indirection [a_] | constructors.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| constructors.cpp:43:9:43:9 | CopyValue indirection [b_] | constructors.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| constructors.cpp:46:9:46:9 | CopyValue indirection [a_] | constructors.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| constructors.cpp:46:9:46:9 | CopyValue indirection [b_] | constructors.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | Store |
|
||||
| qualifiers.cpp:9:30:9:44 | Store | qualifiers.cpp:9:36:9:36 | Load indirection [post update] [a] |
|
||||
| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | Store |
|
||||
@@ -783,43 +783,43 @@ edges
|
||||
| realistic.cpp:61:32:61:34 | FieldAddress indirection [userInput, bufferLen] | realistic.cpp:61:32:61:34 | baz indirection [userInput, bufferLen] |
|
||||
| realistic.cpp:61:32:61:34 | baz indirection [userInput, bufferLen] | realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] |
|
||||
| realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] | realistic.cpp:61:14:61:55 | bufferLen |
|
||||
| realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen |
|
||||
| realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen |
|
||||
| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:61:14:61:55 | bufferLen |
|
||||
| realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] | realistic.cpp:61:47:61:55 | FieldAddress indirection |
|
||||
| realistic.cpp:61:47:61:55 | FieldAddress indirection | realistic.cpp:61:14:61:55 | bufferLen |
|
||||
| realistic.cpp:61:47:61:55 | FieldAddress indirection | realistic.cpp:61:47:61:55 | bufferLen |
|
||||
| simple.cpp:18:9:18:9 | this indirection [a_] | simple.cpp:18:22:18:23 | Load indirection [a_] |
|
||||
| simple.cpp:18:22:18:23 | FieldAddress indirection | simple.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| simple.cpp:18:22:18:23 | Load indirection [a_] | simple.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| simple.cpp:18:22:18:23 | Load indirection [a_] | simple.cpp:18:22:18:23 | a_ |
|
||||
| simple.cpp:18:22:18:23 | a_ | simple.cpp:18:9:18:9 | VariableAddress indirection |
|
||||
| simple.cpp:18:22:18:23 | Load indirection [a_] | simple.cpp:18:22:18:23 | FieldAddress indirection |
|
||||
| simple.cpp:19:9:19:9 | this indirection [b_] | simple.cpp:19:22:19:23 | Load indirection [b_] |
|
||||
| simple.cpp:19:22:19:23 | FieldAddress indirection | simple.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| simple.cpp:19:22:19:23 | Load indirection [b_] | simple.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| simple.cpp:19:22:19:23 | Load indirection [b_] | simple.cpp:19:22:19:23 | b_ |
|
||||
| simple.cpp:19:22:19:23 | b_ | simple.cpp:19:9:19:9 | VariableAddress indirection |
|
||||
| simple.cpp:19:22:19:23 | Load indirection [b_] | simple.cpp:19:22:19:23 | FieldAddress indirection |
|
||||
| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | Store |
|
||||
| simple.cpp:20:24:20:29 | Store | simple.cpp:20:24:20:25 | Load indirection [post update] [a_] |
|
||||
| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | Store |
|
||||
| simple.cpp:21:24:21:29 | Store | simple.cpp:21:24:21:25 | Load indirection [post update] [b_] |
|
||||
| simple.cpp:26:15:26:15 | f indirection [a_] | simple.cpp:28:10:28:10 | f indirection [a_] |
|
||||
| simple.cpp:26:15:26:15 | f indirection [b_] | simple.cpp:29:10:29:10 | f indirection [b_] |
|
||||
| simple.cpp:28:10:28:10 | f indirection [a_] | simple.cpp:18:9:18:9 | this indirection [a_] |
|
||||
| simple.cpp:28:10:28:10 | f indirection [a_] | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | f indirection [b_] | simple.cpp:19:9:19:9 | this indirection [b_] |
|
||||
| simple.cpp:29:10:29:10 | f indirection [b_] | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:39:5:39:5 | setA output argument [a_] | simple.cpp:45:9:45:9 | f indirection [a_] |
|
||||
| simple.cpp:26:15:26:15 | f indirection [a_] | simple.cpp:28:10:28:10 | CopyValue indirection [a_] |
|
||||
| simple.cpp:26:15:26:15 | f indirection [b_] | simple.cpp:29:10:29:10 | CopyValue indirection [b_] |
|
||||
| simple.cpp:28:10:28:10 | CopyValue indirection [a_] | simple.cpp:18:9:18:9 | this indirection [a_] |
|
||||
| simple.cpp:28:10:28:10 | CopyValue indirection [a_] | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | CopyValue indirection [b_] | simple.cpp:19:9:19:9 | this indirection [b_] |
|
||||
| simple.cpp:29:10:29:10 | CopyValue indirection [b_] | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:39:5:39:5 | setA output argument [a_] | simple.cpp:45:9:45:9 | CopyValue indirection [a_] |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:39:5:39:5 | setA output argument [a_] |
|
||||
| simple.cpp:40:5:40:5 | setB output argument [b_] | simple.cpp:48:9:48:9 | g indirection [b_] |
|
||||
| simple.cpp:40:5:40:5 | setB output argument [b_] | simple.cpp:48:9:48:9 | CopyValue indirection [b_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:40:5:40:5 | setB output argument [b_] |
|
||||
| simple.cpp:41:5:41:5 | setA output argument [a_] | simple.cpp:51:9:51:9 | h indirection [a_] |
|
||||
| simple.cpp:41:5:41:5 | setA output argument [a_] | simple.cpp:51:9:51:9 | CopyValue indirection [a_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:41:5:41:5 | setA output argument [a_] |
|
||||
| simple.cpp:42:5:42:5 | setB output argument [b_] | simple.cpp:51:9:51:9 | h indirection [b_] |
|
||||
| simple.cpp:42:5:42:5 | setB output argument [b_] | simple.cpp:51:9:51:9 | CopyValue indirection [b_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:42:5:42:5 | setB output argument [b_] |
|
||||
| simple.cpp:45:9:45:9 | f indirection [a_] | simple.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| simple.cpp:48:9:48:9 | g indirection [b_] | simple.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| simple.cpp:51:9:51:9 | h indirection [a_] | simple.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| simple.cpp:51:9:51:9 | h indirection [b_] | simple.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| simple.cpp:45:9:45:9 | CopyValue indirection [a_] | simple.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| simple.cpp:48:9:48:9 | CopyValue indirection [b_] | simple.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| simple.cpp:51:9:51:9 | CopyValue indirection [a_] | simple.cpp:26:15:26:15 | f indirection [a_] |
|
||||
| simple.cpp:51:9:51:9 | CopyValue indirection [b_] | simple.cpp:26:15:26:15 | f indirection [b_] |
|
||||
| simple.cpp:65:5:65:22 | Store | simple.cpp:65:7:65:7 | a indirection [post update] [i] |
|
||||
| simple.cpp:65:7:65:7 | a indirection [post update] [i] | simple.cpp:67:10:67:11 | a2 indirection [i] |
|
||||
| simple.cpp:65:11:65:20 | call to user_input | simple.cpp:65:5:65:22 | Store |
|
||||
@@ -829,14 +829,14 @@ edges
|
||||
| simple.cpp:78:9:78:15 | this indirection [f2, f1] | simple.cpp:79:16:79:17 | Load indirection [f2, f1] |
|
||||
| simple.cpp:79:16:79:17 | Load indirection [f2, f1] | simple.cpp:79:16:79:17 | f2 indirection [f1] |
|
||||
| simple.cpp:79:16:79:17 | f2 indirection [f1] | simple.cpp:78:9:78:15 | VariableAddress indirection |
|
||||
| simple.cpp:79:16:79:17 | f2 indirection [f1] | simple.cpp:79:19:79:20 | f1 |
|
||||
| simple.cpp:79:19:79:20 | f1 | simple.cpp:78:9:78:15 | VariableAddress indirection |
|
||||
| simple.cpp:83:9:83:10 | Load indirection [post update] [f2, f1] | simple.cpp:84:14:84:20 | this indirection [f2, f1] |
|
||||
| simple.cpp:79:16:79:17 | f2 indirection [f1] | simple.cpp:79:19:79:20 | FieldAddress indirection |
|
||||
| simple.cpp:79:19:79:20 | FieldAddress indirection | simple.cpp:78:9:78:15 | VariableAddress indirection |
|
||||
| simple.cpp:83:9:83:10 | Load indirection [post update] [f2, f1] | simple.cpp:84:14:84:20 | Load indirection [f2, f1] |
|
||||
| simple.cpp:83:9:83:28 | Store | simple.cpp:83:12:83:13 | f2 indirection [post update] [f1] |
|
||||
| simple.cpp:83:12:83:13 | f2 indirection [post update] [f1] | simple.cpp:83:9:83:10 | Load indirection [post update] [f2, f1] |
|
||||
| simple.cpp:83:17:83:26 | call to user_input | simple.cpp:83:9:83:28 | Store |
|
||||
| simple.cpp:84:14:84:20 | this indirection [f2, f1] | simple.cpp:78:9:78:15 | this indirection [f2, f1] |
|
||||
| simple.cpp:84:14:84:20 | this indirection [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
| simple.cpp:84:14:84:20 | Load indirection [f2, f1] | simple.cpp:78:9:78:15 | this indirection [f2, f1] |
|
||||
| simple.cpp:84:14:84:20 | Load indirection [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
| simple.cpp:92:5:92:22 | Store | simple.cpp:92:7:92:7 | a indirection [post update] [i] |
|
||||
| simple.cpp:92:7:92:7 | a indirection [post update] [i] | simple.cpp:94:10:94:11 | a2 indirection [i] |
|
||||
| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | Store |
|
||||
@@ -897,7 +897,7 @@ nodes
|
||||
| A.cpp:28:8:28:10 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| A.cpp:28:8:28:10 | this indirection [c] | semmle.label | this indirection [c] |
|
||||
| A.cpp:28:23:28:26 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:28:29:28:29 | c | semmle.label | c |
|
||||
| A.cpp:28:29:28:29 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:29:15:29:18 | VariableAddress indirection [c] | semmle.label | VariableAddress indirection [c] |
|
||||
| A.cpp:29:23:29:23 | c | semmle.label | c |
|
||||
| A.cpp:31:14:31:21 | call to B [c] | semmle.label | call to B [c] |
|
||||
@@ -911,12 +911,12 @@ nodes
|
||||
| A.cpp:48:20:48:20 | c | semmle.label | c |
|
||||
| A.cpp:49:10:49:10 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:49:10:49:13 | c | semmle.label | c |
|
||||
| A.cpp:49:13:49:13 | c | semmle.label | c |
|
||||
| A.cpp:49:13:49:13 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:49:13:49:13 | c | semmle.label | c |
|
||||
| A.cpp:55:5:55:5 | set output argument [c] | semmle.label | set output argument [c] |
|
||||
| A.cpp:55:12:55:19 | new | semmle.label | new |
|
||||
| A.cpp:55:12:55:19 | new | semmle.label | new |
|
||||
| A.cpp:56:10:56:10 | b indirection [c] | semmle.label | b indirection [c] |
|
||||
| A.cpp:56:10:56:10 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:56:10:56:17 | call to get | semmle.label | call to get |
|
||||
| A.cpp:57:10:57:32 | call to get | semmle.label | call to get |
|
||||
| A.cpp:57:11:57:24 | call to B [c] | semmle.label | call to B [c] |
|
||||
@@ -927,14 +927,14 @@ nodes
|
||||
| A.cpp:64:21:64:28 | new | semmle.label | new |
|
||||
| A.cpp:66:10:66:11 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:66:10:66:14 | c | semmle.label | c |
|
||||
| A.cpp:66:14:66:14 | c | semmle.label | c |
|
||||
| A.cpp:66:14:66:14 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:66:14:66:14 | c | semmle.label | c |
|
||||
| A.cpp:73:10:73:19 | call to setOnBWrap indirection [c] | semmle.label | call to setOnBWrap indirection [c] |
|
||||
| A.cpp:73:25:73:32 | new | semmle.label | new |
|
||||
| A.cpp:73:25:73:32 | new | semmle.label | new |
|
||||
| A.cpp:75:10:75:11 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:75:10:75:14 | c | semmle.label | c |
|
||||
| A.cpp:75:14:75:14 | c | semmle.label | c |
|
||||
| A.cpp:75:14:75:14 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:75:14:75:14 | c | semmle.label | c |
|
||||
| A.cpp:78:6:78:15 | VariableAddress indirection [c] | semmle.label | VariableAddress indirection [c] |
|
||||
| A.cpp:78:27:78:27 | c | semmle.label | c |
|
||||
@@ -947,22 +947,22 @@ nodes
|
||||
| A.cpp:98:12:98:18 | new | semmle.label | new |
|
||||
| A.cpp:100:5:100:13 | Store | semmle.label | Store |
|
||||
| A.cpp:100:9:100:9 | Load indirection [post update] [a] | semmle.label | Load indirection [post update] [a] |
|
||||
| A.cpp:101:8:101:9 | c1 indirection [a] | semmle.label | c1 indirection [a] |
|
||||
| A.cpp:101:8:101:9 | ConvertToNonVirtualBase indirection [a] | semmle.label | ConvertToNonVirtualBase indirection [a] |
|
||||
| A.cpp:103:14:103:14 | c indirection [a] | semmle.label | c indirection [a] |
|
||||
| A.cpp:107:12:107:13 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| A.cpp:107:12:107:16 | a | semmle.label | a |
|
||||
| A.cpp:107:16:107:16 | a | semmle.label | a |
|
||||
| A.cpp:107:16:107:16 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:107:16:107:16 | a | semmle.label | a |
|
||||
| A.cpp:120:12:120:13 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| A.cpp:120:12:120:16 | a | semmle.label | a |
|
||||
| A.cpp:120:16:120:16 | a | semmle.label | a |
|
||||
| A.cpp:120:16:120:16 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:120:16:120:16 | a | semmle.label | a |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | semmle.label | set output argument [c] |
|
||||
| A.cpp:126:12:126:18 | new | semmle.label | new |
|
||||
| A.cpp:131:8:131:8 | f7 output argument [c] | semmle.label | f7 output argument [c] |
|
||||
| A.cpp:132:10:132:10 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:132:10:132:13 | c | semmle.label | c |
|
||||
| A.cpp:132:13:132:13 | c | semmle.label | c |
|
||||
| A.cpp:132:13:132:13 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:132:13:132:13 | c | semmle.label | c |
|
||||
| A.cpp:140:13:140:13 | b | semmle.label | b |
|
||||
| A.cpp:142:7:142:20 | Store | semmle.label | Store |
|
||||
@@ -982,32 +982,32 @@ nodes
|
||||
| A.cpp:151:18:151:18 | b | semmle.label | b |
|
||||
| A.cpp:152:10:152:10 | Load indirection [b] | semmle.label | Load indirection [b] |
|
||||
| A.cpp:152:10:152:13 | b | semmle.label | b |
|
||||
| A.cpp:152:13:152:13 | b | semmle.label | b |
|
||||
| A.cpp:152:13:152:13 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:152:13:152:13 | b | semmle.label | b |
|
||||
| A.cpp:153:10:153:10 | Load indirection [b indirection, c] | semmle.label | Load indirection [b indirection, c] |
|
||||
| A.cpp:153:10:153:16 | c | semmle.label | c |
|
||||
| A.cpp:153:13:153:13 | FieldAddress indirection [c] | semmle.label | FieldAddress indirection [c] |
|
||||
| A.cpp:153:13:153:13 | b indirection [c] | semmle.label | b indirection [c] |
|
||||
| A.cpp:153:16:153:16 | c | semmle.label | c |
|
||||
| A.cpp:153:16:153:16 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:153:16:153:16 | c | semmle.label | c |
|
||||
| A.cpp:154:10:154:10 | Load indirection [c] | semmle.label | Load indirection [c] |
|
||||
| A.cpp:154:10:154:13 | c | semmle.label | c |
|
||||
| A.cpp:154:13:154:13 | c | semmle.label | c |
|
||||
| A.cpp:154:13:154:13 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:154:13:154:13 | c | semmle.label | c |
|
||||
| A.cpp:159:12:159:18 | new | semmle.label | new |
|
||||
| A.cpp:160:18:160:60 | call to MyList [head] | semmle.label | call to MyList [head] |
|
||||
| A.cpp:160:29:160:29 | b | semmle.label | b |
|
||||
| A.cpp:161:18:161:40 | call to MyList [next indirection, head] | semmle.label | call to MyList [next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | l1 indirection [head] | semmle.label | l1 indirection [head] |
|
||||
| A.cpp:161:38:161:39 | Load indirection [head] | semmle.label | Load indirection [head] |
|
||||
| A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] | semmle.label | call to MyList [next indirection, next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | l2 indirection [next indirection, head] | semmle.label | l2 indirection [next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | Load indirection [next indirection, head] | semmle.label | Load indirection [next indirection, head] |
|
||||
| A.cpp:165:10:165:11 | Load indirection [next indirection, next indirection, head] | semmle.label | Load indirection [next indirection, next indirection, head] |
|
||||
| A.cpp:165:10:165:29 | head | semmle.label | head |
|
||||
| A.cpp:165:14:165:17 | FieldAddress indirection [next indirection, head] | semmle.label | FieldAddress indirection [next indirection, head] |
|
||||
| A.cpp:165:14:165:17 | next indirection [next indirection, head] | semmle.label | next indirection [next indirection, head] |
|
||||
| A.cpp:165:20:165:23 | FieldAddress indirection [head] | semmle.label | FieldAddress indirection [head] |
|
||||
| A.cpp:165:20:165:23 | next indirection [head] | semmle.label | next indirection [head] |
|
||||
| A.cpp:165:26:165:29 | head | semmle.label | head |
|
||||
| A.cpp:165:26:165:29 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:165:26:165:29 | head | semmle.label | head |
|
||||
| A.cpp:167:44:167:44 | Load indirection [next indirection, head] | semmle.label | Load indirection [next indirection, head] |
|
||||
| A.cpp:167:44:167:44 | Load indirection [next indirection, next indirection, head] | semmle.label | Load indirection [next indirection, next indirection, head] |
|
||||
@@ -1017,7 +1017,7 @@ nodes
|
||||
| A.cpp:167:47:167:50 | next indirection [next indirection, head] | semmle.label | next indirection [next indirection, head] |
|
||||
| A.cpp:169:12:169:12 | Load indirection [head] | semmle.label | Load indirection [head] |
|
||||
| A.cpp:169:12:169:18 | head | semmle.label | head |
|
||||
| A.cpp:169:15:169:18 | head | semmle.label | head |
|
||||
| A.cpp:169:15:169:18 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| A.cpp:169:15:169:18 | head | semmle.label | head |
|
||||
| A.cpp:181:15:181:21 | newHead | semmle.label | newHead |
|
||||
| A.cpp:181:32:181:35 | next indirection [head] | semmle.label | next indirection [head] |
|
||||
@@ -1032,23 +1032,23 @@ nodes
|
||||
| B.cpp:7:16:7:35 | call to Box1 [elem1] | semmle.label | call to Box1 [elem1] |
|
||||
| B.cpp:7:25:7:25 | e | semmle.label | e |
|
||||
| B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] | semmle.label | call to Box2 [box1 indirection, elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 indirection [elem1] | semmle.label | b1 indirection [elem1] |
|
||||
| B.cpp:8:25:8:26 | Load indirection [elem1] | semmle.label | Load indirection [elem1] |
|
||||
| B.cpp:9:10:9:11 | Load indirection [box1 indirection, elem1] | semmle.label | Load indirection [box1 indirection, elem1] |
|
||||
| B.cpp:9:10:9:24 | elem1 | semmle.label | elem1 |
|
||||
| B.cpp:9:14:9:17 | FieldAddress indirection [elem1] | semmle.label | FieldAddress indirection [elem1] |
|
||||
| B.cpp:9:14:9:17 | box1 indirection [elem1] | semmle.label | box1 indirection [elem1] |
|
||||
| B.cpp:9:20:9:24 | elem1 | semmle.label | elem1 |
|
||||
| B.cpp:9:20:9:24 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| B.cpp:9:20:9:24 | elem1 | semmle.label | elem1 |
|
||||
| B.cpp:15:15:15:27 | new | semmle.label | new |
|
||||
| B.cpp:16:16:16:38 | call to Box1 [elem2] | semmle.label | call to Box1 [elem2] |
|
||||
| B.cpp:16:37:16:37 | e | semmle.label | e |
|
||||
| B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] | semmle.label | call to Box2 [box1 indirection, elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 indirection [elem2] | semmle.label | b1 indirection [elem2] |
|
||||
| B.cpp:17:25:17:26 | Load indirection [elem2] | semmle.label | Load indirection [elem2] |
|
||||
| B.cpp:19:10:19:11 | Load indirection [box1 indirection, elem2] | semmle.label | Load indirection [box1 indirection, elem2] |
|
||||
| B.cpp:19:10:19:24 | elem2 | semmle.label | elem2 |
|
||||
| B.cpp:19:14:19:17 | FieldAddress indirection [elem2] | semmle.label | FieldAddress indirection [elem2] |
|
||||
| B.cpp:19:14:19:17 | box1 indirection [elem2] | semmle.label | box1 indirection [elem2] |
|
||||
| B.cpp:19:20:19:24 | elem2 | semmle.label | elem2 |
|
||||
| B.cpp:19:20:19:24 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| B.cpp:19:20:19:24 | elem2 | semmle.label | elem2 |
|
||||
| B.cpp:33:16:33:17 | e1 | semmle.label | e1 |
|
||||
| B.cpp:33:26:33:27 | e2 | semmle.label | e2 |
|
||||
@@ -1064,8 +1064,8 @@ nodes
|
||||
| B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem2] | semmle.label | Load indirection [post update] [box1 indirection, elem2] |
|
||||
| C.cpp:18:12:18:18 | call to C [s1] | semmle.label | call to C [s1] |
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | semmle.label | call to C [s3] |
|
||||
| C.cpp:19:5:19:5 | c indirection [s1] | semmle.label | c indirection [s1] |
|
||||
| C.cpp:19:5:19:5 | c indirection [s3] | semmle.label | c indirection [s3] |
|
||||
| C.cpp:19:5:19:5 | Load indirection [s1] | semmle.label | Load indirection [s1] |
|
||||
| C.cpp:19:5:19:5 | Load indirection [s3] | semmle.label | Load indirection [s3] |
|
||||
| C.cpp:22:9:22:22 | this indirection [post update] [s1] | semmle.label | this indirection [post update] [s1] |
|
||||
| C.cpp:22:12:22:21 | Store | semmle.label | Store |
|
||||
| C.cpp:22:12:22:21 | new | semmle.label | new |
|
||||
@@ -1082,8 +1082,8 @@ nodes
|
||||
| C.cpp:31:10:31:11 | s3 | semmle.label | s3 |
|
||||
| D.cpp:10:11:10:17 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| D.cpp:10:11:10:17 | this indirection [elem] | semmle.label | this indirection [elem] |
|
||||
| D.cpp:10:30:10:33 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| D.cpp:10:30:10:33 | Load indirection [elem] | semmle.label | Load indirection [elem] |
|
||||
| D.cpp:10:30:10:33 | elem | semmle.label | elem |
|
||||
| D.cpp:11:24:11:24 | e | semmle.label | e |
|
||||
| D.cpp:11:29:11:32 | Load indirection [post update] [elem] | semmle.label | Load indirection [post update] [elem] |
|
||||
| D.cpp:11:29:11:36 | Store | semmle.label | Store |
|
||||
@@ -1093,35 +1093,35 @@ nodes
|
||||
| D.cpp:17:30:17:32 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:17:30:17:32 | box indirection [elem] | semmle.label | box indirection [elem] |
|
||||
| D.cpp:21:30:21:31 | b2 indirection [box indirection, elem] | semmle.label | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | b2 indirection [box indirection, elem] | semmle.label | b2 indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:11 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:22:10:22:33 | call to getElem | semmle.label | call to getElem |
|
||||
| D.cpp:22:14:22:20 | call to getBox1 indirection [elem] | semmle.label | call to getBox1 indirection [elem] |
|
||||
| D.cpp:28:15:28:24 | new | semmle.label | new |
|
||||
| D.cpp:30:5:30:20 | Store | semmle.label | Store |
|
||||
| D.cpp:30:8:30:10 | Load indirection [post update] [box indirection, elem] | semmle.label | Load indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:30:13:30:16 | box indirection [post update] [elem] | semmle.label | box indirection [post update] [elem] |
|
||||
| D.cpp:31:14:31:14 | b indirection [box indirection, elem] | semmle.label | b indirection [box indirection, elem] |
|
||||
| D.cpp:31:14:31:14 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:35:15:35:24 | new | semmle.label | new |
|
||||
| D.cpp:37:8:37:10 | Load indirection [post update] [box indirection, elem] | semmle.label | Load indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:37:8:37:10 | setElem output argument [elem] | semmle.label | setElem output argument [elem] |
|
||||
| D.cpp:37:21:37:21 | e | semmle.label | e |
|
||||
| D.cpp:38:14:38:14 | b indirection [box indirection, elem] | semmle.label | b indirection [box indirection, elem] |
|
||||
| D.cpp:38:14:38:14 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:42:15:42:24 | new | semmle.label | new |
|
||||
| D.cpp:44:5:44:5 | getBox1 output argument [box indirection, elem] | semmle.label | getBox1 output argument [box indirection, elem] |
|
||||
| D.cpp:44:5:44:26 | Store | semmle.label | Store |
|
||||
| D.cpp:44:19:44:22 | call to getBox1 indirection [post update] [elem] | semmle.label | call to getBox1 indirection [post update] [elem] |
|
||||
| D.cpp:45:14:45:14 | b indirection [box indirection, elem] | semmle.label | b indirection [box indirection, elem] |
|
||||
| D.cpp:45:14:45:14 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:49:15:49:24 | new | semmle.label | new |
|
||||
| D.cpp:51:5:51:5 | getBox1 output argument [box indirection, elem] | semmle.label | getBox1 output argument [box indirection, elem] |
|
||||
| D.cpp:51:8:51:14 | setElem output argument [elem] | semmle.label | setElem output argument [elem] |
|
||||
| D.cpp:51:27:51:27 | e | semmle.label | e |
|
||||
| D.cpp:52:14:52:14 | b indirection [box indirection, elem] | semmle.label | b indirection [box indirection, elem] |
|
||||
| D.cpp:52:14:52:14 | Load indirection [box indirection, elem] | semmle.label | Load indirection [box indirection, elem] |
|
||||
| D.cpp:56:15:56:24 | new | semmle.label | new |
|
||||
| D.cpp:58:5:58:12 | Load indirection [post update] [boxfield indirection, box indirection, elem] | semmle.label | Load indirection [post update] [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:58:5:58:27 | Store | semmle.label | Store |
|
||||
| D.cpp:58:15:58:17 | boxfield indirection [post update] [box indirection, elem] | semmle.label | boxfield indirection [post update] [box indirection, elem] |
|
||||
| D.cpp:58:20:58:23 | box indirection [post update] [elem] | semmle.label | box indirection [post update] [elem] |
|
||||
| D.cpp:59:5:59:7 | this indirection [boxfield indirection, box indirection, elem] | semmle.label | this indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:59:5:59:7 | Load indirection [boxfield indirection, box indirection, elem] | semmle.label | Load indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:63:8:63:10 | this indirection [boxfield indirection, box indirection, elem] | semmle.label | this indirection [boxfield indirection, box indirection, elem] |
|
||||
| D.cpp:64:10:64:17 | FieldAddress indirection [box indirection, elem] | semmle.label | FieldAddress indirection [box indirection, elem] |
|
||||
| D.cpp:64:10:64:17 | Load indirection [boxfield indirection, box indirection, elem] | semmle.label | Load indirection [boxfield indirection, box indirection, elem] |
|
||||
@@ -1129,7 +1129,7 @@ nodes
|
||||
| D.cpp:64:10:64:28 | elem | semmle.label | elem |
|
||||
| D.cpp:64:20:64:22 | FieldAddress indirection [elem] | semmle.label | FieldAddress indirection [elem] |
|
||||
| D.cpp:64:20:64:22 | box indirection [elem] | semmle.label | box indirection [elem] |
|
||||
| D.cpp:64:25:64:28 | elem | semmle.label | elem |
|
||||
| D.cpp:64:25:64:28 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| D.cpp:64:25:64:28 | elem | semmle.label | elem |
|
||||
| E.cpp:19:27:19:27 | p indirection [data, buffer indirection] | semmle.label | p indirection [data, buffer indirection] |
|
||||
| E.cpp:21:10:21:10 | Load indirection [data, buffer indirection] | semmle.label | Load indirection [data, buffer indirection] |
|
||||
@@ -1302,28 +1302,28 @@ nodes
|
||||
| by_reference.cpp:31:16:31:28 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| by_reference.cpp:31:46:31:46 | s indirection [a] | semmle.label | s indirection [a] |
|
||||
| by_reference.cpp:32:12:32:12 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| by_reference.cpp:32:15:32:15 | a | semmle.label | a |
|
||||
| by_reference.cpp:32:15:32:15 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| by_reference.cpp:35:9:35:19 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| by_reference.cpp:35:9:35:19 | this indirection [a] | semmle.label | this indirection [a] |
|
||||
| by_reference.cpp:36:12:36:15 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| by_reference.cpp:36:18:36:18 | a | semmle.label | a |
|
||||
| by_reference.cpp:36:18:36:18 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| by_reference.cpp:39:9:39:21 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| by_reference.cpp:39:9:39:21 | this indirection [a] | semmle.label | this indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | this indirection [a] | semmle.label | this indirection [a] |
|
||||
| by_reference.cpp:40:12:40:15 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| by_reference.cpp:43:9:43:27 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| by_reference.cpp:43:9:43:27 | this indirection [a] | semmle.label | this indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | this indirection [a] | semmle.label | this indirection [a] |
|
||||
| by_reference.cpp:44:26:44:29 | Load indirection [a] | semmle.label | Load indirection [a] |
|
||||
| by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | semmle.label | setDirectly output argument [a] |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:51:8:51:8 | s indirection [a] | semmle.label | s indirection [a] |
|
||||
| by_reference.cpp:51:8:51:8 | Convert indirection [a] | semmle.label | Convert indirection [a] |
|
||||
| by_reference.cpp:51:10:51:20 | call to getDirectly | semmle.label | call to getDirectly |
|
||||
| by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | semmle.label | setIndirectly output argument [a] |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:57:8:57:8 | s indirection [a] | semmle.label | s indirection [a] |
|
||||
| by_reference.cpp:57:8:57:8 | Convert indirection [a] | semmle.label | Convert indirection [a] |
|
||||
| by_reference.cpp:57:10:57:22 | call to getIndirectly | semmle.label | call to getIndirectly |
|
||||
| by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | semmle.label | setThroughNonMember output argument [a] |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:63:8:63:8 | s indirection [a] | semmle.label | s indirection [a] |
|
||||
| by_reference.cpp:63:8:63:8 | Convert indirection [a] | semmle.label | Convert indirection [a] |
|
||||
| by_reference.cpp:63:10:63:28 | call to getThroughNonMember | semmle.label | call to getThroughNonMember |
|
||||
| by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | semmle.label | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1413,12 +1413,12 @@ nodes
|
||||
| by_reference.cpp:136:16:136:16 | a | semmle.label | a |
|
||||
| complex.cpp:9:7:9:7 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| complex.cpp:9:7:9:7 | this indirection [a_] | semmle.label | this indirection [a_] |
|
||||
| complex.cpp:9:20:9:21 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| complex.cpp:9:20:9:21 | Load indirection [a_] | semmle.label | Load indirection [a_] |
|
||||
| complex.cpp:9:20:9:21 | a_ | semmle.label | a_ |
|
||||
| complex.cpp:10:7:10:7 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| complex.cpp:10:7:10:7 | this indirection [b_] | semmle.label | this indirection [b_] |
|
||||
| complex.cpp:10:20:10:21 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| complex.cpp:10:20:10:21 | Load indirection [b_] | semmle.label | Load indirection [b_] |
|
||||
| complex.cpp:10:20:10:21 | b_ | semmle.label | b_ |
|
||||
| complex.cpp:11:17:11:17 | a | semmle.label | a |
|
||||
| complex.cpp:11:22:11:23 | Load indirection [post update] [a_] | semmle.label | Load indirection [post update] [a_] |
|
||||
| complex.cpp:11:22:11:27 | Store | semmle.label | Store |
|
||||
@@ -1459,10 +1459,10 @@ nodes
|
||||
| complex.cpp:56:12:56:12 | inner indirection [post update] [f, b_] | semmle.label | inner indirection [post update] [f, b_] |
|
||||
| complex.cpp:56:12:56:12 | setB output argument [b_] | semmle.label | setB output argument [b_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | semmle.label | call to user_input |
|
||||
| complex.cpp:59:7:59:8 | b1 indirection [inner, f, a_] | semmle.label | b1 indirection [inner, f, a_] |
|
||||
| complex.cpp:62:7:62:8 | b2 indirection [inner, f, b_] | semmle.label | b2 indirection [inner, f, b_] |
|
||||
| complex.cpp:65:7:65:8 | b3 indirection [inner, f, a_] | semmle.label | b3 indirection [inner, f, a_] |
|
||||
| complex.cpp:65:7:65:8 | b3 indirection [inner, f, b_] | semmle.label | b3 indirection [inner, f, b_] |
|
||||
| complex.cpp:59:7:59:8 | CopyValue indirection [inner, f, a_] | semmle.label | CopyValue indirection [inner, f, a_] |
|
||||
| complex.cpp:62:7:62:8 | CopyValue indirection [inner, f, b_] | semmle.label | CopyValue indirection [inner, f, b_] |
|
||||
| complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, a_] | semmle.label | CopyValue indirection [inner, f, a_] |
|
||||
| complex.cpp:65:7:65:8 | CopyValue indirection [inner, f, b_] | semmle.label | CopyValue indirection [inner, f, b_] |
|
||||
| conflated.cpp:10:3:10:22 | Store | semmle.label | Store |
|
||||
| conflated.cpp:10:7:10:7 | (reference dereference) indirection [post update] [p indirection] | semmle.label | (reference dereference) indirection [post update] [p indirection] |
|
||||
| conflated.cpp:10:11:10:20 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1505,12 +1505,12 @@ nodes
|
||||
| conflated.cpp:61:18:61:18 | y | semmle.label | y |
|
||||
| constructors.cpp:18:9:18:9 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| constructors.cpp:18:9:18:9 | this indirection [a_] | semmle.label | this indirection [a_] |
|
||||
| constructors.cpp:18:22:18:23 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| constructors.cpp:18:22:18:23 | Load indirection [a_] | semmle.label | Load indirection [a_] |
|
||||
| constructors.cpp:18:22:18:23 | a_ | semmle.label | a_ |
|
||||
| constructors.cpp:19:9:19:9 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| constructors.cpp:19:9:19:9 | this indirection [b_] | semmle.label | this indirection [b_] |
|
||||
| constructors.cpp:19:22:19:23 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| constructors.cpp:19:22:19:23 | Load indirection [b_] | semmle.label | Load indirection [b_] |
|
||||
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| constructors.cpp:23:13:23:13 | a | semmle.label | a |
|
||||
| constructors.cpp:23:20:23:20 | b | semmle.label | b |
|
||||
| constructors.cpp:23:25:23:29 | this indirection [post update] [a_] | semmle.label | this indirection [post update] [a_] |
|
||||
@@ -1519,9 +1519,9 @@ nodes
|
||||
| constructors.cpp:23:35:23:35 | Store | semmle.label | Store |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| constructors.cpp:26:15:26:15 | f indirection [b_] | semmle.label | f indirection [b_] |
|
||||
| constructors.cpp:28:10:28:10 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| constructors.cpp:28:10:28:10 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| constructors.cpp:28:12:28:12 | call to a | semmle.label | call to a |
|
||||
| constructors.cpp:29:10:29:10 | f indirection [b_] | semmle.label | f indirection [b_] |
|
||||
| constructors.cpp:29:10:29:10 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| constructors.cpp:29:12:29:12 | call to b | semmle.label | call to b |
|
||||
| constructors.cpp:34:9:34:9 | call to Foo [a_] | semmle.label | call to Foo [a_] |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1531,10 +1531,10 @@ nodes
|
||||
| constructors.cpp:36:9:36:9 | call to Foo [b_] | semmle.label | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | semmle.label | call to user_input |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | semmle.label | call to user_input |
|
||||
| constructors.cpp:40:9:40:9 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| constructors.cpp:43:9:43:9 | g indirection [b_] | semmle.label | g indirection [b_] |
|
||||
| constructors.cpp:46:9:46:9 | h indirection [a_] | semmle.label | h indirection [a_] |
|
||||
| constructors.cpp:46:9:46:9 | h indirection [b_] | semmle.label | h indirection [b_] |
|
||||
| constructors.cpp:40:9:40:9 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| constructors.cpp:43:9:43:9 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| constructors.cpp:46:9:46:9 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| constructors.cpp:46:9:46:9 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| qualifiers.cpp:9:21:9:25 | value | semmle.label | value |
|
||||
| qualifiers.cpp:9:30:9:44 | Store | semmle.label | Store |
|
||||
| qualifiers.cpp:9:36:9:36 | Load indirection [post update] [a] | semmle.label | Load indirection [post update] [a] |
|
||||
@@ -1608,16 +1608,16 @@ nodes
|
||||
| realistic.cpp:61:32:61:34 | FieldAddress indirection [userInput, bufferLen] | semmle.label | FieldAddress indirection [userInput, bufferLen] |
|
||||
| realistic.cpp:61:32:61:34 | baz indirection [userInput, bufferLen] | semmle.label | baz indirection [userInput, bufferLen] |
|
||||
| realistic.cpp:61:37:61:45 | userInput indirection [bufferLen] | semmle.label | userInput indirection [bufferLen] |
|
||||
| realistic.cpp:61:47:61:55 | bufferLen | semmle.label | bufferLen |
|
||||
| realistic.cpp:61:47:61:55 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| realistic.cpp:61:47:61:55 | bufferLen | semmle.label | bufferLen |
|
||||
| simple.cpp:18:9:18:9 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| simple.cpp:18:9:18:9 | this indirection [a_] | semmle.label | this indirection [a_] |
|
||||
| simple.cpp:18:22:18:23 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| simple.cpp:18:22:18:23 | Load indirection [a_] | semmle.label | Load indirection [a_] |
|
||||
| simple.cpp:18:22:18:23 | a_ | semmle.label | a_ |
|
||||
| simple.cpp:19:9:19:9 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| simple.cpp:19:9:19:9 | this indirection [b_] | semmle.label | this indirection [b_] |
|
||||
| simple.cpp:19:22:19:23 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| simple.cpp:19:22:19:23 | Load indirection [b_] | semmle.label | Load indirection [b_] |
|
||||
| simple.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| simple.cpp:20:19:20:19 | a | semmle.label | a |
|
||||
| simple.cpp:20:24:20:25 | Load indirection [post update] [a_] | semmle.label | Load indirection [post update] [a_] |
|
||||
| simple.cpp:20:24:20:29 | Store | semmle.label | Store |
|
||||
@@ -1626,9 +1626,9 @@ nodes
|
||||
| simple.cpp:21:24:21:29 | Store | semmle.label | Store |
|
||||
| simple.cpp:26:15:26:15 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| simple.cpp:26:15:26:15 | f indirection [b_] | semmle.label | f indirection [b_] |
|
||||
| simple.cpp:28:10:28:10 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| simple.cpp:28:10:28:10 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| simple.cpp:28:12:28:12 | call to a | semmle.label | call to a |
|
||||
| simple.cpp:29:10:29:10 | f indirection [b_] | semmle.label | f indirection [b_] |
|
||||
| simple.cpp:29:10:29:10 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| simple.cpp:29:12:29:12 | call to b | semmle.label | call to b |
|
||||
| simple.cpp:39:5:39:5 | setA output argument [a_] | semmle.label | setA output argument [a_] |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1638,10 +1638,10 @@ nodes
|
||||
| simple.cpp:41:12:41:21 | call to user_input | semmle.label | call to user_input |
|
||||
| simple.cpp:42:5:42:5 | setB output argument [b_] | semmle.label | setB output argument [b_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | semmle.label | call to user_input |
|
||||
| simple.cpp:45:9:45:9 | f indirection [a_] | semmle.label | f indirection [a_] |
|
||||
| simple.cpp:48:9:48:9 | g indirection [b_] | semmle.label | g indirection [b_] |
|
||||
| simple.cpp:51:9:51:9 | h indirection [a_] | semmle.label | h indirection [a_] |
|
||||
| simple.cpp:51:9:51:9 | h indirection [b_] | semmle.label | h indirection [b_] |
|
||||
| simple.cpp:45:9:45:9 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| simple.cpp:48:9:48:9 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| simple.cpp:51:9:51:9 | CopyValue indirection [a_] | semmle.label | CopyValue indirection [a_] |
|
||||
| simple.cpp:51:9:51:9 | CopyValue indirection [b_] | semmle.label | CopyValue indirection [b_] |
|
||||
| simple.cpp:65:5:65:22 | Store | semmle.label | Store |
|
||||
| simple.cpp:65:7:65:7 | a indirection [post update] [i] | semmle.label | a indirection [post update] [i] |
|
||||
| simple.cpp:65:11:65:20 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1652,13 +1652,13 @@ nodes
|
||||
| simple.cpp:78:9:78:15 | this indirection [f2, f1] | semmle.label | this indirection [f2, f1] |
|
||||
| simple.cpp:79:16:79:17 | Load indirection [f2, f1] | semmle.label | Load indirection [f2, f1] |
|
||||
| simple.cpp:79:16:79:17 | f2 indirection [f1] | semmle.label | f2 indirection [f1] |
|
||||
| simple.cpp:79:19:79:20 | f1 | semmle.label | f1 |
|
||||
| simple.cpp:79:19:79:20 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| simple.cpp:83:9:83:10 | Load indirection [post update] [f2, f1] | semmle.label | Load indirection [post update] [f2, f1] |
|
||||
| simple.cpp:83:9:83:28 | Store | semmle.label | Store |
|
||||
| simple.cpp:83:12:83:13 | f2 indirection [post update] [f1] | semmle.label | f2 indirection [post update] [f1] |
|
||||
| simple.cpp:83:17:83:26 | call to user_input | semmle.label | call to user_input |
|
||||
| simple.cpp:84:14:84:20 | Load indirection [f2, f1] | semmle.label | Load indirection [f2, f1] |
|
||||
| simple.cpp:84:14:84:20 | call to getf2f1 | semmle.label | call to getf2f1 |
|
||||
| simple.cpp:84:14:84:20 | this indirection [f2, f1] | semmle.label | this indirection [f2, f1] |
|
||||
| simple.cpp:92:5:92:22 | Store | semmle.label | Store |
|
||||
| simple.cpp:92:7:92:7 | a indirection [post update] [i] | semmle.label | a indirection [post update] [i] |
|
||||
| simple.cpp:92:11:92:20 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1706,7 +1706,7 @@ subpaths
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | A.cpp:25:13:25:13 | Load indirection [post update] [c] | A.cpp:31:14:31:21 | call to B [c] |
|
||||
| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | A.cpp:29:15:29:18 | VariableAddress indirection [c] | A.cpp:48:12:48:18 | call to make indirection [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | A.cpp:27:28:27:28 | Load indirection [post update] [c] | A.cpp:55:5:55:5 | set output argument [c] |
|
||||
| A.cpp:56:10:56:10 | b indirection [c] | A.cpp:28:8:28:10 | this indirection [c] | A.cpp:28:8:28:10 | VariableAddress indirection | A.cpp:56:10:56:17 | call to get |
|
||||
| A.cpp:56:10:56:10 | Load indirection [c] | A.cpp:28:8:28:10 | this indirection [c] | A.cpp:28:8:28:10 | VariableAddress indirection | A.cpp:56:10:56:17 | call to get |
|
||||
| A.cpp:57:11:57:24 | new indirection [c] | A.cpp:28:8:28:10 | this indirection [c] | A.cpp:28:8:28:10 | VariableAddress indirection | A.cpp:57:10:57:32 | call to get |
|
||||
| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | A.cpp:25:13:25:13 | Load indirection [post update] [c] | A.cpp:57:11:57:24 | call to B [c] |
|
||||
| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | A.cpp:85:9:85:14 | VariableAddress indirection [c] | A.cpp:64:10:64:15 | call to setOnB indirection [c] |
|
||||
@@ -1716,24 +1716,24 @@ subpaths
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | A.cpp:27:28:27:28 | Load indirection [post update] [c] | A.cpp:126:5:126:5 | set output argument [c] |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | A.cpp:143:13:143:13 | Load indirection [post update] [b] | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:10 | Load indirection [post update] [head] | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:161:38:161:39 | l1 indirection [head] | A.cpp:181:32:181:35 | next indirection [head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, head] | A.cpp:161:18:161:40 | call to MyList [next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | l2 indirection [next indirection, head] | A.cpp:181:32:181:35 | next indirection [next indirection, head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, next indirection, head] | A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] |
|
||||
| A.cpp:161:38:161:39 | Load indirection [head] | A.cpp:181:32:181:35 | next indirection [head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, head] | A.cpp:161:18:161:40 | call to MyList [next indirection, head] |
|
||||
| A.cpp:162:38:162:39 | Load indirection [next indirection, head] | A.cpp:181:32:181:35 | next indirection [next indirection, head] | A.cpp:184:13:184:16 | Load indirection [post update] [next indirection, next indirection, head] | A.cpp:162:18:162:40 | call to MyList [next indirection, next indirection, head] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | B.cpp:35:13:35:17 | Load indirection [post update] [elem1] | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 indirection [elem1] | B.cpp:44:16:44:17 | b1 indirection [elem1] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem1] | B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] |
|
||||
| B.cpp:8:25:8:26 | Load indirection [elem1] | B.cpp:44:16:44:17 | b1 indirection [elem1] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem1] | B.cpp:8:16:8:27 | call to Box2 [box1 indirection, elem1] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | B.cpp:36:13:36:17 | Load indirection [post update] [elem2] | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 indirection [elem2] | B.cpp:44:16:44:17 | b1 indirection [elem2] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem2] | B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] |
|
||||
| D.cpp:22:10:22:11 | b2 indirection [box indirection, elem] | D.cpp:17:11:17:17 | this indirection [box indirection, elem] | D.cpp:17:11:17:17 | VariableAddress indirection [elem] | D.cpp:22:14:22:20 | call to getBox1 indirection [elem] |
|
||||
| B.cpp:17:25:17:26 | Load indirection [elem2] | B.cpp:44:16:44:17 | b1 indirection [elem2] | B.cpp:46:13:46:16 | Load indirection [post update] [box1 indirection, elem2] | B.cpp:17:16:17:27 | call to Box2 [box1 indirection, elem2] |
|
||||
| D.cpp:22:10:22:11 | Load indirection [box indirection, elem] | D.cpp:17:11:17:17 | this indirection [box indirection, elem] | D.cpp:17:11:17:17 | VariableAddress indirection [elem] | D.cpp:22:14:22:20 | call to getBox1 indirection [elem] |
|
||||
| D.cpp:22:14:22:20 | call to getBox1 indirection [elem] | D.cpp:10:11:10:17 | this indirection [elem] | D.cpp:10:11:10:17 | VariableAddress indirection | D.cpp:22:10:22:33 | call to getElem |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | Load indirection [post update] [elem] | D.cpp:37:8:37:10 | setElem output argument [elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | Load indirection [post update] [elem] | D.cpp:51:8:51:14 | setElem output argument [elem] |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:11:16:11 | Load indirection [post update] [a] | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:8:12:8 | Load indirection [post update] [a] | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:11:16:11 | Load indirection [post update] [a] | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:51:8:51:8 | s indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] | by_reference.cpp:35:9:35:19 | VariableAddress indirection | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:51:8:51:8 | Convert indirection [a] | by_reference.cpp:35:9:35:19 | this indirection [a] | by_reference.cpp:35:9:35:19 | VariableAddress indirection | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] |
|
||||
| by_reference.cpp:57:8:57:8 | s indirection [a] | by_reference.cpp:39:9:39:21 | this indirection [a] | by_reference.cpp:39:9:39:21 | VariableAddress indirection | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:57:8:57:8 | Convert indirection [a] | by_reference.cpp:39:9:39:21 | this indirection [a] | by_reference.cpp:39:9:39:21 | VariableAddress indirection | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] |
|
||||
| by_reference.cpp:63:8:63:8 | s indirection [a] | by_reference.cpp:43:9:43:27 | this indirection [a] | by_reference.cpp:43:9:43:27 | VariableAddress indirection | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:63:8:63:8 | Convert indirection [a] | by_reference.cpp:43:9:43:27 | this indirection [a] | by_reference.cpp:43:9:43:27 | VariableAddress indirection | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:8:12:8 | Load indirection [post update] [a] | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:69:22:69:23 | & ... indirection [a] | by_reference.cpp:31:46:31:46 | s indirection [a] | by_reference.cpp:31:16:31:28 | VariableAddress indirection | by_reference.cpp:69:8:69:20 | call to nonMemberGetA |
|
||||
| complex.cpp:42:16:42:16 | f indirection [a_] | complex.cpp:9:7:9:7 | this indirection [a_] | complex.cpp:9:7:9:7 | VariableAddress indirection | complex.cpp:42:18:42:18 | call to a |
|
||||
@@ -1742,8 +1742,8 @@ subpaths
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | Load indirection [post update] [b_] | complex.cpp:54:12:54:12 | setB output argument [b_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:23 | Load indirection [post update] [a_] | complex.cpp:55:12:55:12 | setA output argument [a_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | Load indirection [post update] [b_] | complex.cpp:56:12:56:12 | setB output argument [b_] |
|
||||
| constructors.cpp:28:10:28:10 | f indirection [a_] | constructors.cpp:18:9:18:9 | this indirection [a_] | constructors.cpp:18:9:18:9 | VariableAddress indirection | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | f indirection [b_] | constructors.cpp:19:9:19:9 | this indirection [b_] | constructors.cpp:19:9:19:9 | VariableAddress indirection | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:28:10:28:10 | CopyValue indirection [a_] | constructors.cpp:18:9:18:9 | this indirection [a_] | constructors.cpp:18:9:18:9 | VariableAddress indirection | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | CopyValue indirection [b_] | constructors.cpp:19:9:19:9 | this indirection [b_] | constructors.cpp:19:9:19:9 | VariableAddress indirection | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:25:23:29 | this indirection [post update] [a_] | constructors.cpp:34:9:34:9 | call to Foo [a_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:32:23:36 | this indirection [post update] [b_] | constructors.cpp:35:9:35:9 | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:25:23:29 | this indirection [post update] [a_] | constructors.cpp:36:9:36:9 | call to Foo [a_] |
|
||||
@@ -1751,13 +1751,13 @@ subpaths
|
||||
| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:36:9:36 | Load indirection [post update] [a] | qualifiers.cpp:27:11:27:18 | setA output argument [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:56:12:56 | Load indirection [post update] [a] | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:57:13:57 | (reference dereference) indirection [post update] [a] | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] |
|
||||
| simple.cpp:28:10:28:10 | f indirection [a_] | simple.cpp:18:9:18:9 | this indirection [a_] | simple.cpp:18:9:18:9 | VariableAddress indirection | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | f indirection [b_] | simple.cpp:19:9:19:9 | this indirection [b_] | simple.cpp:19:9:19:9 | VariableAddress indirection | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:28:10:28:10 | CopyValue indirection [a_] | simple.cpp:18:9:18:9 | this indirection [a_] | simple.cpp:18:9:18:9 | VariableAddress indirection | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | CopyValue indirection [b_] | simple.cpp:19:9:19:9 | this indirection [b_] | simple.cpp:19:9:19:9 | VariableAddress indirection | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | Load indirection [post update] [a_] | simple.cpp:39:5:39:5 | setA output argument [a_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | Load indirection [post update] [b_] | simple.cpp:40:5:40:5 | setB output argument [b_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | Load indirection [post update] [a_] | simple.cpp:41:5:41:5 | setA output argument [a_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | Load indirection [post update] [b_] | simple.cpp:42:5:42:5 | setB output argument [b_] |
|
||||
| simple.cpp:84:14:84:20 | this indirection [f2, f1] | simple.cpp:78:9:78:15 | this indirection [f2, f1] | simple.cpp:78:9:78:15 | VariableAddress indirection | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
| simple.cpp:84:14:84:20 | Load indirection [f2, f1] | simple.cpp:78:9:78:15 | this indirection [f2, f1] | simple.cpp:78:9:78:15 | VariableAddress indirection | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
#select
|
||||
| A.cpp:43:10:43:12 | & ... indirection | A.cpp:41:15:41:21 | new | A.cpp:43:10:43:12 | & ... indirection | & ... indirection flows from $@ | A.cpp:41:15:41:21 | new | new |
|
||||
| A.cpp:43:10:43:12 | & ... indirection | A.cpp:41:15:41:21 | new | A.cpp:43:10:43:12 | & ... indirection | & ... indirection flows from $@ | A.cpp:41:15:41:21 | new | new |
|
||||
|
||||
@@ -117,7 +117,6 @@ uniqueNodeLocation
|
||||
| file://:0:0:0:0 | VariableAddress indirection | Node should have one location but has 0. |
|
||||
| file://:0:0:0:0 | VariableAddress indirection | Node should have one location but has 0. |
|
||||
| file://:0:0:0:0 | VariableAddress indirection | Node should have one location but has 0. |
|
||||
| file://:0:0:0:0 | VariableAddress indirection | Node should have one location but has 0. |
|
||||
| forstmt.cpp:1:6:1:7 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| forstmt.cpp:1:6:1:7 | InitializeNonLocal | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | AliasedDefinition | Node should have one location but has 2. |
|
||||
@@ -268,24 +267,22 @@ uniqueNodeLocation
|
||||
| whilestmt.c:39:6:39:11 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:39:6:39:11 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
missingLocation
|
||||
| Nodes without location: 38 |
|
||||
| Nodes without location: 37 |
|
||||
uniqueNodeToString
|
||||
| break_labels.c:2:11:2:11 | i | Node should have one toString but has 2. |
|
||||
| break_labels.c:2:11:2:11 | i | Node should have one toString but has 2. |
|
||||
| break_labels.c:2:11:2:11 | x | Node should have one toString but has 2. |
|
||||
| break_labels.c:2:11:2:11 | x | Node should have one toString but has 2. |
|
||||
| break_labels.c:4:9:4:9 | i | Node should have one toString but has 2. |
|
||||
| break_labels.c:4:9:4:9 | i indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:4:9:4:9 | x | Node should have one toString but has 2. |
|
||||
| break_labels.c:4:9:4:9 | x indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:6:16:6:16 | i | Node should have one toString but has 2. |
|
||||
| break_labels.c:6:16:6:16 | i indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:6:16:6:16 | x | Node should have one toString but has 2. |
|
||||
| break_labels.c:6:16:6:16 | x indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | i | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | i indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | i indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | x | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | x indirection | Node should have one toString but has 2. |
|
||||
| break_labels.c:7:17:7:17 | x indirection | Node should have one toString but has 2. |
|
||||
| constructorinitializer.cpp:3:9:3:9 | i | Node should have one toString but has 2. |
|
||||
| constructorinitializer.cpp:3:9:3:9 | x | Node should have one toString but has 2. |
|
||||
| constructorinitializer.cpp:3:16:3:16 | j | Node should have one toString but has 2. |
|
||||
@@ -295,13 +292,9 @@ uniqueNodeToString
|
||||
| duff.c:2:12:2:12 | x | Node should have one toString but has 2. |
|
||||
| duff.c:2:12:2:12 | x | Node should have one toString but has 2. |
|
||||
| duff.c:3:14:3:14 | i | Node should have one toString but has 2. |
|
||||
| duff.c:3:14:3:14 | i indirection | Node should have one toString but has 2. |
|
||||
| duff.c:3:14:3:14 | x | Node should have one toString but has 2. |
|
||||
| duff.c:3:14:3:14 | x indirection | Node should have one toString but has 2. |
|
||||
| duff.c:4:13:4:13 | i | Node should have one toString but has 2. |
|
||||
| duff.c:4:13:4:13 | i indirection | Node should have one toString but has 2. |
|
||||
| duff.c:4:13:4:13 | x | Node should have one toString but has 2. |
|
||||
| duff.c:4:13:4:13 | x indirection | Node should have one toString but has 2. |
|
||||
| newexpr.cpp:3:9:3:9 | i | Node should have one toString but has 2. |
|
||||
| newexpr.cpp:3:9:3:9 | x | Node should have one toString but has 2. |
|
||||
| newexpr.cpp:3:16:3:16 | j | Node should have one toString but has 2. |
|
||||
@@ -311,17 +304,13 @@ uniqueNodeToString
|
||||
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
|
||||
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
|
||||
| nodefaultswitchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
|
||||
| nodefaultswitchstmt.c:2:14:2:14 | i indirection | Node should have one toString but has 2. |
|
||||
| nodefaultswitchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
|
||||
| nodefaultswitchstmt.c:2:14:2:14 | x indirection | Node should have one toString but has 2. |
|
||||
| switchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
|
||||
| switchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
|
||||
| switchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
|
||||
| switchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
|
||||
| switchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
|
||||
| switchstmt.c:2:14:2:14 | i indirection | Node should have one toString but has 2. |
|
||||
| switchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
|
||||
| switchstmt.c:2:14:2:14 | x indirection | Node should have one toString but has 2. |
|
||||
missingToString
|
||||
parameterCallable
|
||||
localFlowIsLocal
|
||||
@@ -362,13 +351,13 @@ reverseRead
|
||||
| ir.cpp:658:5:658:5 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:658:5:658:5 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:745:8:745:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:745:8:745:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:745:8:745:8 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:748:3:748:6 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:750:3:750:7 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:754:8:754:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:754:8:754:8 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:757:3:757:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:759:3:759:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:763:8:763:8 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:763:8:763:8 | this | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:766:3:766:9 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:768:3:768:10 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
| ir.cpp:775:3:775:11 | Unary | Origin of readStep is missing a PostUpdateNode. |
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
edges
|
||||
| tests.cpp:26:15:26:23 | VariableAddress indirection | tests.cpp:51:12:51:20 | call to badSource indirection |
|
||||
| tests.cpp:33:34:33:39 | call to getenv indirection | tests.cpp:38:39:38:49 | environment indirection |
|
||||
| tests.cpp:33:34:33:39 | call to getenv indirection | tests.cpp:38:39:38:49 | Convert indirection |
|
||||
| tests.cpp:38:25:38:36 | strncat output argument | tests.cpp:26:15:26:23 | VariableAddress indirection |
|
||||
| tests.cpp:38:39:38:49 | environment indirection | tests.cpp:38:25:38:36 | strncat output argument |
|
||||
| tests.cpp:51:12:51:20 | call to badSource indirection | tests.cpp:53:16:53:19 | data indirection |
|
||||
| tests.cpp:38:39:38:49 | Convert indirection | tests.cpp:38:25:38:36 | strncat output argument |
|
||||
| tests.cpp:51:12:51:20 | call to badSource indirection | tests.cpp:53:16:53:19 | Convert indirection |
|
||||
nodes
|
||||
| tests.cpp:26:15:26:23 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| tests.cpp:33:34:33:39 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| tests.cpp:38:25:38:36 | strncat output argument | semmle.label | strncat output argument |
|
||||
| tests.cpp:38:39:38:49 | environment indirection | semmle.label | environment indirection |
|
||||
| tests.cpp:38:39:38:49 | Convert indirection | semmle.label | Convert indirection |
|
||||
| tests.cpp:51:12:51:20 | call to badSource indirection | semmle.label | call to badSource indirection |
|
||||
| tests.cpp:53:16:53:19 | data indirection | semmle.label | data indirection |
|
||||
| tests.cpp:53:16:53:19 | Convert indirection | semmle.label | Convert indirection |
|
||||
subpaths
|
||||
#select
|
||||
| tests.cpp:53:16:53:19 | data | tests.cpp:33:34:33:39 | call to getenv indirection | tests.cpp:53:16:53:19 | data indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | tests.cpp:33:34:33:39 | call to getenv indirection | user input (an environment variable) | tests.cpp:38:25:38:36 | strncat output argument | strncat output argument |
|
||||
| tests.cpp:53:16:53:19 | data | tests.cpp:33:34:33:39 | call to getenv indirection | tests.cpp:53:16:53:19 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | tests.cpp:33:34:33:39 | call to getenv indirection | user input (an environment variable) | tests.cpp:38:25:38:36 | strncat output argument | strncat output argument |
|
||||
|
||||
@@ -1,149 +1,149 @@
|
||||
edges
|
||||
| test.cpp:47:21:47:26 | call to getenv indirection | test.cpp:50:35:50:43 | envCflags indirection |
|
||||
| test.cpp:50:11:50:17 | sprintf output argument | test.cpp:51:10:51:16 | command indirection |
|
||||
| test.cpp:50:35:50:43 | envCflags indirection | test.cpp:50:11:50:17 | sprintf output argument |
|
||||
| test.cpp:62:9:62:16 | fread output argument | test.cpp:64:20:64:27 | filename indirection |
|
||||
| test.cpp:64:11:64:17 | strncat output argument | test.cpp:65:10:65:16 | command indirection |
|
||||
| test.cpp:64:20:64:27 | filename indirection | test.cpp:64:11:64:17 | strncat output argument |
|
||||
| test.cpp:82:9:82:16 | fread output argument | test.cpp:84:20:84:27 | filename indirection |
|
||||
| test.cpp:84:11:84:17 | strncat output argument | test.cpp:85:32:85:38 | command indirection |
|
||||
| test.cpp:84:20:84:27 | filename indirection | test.cpp:84:11:84:17 | strncat output argument |
|
||||
| test.cpp:91:9:91:16 | fread output argument | test.cpp:93:17:93:24 | filename indirection |
|
||||
| test.cpp:93:11:93:14 | strncat output argument | test.cpp:94:45:94:48 | path indirection |
|
||||
| test.cpp:93:17:93:24 | filename indirection | test.cpp:93:11:93:14 | strncat output argument |
|
||||
| test.cpp:106:20:106:25 | call to getenv | test.cpp:107:33:107:36 | path indirection |
|
||||
| test.cpp:106:20:106:38 | call to getenv indirection | test.cpp:107:33:107:36 | path indirection |
|
||||
| test.cpp:47:21:47:26 | call to getenv indirection | test.cpp:50:35:50:43 | Load indirection |
|
||||
| test.cpp:50:11:50:17 | sprintf output argument | test.cpp:51:10:51:16 | Convert indirection |
|
||||
| test.cpp:50:35:50:43 | Load indirection | test.cpp:50:11:50:17 | sprintf output argument |
|
||||
| test.cpp:62:9:62:16 | fread output argument | test.cpp:64:20:64:27 | Convert indirection |
|
||||
| test.cpp:64:11:64:17 | strncat output argument | test.cpp:65:10:65:16 | Convert indirection |
|
||||
| test.cpp:64:20:64:27 | Convert indirection | test.cpp:64:11:64:17 | strncat output argument |
|
||||
| test.cpp:82:9:82:16 | fread output argument | test.cpp:84:20:84:27 | Convert indirection |
|
||||
| test.cpp:84:11:84:17 | strncat output argument | test.cpp:85:32:85:38 | Convert indirection |
|
||||
| test.cpp:84:20:84:27 | Convert indirection | test.cpp:84:11:84:17 | strncat output argument |
|
||||
| test.cpp:91:9:91:16 | fread output argument | test.cpp:93:17:93:24 | Convert indirection |
|
||||
| test.cpp:93:11:93:14 | strncat output argument | test.cpp:94:45:94:48 | Convert indirection |
|
||||
| test.cpp:93:17:93:24 | Convert indirection | test.cpp:93:11:93:14 | strncat output argument |
|
||||
| test.cpp:106:20:106:25 | call to getenv | test.cpp:107:33:107:36 | CopyValue indirection |
|
||||
| test.cpp:106:20:106:38 | call to getenv indirection | test.cpp:107:33:107:36 | CopyValue indirection |
|
||||
| test.cpp:107:31:107:31 | Call | test.cpp:108:18:108:22 | call to c_str indirection |
|
||||
| test.cpp:107:33:107:36 | path indirection | test.cpp:107:31:107:31 | Call |
|
||||
| test.cpp:113:20:113:25 | call to getenv | test.cpp:114:19:114:22 | path indirection |
|
||||
| test.cpp:113:20:113:38 | call to getenv indirection | test.cpp:114:19:114:22 | path indirection |
|
||||
| test.cpp:107:33:107:36 | CopyValue indirection | test.cpp:107:31:107:31 | Call |
|
||||
| test.cpp:113:20:113:25 | call to getenv | test.cpp:114:19:114:22 | CopyValue indirection |
|
||||
| test.cpp:113:20:113:38 | call to getenv indirection | test.cpp:114:19:114:22 | CopyValue indirection |
|
||||
| test.cpp:114:10:114:23 | Convert | test.cpp:114:25:114:29 | call to c_str indirection |
|
||||
| test.cpp:114:17:114:17 | call to operator+ | test.cpp:114:25:114:29 | call to c_str indirection |
|
||||
| test.cpp:114:19:114:22 | path indirection | test.cpp:114:10:114:23 | Convert |
|
||||
| test.cpp:114:19:114:22 | path indirection | test.cpp:114:17:114:17 | call to operator+ |
|
||||
| test.cpp:119:20:119:25 | call to getenv | test.cpp:120:19:120:22 | path indirection |
|
||||
| test.cpp:119:20:119:38 | call to getenv indirection | test.cpp:120:19:120:22 | path indirection |
|
||||
| test.cpp:114:19:114:22 | CopyValue indirection | test.cpp:114:10:114:23 | Convert |
|
||||
| test.cpp:114:19:114:22 | CopyValue indirection | test.cpp:114:17:114:17 | call to operator+ |
|
||||
| test.cpp:119:20:119:25 | call to getenv | test.cpp:120:19:120:22 | CopyValue indirection |
|
||||
| test.cpp:119:20:119:38 | call to getenv indirection | test.cpp:120:19:120:22 | CopyValue indirection |
|
||||
| test.cpp:120:17:120:17 | call to operator+ | test.cpp:120:10:120:30 | call to data indirection |
|
||||
| test.cpp:120:19:120:22 | path indirection | test.cpp:120:17:120:17 | call to operator+ |
|
||||
| test.cpp:140:9:140:11 | fread output argument | test.cpp:142:31:142:33 | str indirection |
|
||||
| test.cpp:142:11:142:17 | sprintf output argument | test.cpp:143:10:143:16 | command indirection |
|
||||
| test.cpp:142:31:142:33 | str indirection | test.cpp:142:11:142:17 | sprintf output argument |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:177:20:177:27 | filename indirection |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:178:22:178:26 | flags indirection |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:180:22:180:29 | filename indirection |
|
||||
| test.cpp:177:13:177:17 | strncat output argument | test.cpp:183:32:183:38 | command indirection |
|
||||
| test.cpp:177:20:177:27 | filename indirection | test.cpp:177:13:177:17 | strncat output argument |
|
||||
| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | command indirection |
|
||||
| test.cpp:178:22:178:26 | flags indirection | test.cpp:178:13:178:19 | strncat output argument |
|
||||
| test.cpp:180:13:180:19 | strncat output argument | test.cpp:183:32:183:38 | command indirection |
|
||||
| test.cpp:180:22:180:29 | filename indirection | test.cpp:180:13:180:19 | strncat output argument |
|
||||
| test.cpp:120:19:120:22 | CopyValue indirection | test.cpp:120:17:120:17 | call to operator+ |
|
||||
| test.cpp:140:9:140:11 | fread output argument | test.cpp:142:31:142:33 | Convert indirection |
|
||||
| test.cpp:142:11:142:17 | sprintf output argument | test.cpp:143:10:143:16 | Convert indirection |
|
||||
| test.cpp:142:31:142:33 | Convert indirection | test.cpp:142:11:142:17 | sprintf output argument |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:177:20:177:27 | Convert indirection |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:178:22:178:26 | Convert indirection |
|
||||
| test.cpp:174:9:174:16 | fread output argument | test.cpp:180:22:180:29 | Convert indirection |
|
||||
| test.cpp:177:13:177:17 | strncat output argument | test.cpp:183:32:183:38 | Convert indirection |
|
||||
| test.cpp:177:20:177:27 | Convert indirection | test.cpp:177:13:177:17 | strncat output argument |
|
||||
| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | Convert indirection |
|
||||
| test.cpp:178:22:178:26 | Convert indirection | test.cpp:178:13:178:19 | strncat output argument |
|
||||
| test.cpp:180:13:180:19 | strncat output argument | test.cpp:183:32:183:38 | Convert indirection |
|
||||
| test.cpp:180:22:180:29 | Convert indirection | test.cpp:180:13:180:19 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:186:34:186:38 | flags | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:186:34:186:38 | flags indirection | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags indirection | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:186:34:186:38 | flags indirection | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:186:34:186:38 | flags indirection | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:186:47:186:54 | filename | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:47:186:54 | filename | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:186:47:186:54 | filename | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:186:47:186:54 | filename indirection | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:186:47:186:54 | filename indirection | test.cpp:187:18:187:25 | filename indirection |
|
||||
| test.cpp:186:47:186:54 | filename indirection | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:186:47:186:54 | filename indirection | test.cpp:187:18:187:25 | Convert indirection |
|
||||
| test.cpp:186:47:186:54 | filename indirection | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | flags indirection |
|
||||
| test.cpp:187:18:187:25 | filename indirection | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | flags indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | flags indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | flags indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | flags indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | Convert indirection |
|
||||
| test.cpp:187:18:187:25 | Convert indirection | test.cpp:187:11:187:15 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | test.cpp:188:11:188:17 | strncat output argument |
|
||||
| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | Convert indirection |
|
||||
| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | filename |
|
||||
| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | filename indirection |
|
||||
| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | command indirection |
|
||||
| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | command indirection |
|
||||
| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | Convert indirection |
|
||||
| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | Convert indirection |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:186:34:186:38 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:186:34:186:38 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | Convert indirection |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | Convert indirection |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | flags |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | flags |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | concat output argument | test.cpp:196:19:196:23 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:186:34:186:38 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:186:34:186:38 | flags indirection |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:186:47:186:54 | filename indirection |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename | test.cpp:186:47:186:54 | filename |
|
||||
| test.cpp:196:26:196:33 | filename | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:186:47:186:54 | filename indirection |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | filename indirection |
|
||||
| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | filename indirection |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | command indirection |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | command indirection |
|
||||
| test.cpp:220:19:220:26 | filename indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | filename indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | filename indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | filename indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | Convert indirection |
|
||||
| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | Convert indirection |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | Convert indirection |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | Convert indirection |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | test.cpp:220:10:220:16 | strncat output argument |
|
||||
nodes
|
||||
| test.cpp:47:21:47:26 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:50:11:50:17 | sprintf output argument | semmle.label | sprintf output argument |
|
||||
| test.cpp:50:35:50:43 | envCflags indirection | semmle.label | envCflags indirection |
|
||||
| test.cpp:51:10:51:16 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:50:35:50:43 | Load indirection | semmle.label | Load indirection |
|
||||
| test.cpp:51:10:51:16 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:62:9:62:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:64:11:64:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:64:20:64:27 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:65:10:65:16 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:64:20:64:27 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:65:10:65:16 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:82:9:82:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:84:11:84:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:84:20:84:27 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:85:32:85:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:84:20:84:27 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:85:32:85:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:91:9:91:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:93:11:93:14 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:93:17:93:24 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:94:45:94:48 | path indirection | semmle.label | path indirection |
|
||||
| test.cpp:93:17:93:24 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:94:45:94:48 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:106:20:106:25 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:106:20:106:38 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:107:31:107:31 | Call | semmle.label | Call |
|
||||
| test.cpp:107:33:107:36 | path indirection | semmle.label | path indirection |
|
||||
| test.cpp:107:33:107:36 | CopyValue indirection | semmle.label | CopyValue indirection |
|
||||
| test.cpp:108:18:108:22 | call to c_str indirection | semmle.label | call to c_str indirection |
|
||||
| test.cpp:113:20:113:25 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:113:20:113:38 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:114:10:114:23 | Convert | semmle.label | Convert |
|
||||
| test.cpp:114:17:114:17 | call to operator+ | semmle.label | call to operator+ |
|
||||
| test.cpp:114:19:114:22 | path indirection | semmle.label | path indirection |
|
||||
| test.cpp:114:19:114:22 | CopyValue indirection | semmle.label | CopyValue indirection |
|
||||
| test.cpp:114:25:114:29 | call to c_str indirection | semmle.label | call to c_str indirection |
|
||||
| test.cpp:114:25:114:29 | call to c_str indirection | semmle.label | call to c_str indirection |
|
||||
| test.cpp:119:20:119:25 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:119:20:119:38 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:120:10:120:30 | call to data indirection | semmle.label | call to data indirection |
|
||||
| test.cpp:120:17:120:17 | call to operator+ | semmle.label | call to operator+ |
|
||||
| test.cpp:120:19:120:22 | path indirection | semmle.label | path indirection |
|
||||
| test.cpp:120:19:120:22 | CopyValue indirection | semmle.label | CopyValue indirection |
|
||||
| test.cpp:140:9:140:11 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:142:11:142:17 | sprintf output argument | semmle.label | sprintf output argument |
|
||||
| test.cpp:142:31:142:33 | str indirection | semmle.label | str indirection |
|
||||
| test.cpp:143:10:143:16 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:142:31:142:33 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:143:10:143:16 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:174:9:174:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:177:13:177:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:177:20:177:27 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:177:20:177:27 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:178:13:178:19 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:178:22:178:26 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:178:22:178:26 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:180:13:180:19 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:180:22:180:29 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:183:32:183:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:183:32:183:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:183:32:183:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:180:22:180:29 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:183:32:183:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:183:32:183:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:183:32:183:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:186:34:186:38 | flags | semmle.label | flags |
|
||||
| test.cpp:186:34:186:38 | flags | semmle.label | flags |
|
||||
| test.cpp:186:34:186:38 | flags indirection | semmle.label | flags indirection |
|
||||
@@ -157,7 +157,7 @@ nodes
|
||||
| test.cpp:187:11:187:15 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:187:18:187:25 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:187:18:187:25 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
@@ -165,47 +165,47 @@ nodes
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:188:20:188:24 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:188:20:188:24 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:188:20:188:24 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:188:20:188:24 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:188:20:188:24 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:194:9:194:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:196:10:196:16 | concat output argument | semmle.label | concat output argument |
|
||||
| test.cpp:196:10:196:16 | concat output argument | semmle.label | concat output argument |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:196:19:196:23 | concat output argument | semmle.label | concat output argument |
|
||||
| test.cpp:196:19:196:23 | concat output argument | semmle.label | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | semmle.label | flags |
|
||||
| test.cpp:196:19:196:23 | flags | semmle.label | flags |
|
||||
| test.cpp:196:19:196:23 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:196:19:196:23 | flags indirection | semmle.label | flags indirection |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:196:26:196:33 | filename | semmle.label | filename |
|
||||
| test.cpp:196:26:196:33 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:198:32:198:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:198:32:198:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:198:32:198:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:198:32:198:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:218:9:218:16 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:220:10:220:16 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:220:19:220:26 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:220:19:220:26 | filename indirection | semmle.label | filename indirection |
|
||||
| test.cpp:222:32:222:38 | command indirection | semmle.label | command indirection |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:220:19:220:26 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:222:32:222:38 | Convert indirection | semmle.label | Convert indirection |
|
||||
subpaths
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:186:34:186:38 | flags indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | Convert indirection | test.cpp:186:34:186:38 | flags indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags | test.cpp:186:34:186:38 | flags | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:186:34:186:38 | flags indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:19:196:23 | flags indirection | test.cpp:186:34:186:38 | flags indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | Convert indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename | test.cpp:186:47:186:54 | filename | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename | test.cpp:186:47:186:54 | filename | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:187:11:187:15 | strncat output argument | test.cpp:196:19:196:23 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | filename indirection | test.cpp:186:47:186:54 | filename indirection | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
#select
|
||||
| test.cpp:51:10:51:16 | command | test.cpp:47:21:47:26 | call to getenv indirection | test.cpp:51:10:51:16 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:47:21:47:26 | call to getenv indirection | user input (an environment variable) | test.cpp:50:11:50:17 | sprintf output argument | sprintf output argument |
|
||||
| test.cpp:65:10:65:16 | command | test.cpp:62:9:62:16 | fread output argument | test.cpp:65:10:65:16 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:62:9:62:16 | fread output argument | user input (String read by fread) | test.cpp:64:11:64:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:85:32:85:38 | command | test.cpp:82:9:82:16 | fread output argument | test.cpp:85:32:85:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:82:9:82:16 | fread output argument | user input (String read by fread) | test.cpp:84:11:84:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:94:45:94:48 | path | test.cpp:91:9:91:16 | fread output argument | test.cpp:94:45:94:48 | path indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:91:9:91:16 | fread output argument | user input (String read by fread) | test.cpp:93:11:93:14 | strncat output argument | strncat output argument |
|
||||
| test.cpp:51:10:51:16 | command | test.cpp:47:21:47:26 | call to getenv indirection | test.cpp:51:10:51:16 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:47:21:47:26 | call to getenv indirection | user input (an environment variable) | test.cpp:50:11:50:17 | sprintf output argument | sprintf output argument |
|
||||
| test.cpp:65:10:65:16 | command | test.cpp:62:9:62:16 | fread output argument | test.cpp:65:10:65:16 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:62:9:62:16 | fread output argument | user input (String read by fread) | test.cpp:64:11:64:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:85:32:85:38 | command | test.cpp:82:9:82:16 | fread output argument | test.cpp:85:32:85:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:82:9:82:16 | fread output argument | user input (String read by fread) | test.cpp:84:11:84:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:94:45:94:48 | path | test.cpp:91:9:91:16 | fread output argument | test.cpp:94:45:94:48 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:91:9:91:16 | fread output argument | user input (String read by fread) | test.cpp:93:11:93:14 | strncat output argument | strncat output argument |
|
||||
| test.cpp:108:18:108:22 | call to c_str | test.cpp:106:20:106:25 | call to getenv | test.cpp:108:18:108:22 | call to c_str indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:106:20:106:25 | call to getenv | user input (an environment variable) | test.cpp:107:31:107:31 | Call | Call |
|
||||
| test.cpp:108:18:108:22 | call to c_str | test.cpp:106:20:106:38 | call to getenv indirection | test.cpp:108:18:108:22 | call to c_str indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:106:20:106:38 | call to getenv indirection | user input (an environment variable) | test.cpp:107:31:107:31 | Call | Call |
|
||||
| test.cpp:114:25:114:29 | call to c_str | test.cpp:113:20:113:25 | call to getenv | test.cpp:114:25:114:29 | call to c_str indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:113:20:113:25 | call to getenv | user input (an environment variable) | test.cpp:114:10:114:23 | Convert | Convert |
|
||||
@@ -214,11 +214,11 @@ subpaths
|
||||
| test.cpp:114:25:114:29 | call to c_str | test.cpp:113:20:113:38 | call to getenv indirection | test.cpp:114:25:114:29 | call to c_str indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:113:20:113:38 | call to getenv indirection | user input (an environment variable) | test.cpp:114:17:114:17 | call to operator+ | call to operator+ |
|
||||
| test.cpp:120:25:120:28 | call to data | test.cpp:119:20:119:25 | call to getenv | test.cpp:120:10:120:30 | call to data indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:119:20:119:25 | call to getenv | user input (an environment variable) | test.cpp:120:17:120:17 | call to operator+ | call to operator+ |
|
||||
| test.cpp:120:25:120:28 | call to data | test.cpp:119:20:119:38 | call to getenv indirection | test.cpp:120:10:120:30 | call to data indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:119:20:119:38 | call to getenv indirection | user input (an environment variable) | test.cpp:120:17:120:17 | call to operator+ | call to operator+ |
|
||||
| test.cpp:143:10:143:16 | command | test.cpp:140:9:140:11 | fread output argument | test.cpp:143:10:143:16 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:140:9:140:11 | fread output argument | user input (String read by fread) | test.cpp:142:11:142:17 | sprintf output argument | sprintf output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:177:13:177:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:178:13:178:19 | strncat output argument | strncat output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:180:13:180:19 | strncat output argument | strncat output argument |
|
||||
| test.cpp:198:32:198:38 | command | test.cpp:194:9:194:16 | fread output argument | test.cpp:198:32:198:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:194:9:194:16 | fread output argument | user input (String read by fread) | test.cpp:187:11:187:15 | strncat output argument | strncat output argument |
|
||||
| test.cpp:198:32:198:38 | command | test.cpp:194:9:194:16 | fread output argument | test.cpp:198:32:198:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:194:9:194:16 | fread output argument | user input (String read by fread) | test.cpp:188:11:188:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:222:32:222:38 | command | test.cpp:218:9:218:16 | fread output argument | test.cpp:222:32:222:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:218:9:218:16 | fread output argument | user input (String read by fread) | test.cpp:220:10:220:16 | strncat output argument | strncat output argument |
|
||||
| test.cpp:222:32:222:38 | command | test.cpp:218:9:218:16 | fread output argument | test.cpp:222:32:222:38 | command indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:218:9:218:16 | fread output argument | user input (String read by fread) | test.cpp:220:10:220:16 | strncat output argument | strncat output argument |
|
||||
| test.cpp:143:10:143:16 | command | test.cpp:140:9:140:11 | fread output argument | test.cpp:143:10:143:16 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:140:9:140:11 | fread output argument | user input (String read by fread) | test.cpp:142:11:142:17 | sprintf output argument | sprintf output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:177:13:177:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:178:13:178:19 | strncat output argument | strncat output argument |
|
||||
| test.cpp:183:32:183:38 | command | test.cpp:174:9:174:16 | fread output argument | test.cpp:183:32:183:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:174:9:174:16 | fread output argument | user input (String read by fread) | test.cpp:180:13:180:19 | strncat output argument | strncat output argument |
|
||||
| test.cpp:198:32:198:38 | command | test.cpp:194:9:194:16 | fread output argument | test.cpp:198:32:198:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:194:9:194:16 | fread output argument | user input (String read by fread) | test.cpp:187:11:187:15 | strncat output argument | strncat output argument |
|
||||
| test.cpp:198:32:198:38 | command | test.cpp:194:9:194:16 | fread output argument | test.cpp:198:32:198:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:194:9:194:16 | fread output argument | user input (String read by fread) | test.cpp:188:11:188:17 | strncat output argument | strncat output argument |
|
||||
| test.cpp:222:32:222:38 | command | test.cpp:218:9:218:16 | fread output argument | test.cpp:222:32:222:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:218:9:218:16 | fread output argument | user input (String read by fread) | test.cpp:220:10:220:16 | strncat output argument | strncat output argument |
|
||||
| test.cpp:222:32:222:38 | command | test.cpp:218:9:218:16 | fread output argument | test.cpp:222:32:222:38 | Convert indirection | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to execl. | test.cpp:218:9:218:16 | fread output argument | user input (String read by fread) | test.cpp:220:10:220:16 | strncat output argument | strncat output argument |
|
||||
|
||||
@@ -5,12 +5,12 @@ edges
|
||||
| test.cpp:37:73:37:76 | data indirection | test.cpp:43:32:43:35 | data |
|
||||
| test.cpp:37:73:37:76 | data indirection | test.cpp:43:32:43:35 | data |
|
||||
| test.cpp:37:73:37:76 | data indirection | test.cpp:43:32:43:35 | data |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | Load indirection |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | Load indirection |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | data |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | data |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | data indirection |
|
||||
| test.cpp:64:30:64:35 | call to getenv | test.cpp:73:24:73:27 | data indirection |
|
||||
| test.cpp:73:24:73:27 | Load indirection | test.cpp:37:73:37:76 | data indirection |
|
||||
| test.cpp:73:24:73:27 | data | test.cpp:37:73:37:76 | data |
|
||||
| test.cpp:73:24:73:27 | data indirection | test.cpp:37:73:37:76 | data indirection |
|
||||
subpaths
|
||||
nodes
|
||||
| test.cpp:37:73:37:76 | data | semmle.label | data |
|
||||
@@ -20,7 +20,7 @@ nodes
|
||||
| test.cpp:43:32:43:35 | data | semmle.label | data |
|
||||
| test.cpp:64:30:64:35 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:64:30:64:35 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:73:24:73:27 | Load indirection | semmle.label | Load indirection |
|
||||
| test.cpp:73:24:73:27 | data | semmle.label | data |
|
||||
| test.cpp:73:24:73:27 | data indirection | semmle.label | data indirection |
|
||||
#select
|
||||
| test.cpp:43:32:43:35 | data | test.cpp:64:30:64:35 | call to getenv | test.cpp:43:32:43:35 | data | The value of this argument may come from $@ and is being passed to LoadLibraryA. | test.cpp:64:30:64:35 | call to getenv | call to getenv |
|
||||
|
||||
@@ -31,33 +31,33 @@ edges
|
||||
| overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:65:9:65:13 | memcpy output argument |
|
||||
| overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:65:9:65:13 | memcpy output argument |
|
||||
| overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:65:9:65:13 | memcpy output argument |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | Convert indirection |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | src |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | src indirection |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | Convert indirection |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | src |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | src indirection |
|
||||
| overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument | overflowdestination.cpp:76:24:76:27 | Convert indirection |
|
||||
| overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument | overflowdestination.cpp:76:24:76:27 | dest |
|
||||
| overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument | overflowdestination.cpp:76:24:76:27 | dest indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | overflowdestination.cpp:50:52:50:54 | src indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | overflowdestination.cpp:76:30:76:32 | Convert indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | overflowdestination.cpp:76:30:76:32 | src |
|
||||
| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | overflowdestination.cpp:76:30:76:32 | src indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | Convert indirection | overflowdestination.cpp:57:40:57:43 | dest indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | Convert indirection | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | overflowdestination.cpp:57:40:57:43 | dest |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest indirection | overflowdestination.cpp:57:40:57:43 | dest indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest indirection | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument | overflowdestination.cpp:76:24:76:27 | Convert indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument | overflowdestination.cpp:76:24:76:27 | dest |
|
||||
| overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument | overflowdestination.cpp:76:24:76:27 | dest indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | overflowdestination.cpp:57:52:57:54 | src indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument | overflowdestination.cpp:76:30:76:32 | Convert indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument | overflowdestination.cpp:76:30:76:32 | src |
|
||||
| overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument | overflowdestination.cpp:76:30:76:32 | src indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:57:52:57:54 | src indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
nodes
|
||||
| overflowdestination.cpp:27:9:27:12 | argv | semmle.label | argv |
|
||||
| overflowdestination.cpp:30:17:30:20 | arg1 | semmle.label | arg1 |
|
||||
@@ -87,35 +87,35 @@ nodes
|
||||
| overflowdestination.cpp:65:9:65:13 | memcpy output argument | semmle.label | memcpy output argument |
|
||||
| overflowdestination.cpp:73:8:73:10 | fgets output argument | semmle.label | fgets output argument |
|
||||
| overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument | semmle.label | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | semmle.label | Convert indirection |
|
||||
| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | semmle.label | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | semmle.label | src |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | semmle.label | src indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | Convert indirection | semmle.label | Convert indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | semmle.label | dest |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest indirection | semmle.label | dest indirection |
|
||||
| overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument | semmle.label | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | semmle.label | Convert indirection |
|
||||
| overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument | semmle.label | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | semmle.label | src |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | semmle.label | src indirection |
|
||||
subpaths
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:52:9:52:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | Convert indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src | overflowdestination.cpp:52:9:52:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src | overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src | overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src | overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src | overflowdestination.cpp:50:52:50:54 | src | overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:52:9:52:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:75:24:75:27 | overflowdest_test2 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | Convert indirection | overflowdestination.cpp:57:40:57:43 | dest indirection | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | overflowdestination.cpp:57:40:57:43 | dest | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest | overflowdestination.cpp:57:40:57:43 | dest | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:24:76:27 | dest indirection | overflowdestination.cpp:57:40:57:43 | dest indirection | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:63:9:63:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:64:9:64:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | Convert indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src | overflowdestination.cpp:63:9:63:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src | overflowdestination.cpp:64:9:64:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src | overflowdestination.cpp:64:9:64:13 | memcpy output argument | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src | overflowdestination.cpp:57:52:57:54 | src | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:30:76:32 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:63:9:63:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:64:9:64:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
| overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:65:9:65:13 | memcpy output argument | overflowdestination.cpp:76:24:76:27 | overflowdest_test3 output argument |
|
||||
#select
|
||||
| overflowdestination.cpp:30:2:30:8 | call to strncpy | overflowdestination.cpp:27:9:27:12 | argv | overflowdestination.cpp:30:17:30:20 | arg1 | To avoid overflow, this operation should be bounded by destination-buffer size, not source-buffer size. |
|
||||
| overflowdestination.cpp:46:2:46:7 | call to memcpy | overflowdestination.cpp:43:8:43:10 | fgets output argument | overflowdestination.cpp:46:15:46:17 | src | To avoid overflow, this operation should be bounded by destination-buffer size, not source-buffer size. |
|
||||
|
||||
@@ -43,6 +43,8 @@ edges
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:110:9:110:11 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:110:9:110:11 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:110:9:110:11 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:110:9:110:11 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:110:9:110:11 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:111:15:111:17 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:111:15:111:17 | * ... |
|
||||
| argvLocal.c:105:14:105:17 | argv | argvLocal.c:111:15:111:17 | * ... |
|
||||
@@ -164,6 +166,7 @@ nodes
|
||||
| argvLocal.c:107:15:107:19 | access to array | semmle.label | access to array |
|
||||
| argvLocal.c:110:9:110:11 | * ... | semmle.label | * ... |
|
||||
| argvLocal.c:110:9:110:11 | * ... | semmle.label | * ... |
|
||||
| argvLocal.c:110:9:110:11 | * ... | semmle.label | * ... |
|
||||
| argvLocal.c:111:15:111:17 | * ... | semmle.label | * ... |
|
||||
| argvLocal.c:111:15:111:17 | * ... | semmle.label | * ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | semmle.label | argv |
|
||||
|
||||
@@ -63,23 +63,23 @@ edges
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:10:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:10:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | * ... | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:9:47:11 | * ... |
|
||||
| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:10:47:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:10:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:10:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | gets output argument | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | gets output argument | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | gets output argument | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | gets output argument | funcsLocal.c:53:10:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | i81 | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | i81 | funcsLocal.c:53:9:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | i81 | funcsLocal.c:53:10:53:11 | * ... |
|
||||
| funcsLocal.c:52:13:52:15 | i81 | funcsLocal.c:53:9:53:11 | * ... |
|
||||
subpaths
|
||||
nodes
|
||||
| funcsLocal.c:16:8:16:9 | fread output argument | semmle.label | fread output argument |
|
||||
@@ -119,14 +119,14 @@ nodes
|
||||
| funcsLocal.c:46:7:46:9 | gets output argument | semmle.label | gets output argument |
|
||||
| funcsLocal.c:47:9:47:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:47:9:47:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:47:10:47:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:47:9:47:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | semmle.label | call to gets |
|
||||
| funcsLocal.c:52:8:52:11 | call to gets | semmle.label | call to gets |
|
||||
| funcsLocal.c:52:13:52:15 | gets output argument | semmle.label | gets output argument |
|
||||
| funcsLocal.c:52:13:52:15 | i81 | semmle.label | i81 |
|
||||
| funcsLocal.c:53:9:53:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:53:9:53:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:53:10:53:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:53:9:53:11 | * ... | semmle.label | * ... |
|
||||
| funcsLocal.c:58:9:58:10 | e1 | semmle.label | e1 |
|
||||
| funcsLocal.c:58:9:58:10 | e1 | semmle.label | e1 |
|
||||
| funcsLocal.c:58:9:58:10 | e1 | semmle.label | e1 |
|
||||
|
||||
@@ -13,16 +13,19 @@ edges
|
||||
| globalVars.c:24:11:24:14 | argv | globalVars.c:11:22:11:25 | argv |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | globalVars.c:30:15:30:18 | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | globalVars.c:30:15:30:18 | copy |
|
||||
| globalVars.c:35:11:35:14 | Load | globalVars.c:35:11:35:14 | copy |
|
||||
| globalVars.c:35:11:35:14 | copy | globalVars.c:15:21:15:23 | val |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | globalVars.c:41:15:41:19 | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | globalVars.c:41:15:41:19 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
subpaths
|
||||
nodes
|
||||
| globalVars.c:8:7:8:10 | copy | semmle.label | copy |
|
||||
@@ -36,6 +39,7 @@ nodes
|
||||
| globalVars.c:27:9:27:12 | Load | semmle.label | Load |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | semmle.label | Load |
|
||||
| globalVars.c:30:15:30:18 | copy | semmle.label | copy |
|
||||
| globalVars.c:30:15:30:18 | copy | semmle.label | copy |
|
||||
@@ -44,12 +48,14 @@ nodes
|
||||
| globalVars.c:38:9:38:13 | Load | semmle.label | Load |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | semmle.label | Load |
|
||||
| globalVars.c:41:15:41:19 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:41:15:41:19 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | semmle.label | Load |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
#select
|
||||
| globalVars.c:27:9:27:12 | copy | globalVars.c:24:11:24:14 | argv | globalVars.c:27:9:27:12 | copy | The value of this argument may come from $@ and is being used as a formatting argument to printf(format). | globalVars.c:24:11:24:14 | argv | argv |
|
||||
| globalVars.c:30:15:30:18 | copy | globalVars.c:24:11:24:14 | argv | globalVars.c:30:15:30:18 | copy | The value of this argument may come from $@ and is being used as a formatting argument to printWrapper(str), which calls printf(format). | globalVars.c:24:11:24:14 | argv | argv |
|
||||
|
||||
@@ -13,16 +13,19 @@ edges
|
||||
| globalVars.c:24:11:24:14 | argv | globalVars.c:11:22:11:25 | argv |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:27:9:27:12 | Load | globalVars.c:27:9:27:12 | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | globalVars.c:30:15:30:18 | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | globalVars.c:30:15:30:18 | copy |
|
||||
| globalVars.c:35:11:35:14 | Load | globalVars.c:35:11:35:14 | copy |
|
||||
| globalVars.c:35:11:35:14 | copy | globalVars.c:15:21:15:23 | val |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:38:9:38:13 | Load | globalVars.c:38:9:38:13 | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | globalVars.c:41:15:41:19 | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | globalVars.c:41:15:41:19 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | globalVars.c:50:9:50:13 | copy2 |
|
||||
subpaths
|
||||
nodes
|
||||
| globalVars.c:8:7:8:10 | copy | semmle.label | copy |
|
||||
@@ -36,6 +39,7 @@ nodes
|
||||
| globalVars.c:27:9:27:12 | Load | semmle.label | Load |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:27:9:27:12 | copy | semmle.label | copy |
|
||||
| globalVars.c:30:15:30:18 | Load | semmle.label | Load |
|
||||
| globalVars.c:30:15:30:18 | copy | semmle.label | copy |
|
||||
| globalVars.c:30:15:30:18 | copy | semmle.label | copy |
|
||||
@@ -44,12 +48,14 @@ nodes
|
||||
| globalVars.c:38:9:38:13 | Load | semmle.label | Load |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:38:9:38:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:41:15:41:19 | Load | semmle.label | Load |
|
||||
| globalVars.c:41:15:41:19 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:41:15:41:19 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | Load | semmle.label | Load |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
| globalVars.c:50:9:50:13 | copy2 | semmle.label | copy2 |
|
||||
#select
|
||||
| globalVars.c:27:9:27:12 | copy | globalVars.c:24:11:24:14 | argv | globalVars.c:27:9:27:12 | copy | The value of this argument may come from $@ and is being used as a formatting argument to printf(format). | globalVars.c:24:11:24:14 | argv | argv |
|
||||
| globalVars.c:30:15:30:18 | copy | globalVars.c:24:11:24:14 | argv | globalVars.c:30:15:30:18 | copy | The value of this argument may come from $@ and is being used as a formatting argument to printWrapper(str), which calls printf(format). | globalVars.c:24:11:24:14 | argv | argv |
|
||||
|
||||
@@ -19,12 +19,6 @@ edges
|
||||
| test.cpp:18:9:18:12 | call to rand | test.cpp:16:21:16:24 | Load indirection |
|
||||
| test.cpp:30:13:30:14 | get_rand2 output argument | test.cpp:31:7:31:7 | r |
|
||||
| test.cpp:36:13:36:13 | get_rand3 output argument | test.cpp:37:7:37:7 | r |
|
||||
| test.cpp:71:23:71:31 | buf_start indirection | test.cpp:75:9:75:11 | len |
|
||||
| test.cpp:71:40:71:46 | buf_end indirection | test.cpp:75:9:75:11 | len |
|
||||
| test.cpp:80:50:80:53 | call to rand | test.cpp:81:14:81:16 | buf indirection |
|
||||
| test.cpp:80:50:80:53 | call to rand | test.cpp:81:19:81:30 | ... + ... indirection |
|
||||
| test.cpp:81:14:81:16 | buf indirection | test.cpp:71:23:71:31 | buf_start indirection |
|
||||
| test.cpp:81:19:81:30 | ... + ... indirection | test.cpp:71:40:71:46 | buf_end indirection |
|
||||
| test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x |
|
||||
| test.cpp:98:10:98:13 | call to rand | test.cpp:102:10:102:10 | x |
|
||||
| test.cpp:137:10:137:13 | call to rand | test.cpp:146:9:146:9 | y |
|
||||
@@ -71,12 +65,6 @@ nodes
|
||||
| test.cpp:31:7:31:7 | r | semmle.label | r |
|
||||
| test.cpp:36:13:36:13 | get_rand3 output argument | semmle.label | get_rand3 output argument |
|
||||
| test.cpp:37:7:37:7 | r | semmle.label | r |
|
||||
| test.cpp:71:23:71:31 | buf_start indirection | semmle.label | buf_start indirection |
|
||||
| test.cpp:71:40:71:46 | buf_end indirection | semmle.label | buf_end indirection |
|
||||
| test.cpp:75:9:75:11 | len | semmle.label | len |
|
||||
| test.cpp:80:50:80:53 | call to rand | semmle.label | call to rand |
|
||||
| test.cpp:81:14:81:16 | buf indirection | semmle.label | buf indirection |
|
||||
| test.cpp:81:19:81:30 | ... + ... indirection | semmle.label | ... + ... indirection |
|
||||
| test.cpp:86:10:86:13 | call to rand | semmle.label | call to rand |
|
||||
| test.cpp:90:10:90:10 | x | semmle.label | x |
|
||||
| test.cpp:98:10:98:13 | call to rand | semmle.label | call to rand |
|
||||
@@ -115,7 +103,6 @@ subpaths
|
||||
| test.cpp:25:7:25:7 | r | test.cpp:8:9:8:12 | call to rand | test.cpp:25:7:25:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:8:9:8:12 | call to rand | uncontrolled value |
|
||||
| test.cpp:31:7:31:7 | r | test.cpp:13:10:13:13 | call to rand | test.cpp:31:7:31:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:13:10:13:13 | call to rand | uncontrolled value |
|
||||
| test.cpp:37:7:37:7 | r | test.cpp:18:9:18:12 | call to rand | test.cpp:37:7:37:7 | r | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:18:9:18:12 | call to rand | uncontrolled value |
|
||||
| test.cpp:75:9:75:11 | len | test.cpp:80:50:80:53 | call to rand | test.cpp:75:9:75:11 | len | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:80:50:80:53 | call to rand | uncontrolled value |
|
||||
| test.cpp:90:10:90:10 | x | test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:86:10:86:13 | call to rand | uncontrolled value |
|
||||
| test.cpp:102:10:102:10 | x | test.cpp:98:10:98:13 | call to rand | test.cpp:102:10:102:10 | x | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:98:10:98:13 | call to rand | uncontrolled value |
|
||||
| test.cpp:146:9:146:9 | y | test.cpp:137:10:137:13 | call to rand | test.cpp:146:9:146:9 | y | This arithmetic expression depends on an $@, potentially causing an overflow. | test.cpp:137:10:137:13 | call to rand | uncontrolled value |
|
||||
|
||||
@@ -5,12 +5,6 @@ edges
|
||||
| test.cpp:40:21:40:24 | argv | test.cpp:49:32:49:35 | size |
|
||||
| test.cpp:40:21:40:24 | argv | test.cpp:50:26:50:29 | size |
|
||||
| test.cpp:40:21:40:24 | argv | test.cpp:53:35:53:60 | ... * ... |
|
||||
| test.cpp:76:25:76:29 | start indirection | test.cpp:80:18:80:28 | ... - ... |
|
||||
| test.cpp:76:38:76:40 | end indirection | test.cpp:80:18:80:28 | ... - ... |
|
||||
| test.cpp:98:18:98:23 | fread output argument | test.cpp:102:17:102:22 | buffer indirection |
|
||||
| test.cpp:98:18:98:23 | fread output argument | test.cpp:102:25:102:39 | ... + ... indirection |
|
||||
| test.cpp:102:17:102:22 | buffer indirection | test.cpp:76:25:76:29 | start indirection |
|
||||
| test.cpp:102:25:102:39 | ... + ... indirection | test.cpp:76:38:76:40 | end indirection |
|
||||
| test.cpp:124:18:124:23 | call to getenv | test.cpp:125:29:125:32 | size |
|
||||
| test.cpp:124:18:124:23 | call to getenv | test.cpp:128:24:128:41 | ... * ... |
|
||||
| test.cpp:124:18:124:31 | call to getenv indirection | test.cpp:125:29:125:32 | size |
|
||||
@@ -48,8 +42,6 @@ edges
|
||||
| test.cpp:259:20:259:33 | call to getenv indirection | test.cpp:263:11:263:29 | ... * ... |
|
||||
| test.cpp:289:17:289:20 | get_size output argument | test.cpp:291:11:291:28 | ... * ... |
|
||||
| test.cpp:305:18:305:21 | get_size output argument | test.cpp:308:10:308:27 | ... * ... |
|
||||
| test.cpp:331:15:331:20 | Call | test.cpp:334:9:334:14 | offset |
|
||||
| test.cpp:331:15:331:20 | call to getenv indirection | test.cpp:334:9:334:14 | offset |
|
||||
nodes
|
||||
| test.cpp:40:21:40:24 | argv | semmle.label | argv |
|
||||
| test.cpp:43:38:43:44 | tainted | semmle.label | tainted |
|
||||
@@ -58,12 +50,6 @@ nodes
|
||||
| test.cpp:49:32:49:35 | size | semmle.label | size |
|
||||
| test.cpp:50:26:50:29 | size | semmle.label | size |
|
||||
| test.cpp:53:35:53:60 | ... * ... | semmle.label | ... * ... |
|
||||
| test.cpp:76:25:76:29 | start indirection | semmle.label | start indirection |
|
||||
| test.cpp:76:38:76:40 | end indirection | semmle.label | end indirection |
|
||||
| test.cpp:80:18:80:28 | ... - ... | semmle.label | ... - ... |
|
||||
| test.cpp:98:18:98:23 | fread output argument | semmle.label | fread output argument |
|
||||
| test.cpp:102:17:102:22 | buffer indirection | semmle.label | buffer indirection |
|
||||
| test.cpp:102:25:102:39 | ... + ... indirection | semmle.label | ... + ... indirection |
|
||||
| test.cpp:124:18:124:23 | call to getenv | semmle.label | call to getenv |
|
||||
| test.cpp:124:18:124:31 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:125:29:125:32 | size | semmle.label | size |
|
||||
@@ -108,9 +94,6 @@ nodes
|
||||
| test.cpp:291:11:291:28 | ... * ... | semmle.label | ... * ... |
|
||||
| test.cpp:305:18:305:21 | get_size output argument | semmle.label | get_size output argument |
|
||||
| test.cpp:308:10:308:27 | ... * ... | semmle.label | ... * ... |
|
||||
| test.cpp:331:15:331:20 | Call | semmle.label | Call |
|
||||
| test.cpp:331:15:331:20 | call to getenv indirection | semmle.label | call to getenv indirection |
|
||||
| test.cpp:334:9:334:14 | offset | semmle.label | offset |
|
||||
subpaths
|
||||
#select
|
||||
| test.cpp:43:31:43:36 | call to malloc | test.cpp:40:21:40:24 | argv | test.cpp:43:38:43:44 | tainted | This allocation size is derived from $@ and might overflow. | test.cpp:40:21:40:24 | argv | user input (a command-line argument) |
|
||||
@@ -119,7 +102,6 @@ subpaths
|
||||
| test.cpp:49:25:49:30 | call to malloc | test.cpp:40:21:40:24 | argv | test.cpp:49:32:49:35 | size | This allocation size is derived from $@ and might overflow. | test.cpp:40:21:40:24 | argv | user input (a command-line argument) |
|
||||
| test.cpp:50:17:50:30 | new[] | test.cpp:40:21:40:24 | argv | test.cpp:50:26:50:29 | size | This allocation size is derived from $@ and might overflow. | test.cpp:40:21:40:24 | argv | user input (a command-line argument) |
|
||||
| test.cpp:53:21:53:27 | call to realloc | test.cpp:40:21:40:24 | argv | test.cpp:53:35:53:60 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:40:21:40:24 | argv | user input (a command-line argument) |
|
||||
| test.cpp:80:9:80:29 | new[] | test.cpp:98:18:98:23 | fread output argument | test.cpp:80:18:80:28 | ... - ... | This allocation size is derived from $@ and might overflow. | test.cpp:98:18:98:23 | fread output argument | user input (String read by fread) |
|
||||
| test.cpp:127:17:127:22 | call to malloc | test.cpp:124:18:124:23 | call to getenv | test.cpp:127:24:127:49 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:124:18:124:23 | call to getenv | user input (an environment variable) |
|
||||
| test.cpp:127:17:127:22 | call to malloc | test.cpp:124:18:124:31 | call to getenv indirection | test.cpp:127:24:127:49 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:124:18:124:31 | call to getenv indirection | user input (an environment variable) |
|
||||
| test.cpp:128:17:128:22 | call to malloc | test.cpp:124:18:124:23 | call to getenv | test.cpp:128:24:128:41 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:124:18:124:23 | call to getenv | user input (an environment variable) |
|
||||
@@ -148,5 +130,3 @@ subpaths
|
||||
| test.cpp:291:4:291:9 | call to malloc | test.cpp:251:18:251:31 | call to getenv indirection | test.cpp:291:11:291:28 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:251:18:251:31 | call to getenv indirection | user input (an environment variable) |
|
||||
| test.cpp:308:3:308:8 | call to malloc | test.cpp:251:18:251:23 | call to getenv | test.cpp:308:10:308:27 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:251:18:251:23 | call to getenv | user input (an environment variable) |
|
||||
| test.cpp:308:3:308:8 | call to malloc | test.cpp:251:18:251:31 | call to getenv indirection | test.cpp:308:10:308:27 | ... * ... | This allocation size is derived from $@ and might overflow. | test.cpp:251:18:251:31 | call to getenv indirection | user input (an environment variable) |
|
||||
| test.cpp:334:2:334:7 | call to malloc | test.cpp:331:15:331:20 | Call | test.cpp:334:9:334:14 | offset | This allocation size is derived from $@ and might overflow. | test.cpp:331:15:331:20 | Call | user input (an environment variable) |
|
||||
| test.cpp:334:2:334:7 | call to malloc | test.cpp:331:15:331:20 | call to getenv indirection | test.cpp:334:9:334:14 | offset | This allocation size is derived from $@ and might overflow. | test.cpp:331:15:331:20 | call to getenv indirection | user input (an environment variable) |
|
||||
|
||||
@@ -6,6 +6,10 @@ edges
|
||||
| test2.cpp:72:17:72:24 | password | test2.cpp:76:30:76:32 | buf |
|
||||
| test2.cpp:98:45:98:52 | password | test2.cpp:99:27:99:32 | buffer |
|
||||
| test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword |
|
||||
| test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword |
|
||||
| test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
@@ -15,6 +19,8 @@ edges
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:70:38:70:48 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
| test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword |
|
||||
nodes
|
||||
@@ -65,6 +71,8 @@ subpaths
|
||||
| test.cpp:45:3:45:7 | call to fputs | test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword | This write into file 'file' may contain unencrypted data from $@. | test.cpp:45:9:45:19 | thePassword | this source. |
|
||||
| test.cpp:45:3:45:7 | call to fputs | test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword | This write into file 'file' may contain unencrypted data from $@. | test.cpp:45:9:45:19 | thePassword | this source. |
|
||||
| test.cpp:45:3:45:7 | call to fputs | test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword | This write into file 'file' may contain unencrypted data from $@. | test.cpp:45:9:45:19 | thePassword | this source. |
|
||||
| test.cpp:45:3:45:7 | call to fputs | test.cpp:45:9:45:19 | thePassword | test.cpp:45:9:45:19 | thePassword | This write into file 'file' may contain unencrypted data from $@. | test.cpp:45:9:45:19 | thePassword | this source. |
|
||||
| test.cpp:70:35:70:35 | call to operator<< | test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:70:38:70:48 | thePassword | this source. |
|
||||
| test.cpp:70:35:70:35 | call to operator<< | test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:70:38:70:48 | thePassword | this source. |
|
||||
| test.cpp:70:35:70:35 | call to operator<< | test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:70:38:70:48 | thePassword | this source. |
|
||||
| test.cpp:70:35:70:35 | call to operator<< | test.cpp:70:38:70:48 | thePassword | test.cpp:70:38:70:48 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:70:38:70:48 | thePassword | this source. |
|
||||
@@ -75,5 +83,6 @@ subpaths
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:43:73:53 | thePassword | this source. |
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:43:73:53 | thePassword | this source. |
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:43:73:53 | thePassword | this source. |
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:43:73:53 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:43:73:53 | thePassword | this source. |
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:63:73:73 | thePassword | this source. |
|
||||
| test.cpp:73:37:73:41 | call to write | test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword | This write into file 'mystream' may contain unencrypted data from $@. | test.cpp:73:63:73:73 | thePassword | this source. |
|
||||
|
||||
@@ -19,18 +19,18 @@ edges
|
||||
| test3.cpp:124:7:124:20 | VariableAddress indirection | test3.cpp:146:15:146:18 | data |
|
||||
| test3.cpp:126:9:126:23 | global_password indirection | test3.cpp:124:7:124:20 | VariableAddress indirection |
|
||||
| test3.cpp:126:9:126:23 | global_password indirection | test3.cpp:124:7:124:20 | VariableAddress indirection |
|
||||
| test3.cpp:134:11:134:18 | Convert indirection | test3.cpp:112:20:112:25 | buffer indirection |
|
||||
| test3.cpp:134:11:134:18 | password | test3.cpp:112:20:112:25 | buffer |
|
||||
| test3.cpp:134:11:134:18 | password indirection | test3.cpp:112:20:112:25 | buffer indirection |
|
||||
| test3.cpp:134:11:134:18 | password indirection | test3.cpp:134:11:134:18 | Convert indirection |
|
||||
| test3.cpp:134:11:134:18 | password indirection | test3.cpp:134:11:134:18 | password |
|
||||
| test3.cpp:134:11:134:18 | password indirection | test3.cpp:134:11:134:18 | password indirection |
|
||||
| test3.cpp:138:21:138:22 | call to id indirection | test3.cpp:140:15:140:17 | ptr |
|
||||
| test3.cpp:138:24:138:32 | Load indirection | test3.cpp:117:28:117:33 | buffer indirection |
|
||||
| test3.cpp:138:24:138:32 | Load indirection | test3.cpp:138:21:138:22 | call to id indirection |
|
||||
| test3.cpp:138:24:138:32 | Load indirection | test3.cpp:140:15:140:17 | ptr |
|
||||
| test3.cpp:138:24:138:32 | password1 | test3.cpp:140:15:140:17 | ptr |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:117:28:117:33 | buffer indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:138:21:138:22 | call to id indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:138:24:138:32 | Load indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:138:24:138:32 | password1 |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:138:24:138:32 | password1 |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:138:24:138:32 | password1 indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:140:15:140:17 | ptr |
|
||||
| test3.cpp:144:16:144:29 | call to get_global_str indirection | test3.cpp:146:15:146:18 | data |
|
||||
| test3.cpp:157:19:157:26 | password indirection | test3.cpp:159:15:159:20 | buffer |
|
||||
| test3.cpp:157:19:157:26 | password indirection | test3.cpp:159:15:159:20 | buffer |
|
||||
@@ -64,34 +64,34 @@ edges
|
||||
| test3.cpp:293:20:293:23 | data indirection | test3.cpp:295:14:295:17 | data |
|
||||
| test3.cpp:298:20:298:23 | data | test3.cpp:300:14:300:17 | data |
|
||||
| test3.cpp:298:20:298:23 | data indirection | test3.cpp:300:14:300:17 | data |
|
||||
| test3.cpp:313:11:313:19 | Load indirection | test3.cpp:278:20:278:23 | data indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 | test3.cpp:278:20:278:23 | data |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | test3.cpp:278:20:278:23 | data indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | test3.cpp:313:11:313:19 | Load indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | test3.cpp:313:11:313:19 | password1 |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | test3.cpp:313:11:313:19 | password1 |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | test3.cpp:313:11:313:19 | password1 indirection |
|
||||
| test3.cpp:314:11:314:19 | Load indirection | test3.cpp:283:20:283:23 | data indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 | test3.cpp:283:20:283:23 | data |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | test3.cpp:283:20:283:23 | data indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | test3.cpp:314:11:314:19 | Load indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | test3.cpp:314:11:314:19 | password1 |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | test3.cpp:314:11:314:19 | password1 |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | test3.cpp:314:11:314:19 | password1 indirection |
|
||||
| test3.cpp:316:11:316:19 | Load indirection | test3.cpp:283:20:283:23 | data indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 | test3.cpp:283:20:283:23 | data |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | test3.cpp:283:20:283:23 | data indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | test3.cpp:316:11:316:19 | Load indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | test3.cpp:316:11:316:19 | password1 |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | test3.cpp:316:11:316:19 | password1 |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | test3.cpp:316:11:316:19 | password1 indirection |
|
||||
| test3.cpp:317:11:317:19 | Load indirection | test3.cpp:288:20:288:23 | data indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 | test3.cpp:288:20:288:23 | data |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | test3.cpp:288:20:288:23 | data indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | test3.cpp:317:11:317:19 | Load indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | test3.cpp:317:11:317:19 | password1 |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | test3.cpp:317:11:317:19 | password1 |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | test3.cpp:317:11:317:19 | password1 indirection |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:324:11:324:14 | Load indirection |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:324:11:324:14 | data |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:324:11:324:14 | data indirection |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:325:11:325:14 | Load indirection |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:325:11:325:14 | data |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | test3.cpp:325:11:325:14 | data indirection |
|
||||
| test3.cpp:324:11:324:14 | Load indirection | test3.cpp:293:20:293:23 | data indirection |
|
||||
| test3.cpp:324:11:324:14 | data | test3.cpp:293:20:293:23 | data |
|
||||
| test3.cpp:324:11:324:14 | data indirection | test3.cpp:293:20:293:23 | data indirection |
|
||||
| test3.cpp:325:11:325:14 | Load indirection | test3.cpp:298:20:298:23 | data indirection |
|
||||
| test3.cpp:325:11:325:14 | data | test3.cpp:298:20:298:23 | data |
|
||||
| test3.cpp:325:11:325:14 | data indirection | test3.cpp:298:20:298:23 | data indirection |
|
||||
| test3.cpp:341:16:341:23 | password indirection | test3.cpp:341:16:341:23 | password |
|
||||
| test3.cpp:352:16:352:23 | password indirection | test3.cpp:352:16:352:23 | password |
|
||||
| test3.cpp:368:15:368:22 | password indirection | test3.cpp:368:15:368:22 | password |
|
||||
@@ -145,14 +145,14 @@ nodes
|
||||
| test3.cpp:124:7:124:20 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| test3.cpp:124:7:124:20 | VariableAddress indirection | semmle.label | VariableAddress indirection |
|
||||
| test3.cpp:126:9:126:23 | global_password indirection | semmle.label | global_password indirection |
|
||||
| test3.cpp:134:11:134:18 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test3.cpp:134:11:134:18 | password | semmle.label | password |
|
||||
| test3.cpp:134:11:134:18 | password indirection | semmle.label | password indirection |
|
||||
| test3.cpp:134:11:134:18 | password indirection | semmle.label | password indirection |
|
||||
| test3.cpp:138:21:138:22 | call to id indirection | semmle.label | call to id indirection |
|
||||
| test3.cpp:138:24:138:32 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:140:15:140:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:144:16:144:29 | call to get_global_str indirection | semmle.label | call to get_global_str indirection |
|
||||
| test3.cpp:146:15:146:18 | data | semmle.label | data |
|
||||
@@ -205,27 +205,27 @@ nodes
|
||||
| test3.cpp:298:20:298:23 | data | semmle.label | data |
|
||||
| test3.cpp:298:20:298:23 | data indirection | semmle.label | data indirection |
|
||||
| test3.cpp:300:14:300:17 | data | semmle.label | data |
|
||||
| test3.cpp:313:11:313:19 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:313:11:313:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:314:11:314:19 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:314:11:314:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:316:11:316:19 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:316:11:316:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:317:11:317:19 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:317:11:317:19 | password1 indirection | semmle.label | password1 indirection |
|
||||
| test3.cpp:322:16:322:24 | password2 indirection | semmle.label | password2 indirection |
|
||||
| test3.cpp:324:11:324:14 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:324:11:324:14 | data | semmle.label | data |
|
||||
| test3.cpp:324:11:324:14 | data indirection | semmle.label | data indirection |
|
||||
| test3.cpp:325:11:325:14 | Load indirection | semmle.label | Load indirection |
|
||||
| test3.cpp:325:11:325:14 | data | semmle.label | data |
|
||||
| test3.cpp:325:11:325:14 | data indirection | semmle.label | data indirection |
|
||||
| test3.cpp:341:16:341:23 | password | semmle.label | password |
|
||||
| test3.cpp:341:16:341:23 | password indirection | semmle.label | password indirection |
|
||||
| test3.cpp:352:16:352:23 | password | semmle.label | password |
|
||||
@@ -275,7 +275,7 @@ nodes
|
||||
| test3.cpp:577:8:577:23 | call to get_home_address | semmle.label | call to get_home_address |
|
||||
| test3.cpp:578:14:578:16 | str | semmle.label | str |
|
||||
subpaths
|
||||
| test3.cpp:138:24:138:32 | password1 indirection | test3.cpp:117:28:117:33 | buffer indirection | test3.cpp:117:13:117:14 | VariableAddress indirection | test3.cpp:138:21:138:22 | call to id indirection |
|
||||
| test3.cpp:138:24:138:32 | Load indirection | test3.cpp:117:28:117:33 | buffer indirection | test3.cpp:117:13:117:14 | VariableAddress indirection | test3.cpp:138:21:138:22 | call to id indirection |
|
||||
#select
|
||||
| test3.cpp:22:3:22:6 | call to send | test3.cpp:20:28:20:36 | password1 indirection | test3.cpp:22:15:22:23 | password1 | This operation transmits 'password1', which may contain unencrypted sensitive data from $@. | test3.cpp:20:28:20:36 | password1 indirection | password1 indirection |
|
||||
| test3.cpp:22:3:22:6 | call to send | test3.cpp:20:28:20:36 | password1 indirection | test3.cpp:22:15:22:23 | password1 | This operation transmits 'password1', which may contain unencrypted sensitive data from $@. | test3.cpp:20:28:20:36 | password1 indirection | password1 indirection |
|
||||
|
||||
@@ -18,20 +18,20 @@ edges
|
||||
| test.cpp:39:11:39:15 | url_l | test.cpp:11:26:11:28 | url |
|
||||
| test.cpp:40:11:40:17 | access to array | test.cpp:11:26:11:28 | url |
|
||||
| test.cpp:40:11:40:17 | access to array indirection | test.cpp:11:26:11:28 | url indirection |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | Convert indirection |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | Convert indirection |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | buffer |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | buffer |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | buffer indirection |
|
||||
| test.cpp:46:18:46:26 | http:// | test.cpp:49:11:49:16 | buffer indirection |
|
||||
| test.cpp:49:11:49:16 | Convert indirection | test.cpp:11:26:11:28 | url indirection |
|
||||
| test.cpp:49:11:49:16 | buffer | test.cpp:11:26:11:28 | url |
|
||||
| test.cpp:49:11:49:16 | buffer indirection | test.cpp:11:26:11:28 | url indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | Convert indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | Convert indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | Convert indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | test.cpp:121:11:121:13 | ptr indirection |
|
||||
| test.cpp:121:11:121:13 | Convert indirection | test.cpp:11:26:11:28 | url indirection |
|
||||
| test.cpp:121:11:121:13 | ptr | test.cpp:11:26:11:28 | url |
|
||||
| test.cpp:121:11:121:13 | ptr indirection | test.cpp:11:26:11:28 | url indirection |
|
||||
nodes
|
||||
| test.cpp:11:26:11:28 | url | semmle.label | url |
|
||||
| test.cpp:11:26:11:28 | url indirection | semmle.label | url indirection |
|
||||
@@ -53,13 +53,13 @@ nodes
|
||||
| test.cpp:40:11:40:17 | access to array indirection | semmle.label | access to array indirection |
|
||||
| test.cpp:46:18:46:26 | http:// | semmle.label | http:// |
|
||||
| test.cpp:46:18:46:26 | http:// | semmle.label | http:// |
|
||||
| test.cpp:49:11:49:16 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:49:11:49:16 | buffer | semmle.label | buffer |
|
||||
| test.cpp:49:11:49:16 | buffer indirection | semmle.label | buffer indirection |
|
||||
| test.cpp:110:21:110:40 | http://example.com | semmle.label | http://example.com |
|
||||
| test.cpp:110:21:110:40 | http://example.com | semmle.label | http://example.com |
|
||||
| test.cpp:110:21:110:40 | http://example.com | semmle.label | http://example.com |
|
||||
| test.cpp:121:11:121:13 | Convert indirection | semmle.label | Convert indirection |
|
||||
| test.cpp:121:11:121:13 | ptr | semmle.label | ptr |
|
||||
| test.cpp:121:11:121:13 | ptr indirection | semmle.label | ptr indirection |
|
||||
subpaths
|
||||
#select
|
||||
| test.cpp:24:21:24:40 | http://example.com | test.cpp:24:21:24:40 | http://example.com | test.cpp:15:30:15:32 | url | This URL may be constructed with the HTTP protocol. |
|
||||
|
||||
@@ -15,9 +15,9 @@ edges
|
||||
| tests2.cpp:109:6:109:8 | c1 indirection [post update] [ptr] | tests2.cpp:111:14:111:15 | c1 indirection [ptr] |
|
||||
| tests2.cpp:109:12:109:17 | call to getenv | tests2.cpp:109:3:109:36 | Store |
|
||||
| tests2.cpp:111:14:111:15 | c1 indirection [ptr] | tests2.cpp:111:14:111:19 | ptr |
|
||||
| tests2.cpp:111:14:111:15 | c1 indirection [ptr] | tests2.cpp:111:17:111:19 | ptr |
|
||||
| tests2.cpp:111:14:111:15 | c1 indirection [ptr] | tests2.cpp:111:17:111:19 | ptr |
|
||||
| tests2.cpp:111:17:111:19 | ptr | tests2.cpp:111:14:111:19 | ptr |
|
||||
| tests2.cpp:111:14:111:15 | c1 indirection [ptr] | tests2.cpp:111:17:111:19 | FieldAddress indirection |
|
||||
| tests2.cpp:111:17:111:19 | FieldAddress indirection | tests2.cpp:111:14:111:19 | ptr |
|
||||
| tests2.cpp:111:17:111:19 | FieldAddress indirection | tests2.cpp:111:17:111:19 | ptr |
|
||||
| tests_sockets.cpp:26:15:26:20 | call to getenv | tests_sockets.cpp:39:19:39:22 | path |
|
||||
| tests_sockets.cpp:26:15:26:20 | call to getenv | tests_sockets.cpp:39:19:39:22 | path |
|
||||
| tests_sockets.cpp:26:15:26:20 | call to getenv | tests_sockets.cpp:43:20:43:23 | path |
|
||||
@@ -59,7 +59,7 @@ nodes
|
||||
| tests2.cpp:109:12:109:17 | call to getenv | semmle.label | call to getenv |
|
||||
| tests2.cpp:111:14:111:15 | c1 indirection [ptr] | semmle.label | c1 indirection [ptr] |
|
||||
| tests2.cpp:111:14:111:19 | ptr | semmle.label | ptr |
|
||||
| tests2.cpp:111:17:111:19 | ptr | semmle.label | ptr |
|
||||
| tests2.cpp:111:17:111:19 | FieldAddress indirection | semmle.label | FieldAddress indirection |
|
||||
| tests2.cpp:111:17:111:19 | ptr | semmle.label | ptr |
|
||||
| tests_sockets.cpp:26:15:26:20 | call to getenv | semmle.label | call to getenv |
|
||||
| tests_sockets.cpp:39:19:39:22 | path | semmle.label | path |
|
||||
|
||||
@@ -1,19 +1,58 @@
|
||||
edges
|
||||
| tests3.cpp:23:21:23:53 | call to createXMLReader | tests3.cpp:25:2:25:2 | p |
|
||||
| tests3.cpp:35:16:35:20 | p_3_3 | tests3.cpp:38:2:38:6 | Load |
|
||||
| tests3.cpp:35:24:35:56 | Store | tests3.cpp:35:16:35:20 | p_3_3 |
|
||||
| tests3.cpp:35:24:35:56 | call to createXMLReader | tests3.cpp:35:24:35:56 | Store |
|
||||
| tests3.cpp:38:2:38:6 | Load | tests3.cpp:38:2:38:6 | p_3_3 |
|
||||
| tests3.cpp:41:16:41:20 | p_3_4 | tests3.cpp:45:2:45:6 | Load |
|
||||
| tests3.cpp:41:24:41:56 | Store | tests3.cpp:41:16:41:20 | p_3_4 |
|
||||
| tests3.cpp:41:24:41:56 | call to createXMLReader | tests3.cpp:41:24:41:56 | Store |
|
||||
| tests3.cpp:45:2:45:6 | Load | tests3.cpp:45:2:45:6 | p_3_4 |
|
||||
| tests3.cpp:48:16:48:20 | p_3_5 | tests3.cpp:56:2:56:6 | Load |
|
||||
| tests3.cpp:48:24:48:56 | Store | tests3.cpp:48:16:48:20 | p_3_5 |
|
||||
| tests3.cpp:48:24:48:56 | call to createXMLReader | tests3.cpp:48:24:48:56 | Store |
|
||||
| tests3.cpp:56:2:56:6 | Load | tests3.cpp:56:2:56:6 | p_3_5 |
|
||||
| tests3.cpp:60:21:60:53 | call to createXMLReader | tests3.cpp:63:2:63:2 | p |
|
||||
| tests3.cpp:67:21:67:53 | call to createXMLReader | tests3.cpp:70:2:70:2 | p |
|
||||
| tests5.cpp:27:25:27:38 | call to createLSParser | tests5.cpp:29:2:29:2 | p |
|
||||
| tests5.cpp:40:25:40:38 | call to createLSParser | tests5.cpp:43:2:43:2 | p |
|
||||
| tests5.cpp:55:25:55:38 | call to createLSParser | tests5.cpp:59:2:59:2 | p |
|
||||
| tests5.cpp:63:14:63:17 | g_p1 | tests5.cpp:76:2:76:5 | Load |
|
||||
| tests5.cpp:63:21:63:24 | g_p2 | tests5.cpp:77:2:77:5 | Load |
|
||||
| tests5.cpp:67:2:67:32 | Store | tests5.cpp:63:14:63:17 | g_p1 |
|
||||
| tests5.cpp:67:17:67:30 | call to createLSParser | tests5.cpp:67:2:67:32 | Store |
|
||||
| tests5.cpp:70:2:70:32 | Store | tests5.cpp:63:21:63:24 | g_p2 |
|
||||
| tests5.cpp:70:17:70:30 | call to createLSParser | tests5.cpp:70:2:70:32 | Store |
|
||||
| tests5.cpp:76:2:76:5 | Load | tests5.cpp:76:2:76:5 | g_p1 |
|
||||
| tests5.cpp:77:2:77:5 | Load | tests5.cpp:77:2:77:5 | g_p2 |
|
||||
| tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:83:2:83:2 | p |
|
||||
| tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:83:2:83:2 | p |
|
||||
| tests5.cpp:83:2:83:2 | p | tests5.cpp:85:2:85:2 | p |
|
||||
| tests5.cpp:85:2:85:2 | p | tests5.cpp:86:2:86:2 | p |
|
||||
| tests5.cpp:86:2:86:2 | p | tests5.cpp:88:2:88:2 | p |
|
||||
| tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:85:2:85:2 | Load |
|
||||
| tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:85:2:85:2 | p indirection |
|
||||
| tests5.cpp:85:2:85:2 | Load | tests5.cpp:85:2:85:2 | p |
|
||||
| tests5.cpp:85:2:85:2 | p | tests5.cpp:88:2:88:2 | Load |
|
||||
| tests5.cpp:85:2:85:2 | p | tests5.cpp:88:2:88:2 | p indirection |
|
||||
| tests5.cpp:85:2:85:2 | p indirection | tests5.cpp:85:2:85:2 | p |
|
||||
| tests5.cpp:88:2:88:2 | Load | tests5.cpp:88:2:88:2 | p |
|
||||
| tests5.cpp:88:2:88:2 | p | tests5.cpp:89:2:89:2 | p |
|
||||
| tests5.cpp:88:2:88:2 | p indirection | tests5.cpp:88:2:88:2 | p |
|
||||
nodes
|
||||
| tests3.cpp:23:21:23:53 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
| tests3.cpp:25:2:25:2 | p | semmle.label | p |
|
||||
| tests3.cpp:35:16:35:20 | p_3_3 | semmle.label | p_3_3 |
|
||||
| tests3.cpp:35:24:35:56 | Store | semmle.label | Store |
|
||||
| tests3.cpp:35:24:35:56 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
| tests3.cpp:38:2:38:6 | Load | semmle.label | Load |
|
||||
| tests3.cpp:38:2:38:6 | p_3_3 | semmle.label | p_3_3 |
|
||||
| tests3.cpp:41:16:41:20 | p_3_4 | semmle.label | p_3_4 |
|
||||
| tests3.cpp:41:24:41:56 | Store | semmle.label | Store |
|
||||
| tests3.cpp:41:24:41:56 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
| tests3.cpp:45:2:45:6 | Load | semmle.label | Load |
|
||||
| tests3.cpp:45:2:45:6 | p_3_4 | semmle.label | p_3_4 |
|
||||
| tests3.cpp:48:16:48:20 | p_3_5 | semmle.label | p_3_5 |
|
||||
| tests3.cpp:48:24:48:56 | Store | semmle.label | Store |
|
||||
| tests3.cpp:48:24:48:56 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
| tests3.cpp:56:2:56:6 | Load | semmle.label | Load |
|
||||
| tests3.cpp:56:2:56:6 | p_3_5 | semmle.label | p_3_5 |
|
||||
| tests3.cpp:60:21:60:53 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
| tests3.cpp:63:2:63:2 | p | semmle.label | p |
|
||||
| tests3.cpp:67:21:67:53 | call to createXMLReader | semmle.label | call to createXMLReader |
|
||||
@@ -29,16 +68,31 @@ nodes
|
||||
| tests5.cpp:43:2:43:2 | p | semmle.label | p |
|
||||
| tests5.cpp:55:25:55:38 | call to createLSParser | semmle.label | call to createLSParser |
|
||||
| tests5.cpp:59:2:59:2 | p | semmle.label | p |
|
||||
| tests5.cpp:63:14:63:17 | g_p1 | semmle.label | g_p1 |
|
||||
| tests5.cpp:63:21:63:24 | g_p2 | semmle.label | g_p2 |
|
||||
| tests5.cpp:67:2:67:32 | Store | semmle.label | Store |
|
||||
| tests5.cpp:67:17:67:30 | call to createLSParser | semmle.label | call to createLSParser |
|
||||
| tests5.cpp:70:2:70:32 | Store | semmle.label | Store |
|
||||
| tests5.cpp:70:17:70:30 | call to createLSParser | semmle.label | call to createLSParser |
|
||||
| tests5.cpp:76:2:76:5 | Load | semmle.label | Load |
|
||||
| tests5.cpp:76:2:76:5 | g_p1 | semmle.label | g_p1 |
|
||||
| tests5.cpp:77:2:77:5 | Load | semmle.label | Load |
|
||||
| tests5.cpp:77:2:77:5 | g_p2 | semmle.label | g_p2 |
|
||||
| tests5.cpp:81:25:81:38 | call to createLSParser | semmle.label | call to createLSParser |
|
||||
| tests5.cpp:83:2:83:2 | p | semmle.label | p |
|
||||
| tests5.cpp:83:2:83:2 | p | semmle.label | p |
|
||||
| tests5.cpp:85:2:85:2 | Load | semmle.label | Load |
|
||||
| tests5.cpp:85:2:85:2 | p | semmle.label | p |
|
||||
| tests5.cpp:86:2:86:2 | p | semmle.label | p |
|
||||
| tests5.cpp:85:2:85:2 | p indirection | semmle.label | p indirection |
|
||||
| tests5.cpp:88:2:88:2 | Load | semmle.label | Load |
|
||||
| tests5.cpp:88:2:88:2 | p | semmle.label | p |
|
||||
| tests5.cpp:88:2:88:2 | p indirection | semmle.label | p indirection |
|
||||
| tests5.cpp:89:2:89:2 | p | semmle.label | p |
|
||||
subpaths
|
||||
#select
|
||||
| tests3.cpp:25:2:25:2 | p | tests3.cpp:23:21:23:53 | call to createXMLReader | tests3.cpp:25:2:25:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:23:21:23:53 | call to createXMLReader | XML parser |
|
||||
| tests3.cpp:38:2:38:6 | p_3_3 | tests3.cpp:35:24:35:56 | call to createXMLReader | tests3.cpp:38:2:38:6 | p_3_3 | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:35:24:35:56 | call to createXMLReader | XML parser |
|
||||
| tests3.cpp:45:2:45:6 | p_3_4 | tests3.cpp:41:24:41:56 | call to createXMLReader | tests3.cpp:45:2:45:6 | p_3_4 | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:41:24:41:56 | call to createXMLReader | XML parser |
|
||||
| tests3.cpp:56:2:56:6 | p_3_5 | tests3.cpp:48:24:48:56 | call to createXMLReader | tests3.cpp:56:2:56:6 | p_3_5 | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:48:24:48:56 | call to createXMLReader | XML parser |
|
||||
| tests3.cpp:63:2:63:2 | p | tests3.cpp:60:21:60:53 | call to createXMLReader | tests3.cpp:63:2:63:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:60:21:60:53 | call to createXMLReader | XML parser |
|
||||
| tests3.cpp:70:2:70:2 | p | tests3.cpp:67:21:67:53 | call to createXMLReader | tests3.cpp:70:2:70:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests3.cpp:67:21:67:53 | call to createXMLReader | XML parser |
|
||||
| tests4.cpp:26:34:26:48 | XML_PARSE_NOENT | tests4.cpp:26:34:26:48 | XML_PARSE_NOENT | tests4.cpp:26:34:26:48 | XML_PARSE_NOENT | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests4.cpp:26:34:26:48 | XML_PARSE_NOENT | XML parser |
|
||||
@@ -49,5 +103,7 @@ subpaths
|
||||
| tests5.cpp:29:2:29:2 | p | tests5.cpp:27:25:27:38 | call to createLSParser | tests5.cpp:29:2:29:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:27:25:27:38 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:43:2:43:2 | p | tests5.cpp:40:25:40:38 | call to createLSParser | tests5.cpp:43:2:43:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:40:25:40:38 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:59:2:59:2 | p | tests5.cpp:55:25:55:38 | call to createLSParser | tests5.cpp:59:2:59:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:55:25:55:38 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:76:2:76:5 | g_p1 | tests5.cpp:67:17:67:30 | call to createLSParser | tests5.cpp:76:2:76:5 | g_p1 | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:67:17:67:30 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:77:2:77:5 | g_p2 | tests5.cpp:70:17:70:30 | call to createLSParser | tests5.cpp:77:2:77:5 | g_p2 | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:70:17:70:30 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:83:2:83:2 | p | tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:83:2:83:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:81:25:81:38 | call to createLSParser | XML parser |
|
||||
| tests5.cpp:89:2:89:2 | p | tests5.cpp:81:25:81:38 | call to createLSParser | tests5.cpp:89:2:89:2 | p | This $@ is not configured to prevent an XML external entity (XXE) attack. | tests5.cpp:81:25:81:38 | call to createLSParser | XML parser |
|
||||
|
||||
Reference in New Issue
Block a user