public class Abstraction extends Object implements Cloneable, FastSolverLinkedNode<Abstraction,soot.Unit>
| 限定符和类型 | 类和说明 |
|---|---|
static class |
Abstraction.NeighborHashingStrategy |
| 限定符和类型 | 字段和说明 |
|---|---|
protected AccessPath |
accessPath
the access path contains the currently tainted variable or field
|
protected soot.Unit |
activationUnit
Unit/Stmt which activates the taint when the abstraction passes it
|
protected soot.jimple.Stmt |
correspondingCallSite |
protected soot.jimple.Stmt |
currentStmt |
protected boolean |
dependsOnCutAP
Only valid for inactive abstractions.
|
protected boolean |
exceptionThrown
taint is thrown by an exception (is set to false when it reaches the
catch-Stmt)
|
protected static boolean |
flowSensitiveAliasing |
protected int |
hashCode |
protected boolean |
isImplicit |
protected int |
neighborHashCode |
protected Set<Abstraction> |
neighbors |
protected AtomicBitSet |
pathFlags |
protected List<IInfoflowCFG.UnitContainer> |
postdominators
The postdominators we need to pass in order to leave the current conditional
branch.
|
protected Abstraction |
predecessor |
protected int |
propagationPathLength |
protected SourceContext |
sourceContext |
| 限定符 | 构造器和说明 |
|---|---|
protected |
Abstraction(AccessPath p,
Abstraction original)
Creates an abstraction as a copy of an existing abstraction, only exchanging
the access path. -> only used by AbstractionWithPath
|
|
Abstraction(ISourceSinkDefinition definition,
AccessPath sourceVal,
soot.jimple.Stmt sourceStmt,
Object userData,
boolean exceptionThrown,
boolean isImplicit) |
| 限定符和类型 | 方法和说明 |
|---|---|
boolean |
addNeighbor(Abstraction originalAbstraction)
Links this node to a neighbor node, i.e., to an abstraction that would have
been merged with this one of paths were not being tracked.
|
Abstraction |
clone()
Clones this data flow abstraction
|
boolean |
dependsOnCutAP() |
Abstraction |
deriveConditionalAbstractionCall(soot.Unit conditionalCallSite) |
Abstraction |
deriveConditionalAbstractionEnter(IInfoflowCFG.UnitContainer postdom,
soot.jimple.Stmt conditionalUnit) |
Abstraction |
deriveInactiveAbstraction(soot.jimple.Stmt activationUnit) |
Abstraction |
deriveNewAbstraction(AccessPath p,
soot.jimple.Stmt currentStmt) |
Abstraction |
deriveNewAbstraction(AccessPath p,
soot.jimple.Stmt currentStmt,
boolean isImplicit) |
protected Abstraction |
deriveNewAbstractionMutable(AccessPath p,
soot.jimple.Stmt currentStmt) |
Abstraction |
deriveNewAbstractionOnCatch(AccessPath ap)
Derives a new abstraction that models the current local being caught as an
exception
|
Abstraction |
deriveNewAbstractionOnThrow(soot.jimple.Stmt throwStmt)
Derives a new abstraction that models the current local being thrown as an
exception
|
Abstraction |
dropTopPostdominator() |
boolean |
entails(Abstraction other)
Checks whether this abstraction entails the given abstraction, i.e. this
taint also taints everything that is tainted by the given taint.
|
boolean |
equals(Object obj) |
AccessPath |
getAccessPath() |
soot.Unit |
getActivationUnit() |
Abstraction |
getActiveCopy()
If this abstraction supports alias analysis, this returns the active copy of
the current abstraction.
|
soot.jimple.Stmt |
getCorrespondingCallSite() |
soot.jimple.Stmt |
getCurrentStmt() |
boolean |
getExceptionThrown()
Gets whether this value has been thrown as an exception
|
int |
getNeighborCount()
Gets the number of neighbors already registered with this abstraction
|
Set<Abstraction> |
getNeighbors() |
int |
getPathLength()
Gets the length of the path over which this node was propagated
|
Abstraction |
getPredecessor()
Gets the predecessor of this node
|
SourceContext |
getSourceContext()
Gets the context of the taint, i.e. the statement and value of the source
|
IInfoflowCFG.UnitContainer |
getTopPostdominator() |
static Abstraction |
getZeroAbstraction(boolean flowSensitiveAliasing) |
int |
hashCode() |
static void |
initialize(InfoflowConfiguration config)
Initializes the configuration for building new abstractions
|
Abstraction |
injectSourceContext(SourceContext sourceContext) |
boolean |
isAbstractionActive() |
boolean |
isImplicit() |
boolean |
isTopPostdominator(soot.SootMethod sm) |
boolean |
isTopPostdominator(soot.Unit u) |
boolean |
registerPathFlag(int id,
int maxSize)
Registers that a worker thread with the given ID has already processed this
abstraction
|
void |
setCorrespondingCallSite(soot.jimple.Stmt callSite) |
void |
setPredecessor(Abstraction predecessor)
Explicitly sets the predecessor of this node.
|
void |
setSourceContext(SourceContext sourceContext)
Only use this method if you really need to fake a source context and know
what you are doing.
|
String |
toString() |
protected static boolean flowSensitiveAliasing
protected AccessPath accessPath
protected Abstraction predecessor
protected volatile Set<Abstraction> neighbors
protected soot.jimple.Stmt currentStmt
protected soot.jimple.Stmt correspondingCallSite
protected SourceContext sourceContext
protected soot.Unit activationUnit
protected boolean exceptionThrown
protected int hashCode
protected int neighborHashCode
protected List<IInfoflowCFG.UnitContainer> postdominators
protected boolean isImplicit
protected boolean dependsOnCutAP
protected AtomicBitSet pathFlags
protected int propagationPathLength
public Abstraction(ISourceSinkDefinition definition, AccessPath sourceVal, soot.jimple.Stmt sourceStmt, Object userData, boolean exceptionThrown, boolean isImplicit)
protected Abstraction(AccessPath p, Abstraction original)
p - The access path for the new abstractionoriginal - The original abstraction to copypublic static void initialize(InfoflowConfiguration config)
config - The configuration of the data flow solverpublic Abstraction deriveInactiveAbstraction(soot.jimple.Stmt activationUnit)
public Abstraction deriveNewAbstraction(AccessPath p, soot.jimple.Stmt currentStmt)
public Abstraction deriveNewAbstraction(AccessPath p, soot.jimple.Stmt currentStmt, boolean isImplicit)
protected Abstraction deriveNewAbstractionMutable(AccessPath p, soot.jimple.Stmt currentStmt)
public Abstraction deriveNewAbstractionOnThrow(soot.jimple.Stmt throwStmt)
throwStmt - The statement at which the exception was thrownpublic Abstraction deriveNewAbstractionOnCatch(AccessPath ap)
ap - The access path in which the tainted exception is storedpublic boolean isAbstractionActive()
public boolean isImplicit()
public AccessPath getAccessPath()
public soot.Unit getActivationUnit()
public Abstraction getActiveCopy()
FastSolverLinkedNodegetActiveCopy 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>public boolean getExceptionThrown()
public Abstraction deriveConditionalAbstractionEnter(IInfoflowCFG.UnitContainer postdom, soot.jimple.Stmt conditionalUnit)
public Abstraction deriveConditionalAbstractionCall(soot.Unit conditionalCallSite)
public Abstraction dropTopPostdominator()
public IInfoflowCFG.UnitContainer getTopPostdominator()
public boolean isTopPostdominator(soot.Unit u)
public boolean isTopPostdominator(soot.SootMethod sm)
public Abstraction clone()
FastSolverLinkedNodeclone 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>clone 在类中 Objectpublic boolean entails(Abstraction other)
other - The other taint abstractionpublic SourceContext getSourceContext()
public boolean dependsOnCutAP()
public Abstraction getPredecessor()
FastSolverLinkedNodegetPredecessor 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>public Set<Abstraction> getNeighbors()
public soot.jimple.Stmt getCurrentStmt()
public boolean addNeighbor(Abstraction originalAbstraction)
FastSolverLinkedNodeaddNeighbor 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>public void setCorrespondingCallSite(soot.jimple.Stmt callSite)
public soot.jimple.Stmt getCorrespondingCallSite()
public static Abstraction getZeroAbstraction(boolean flowSensitiveAliasing)
public void setPredecessor(Abstraction predecessor)
FastSolverLinkedNodesetPredecessor 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>predecessor - The predecessor node to setpublic void setSourceContext(SourceContext sourceContext)
sourceContext - The new source contextpublic boolean registerPathFlag(int id,
int maxSize)
id - The ID of the worker threadpublic Abstraction injectSourceContext(SourceContext sourceContext)
public int getNeighborCount()
FastSolverLinkedNodegetNeighborCount 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>public int getPathLength()
FastSolverLinkedNodegetPathLength 在接口中 FastSolverLinkedNode<Abstraction,soot.Unit>Copyright © 2022 Fraunhofer SIT. All rights reserved.