Class TaintTransferFunctions<E extends ISSABasicBlock>
java.lang.Object
org.scandroid.flow.functions.TaintTransferFunctions<E>
- All Implemented Interfaces:
IFlowFunctionMap<BasicBlockInContext<E>>
public class TaintTransferFunctions<E extends ISSABasicBlock>
extends Object
implements IFlowFunctionMap<BasicBlockInContext<E>>
-
Field Summary
-
Constructor Summary
ConstructorDescriptionTaintTransferFunctions
(IFDSTaintDomain<E> domain, PointerAnalysis<InstanceKey> pa) TaintTransferFunctions
(IFDSTaintDomain<E> domain, PointerAnalysis<InstanceKey> pa, boolean taintStaticFields) -
Method Summary
Modifier and TypeMethodDescriptiongetCallFlowFunction
(BasicBlockInContext<E> src, BasicBlockInContext<E> dest, BasicBlockInContext<E> ret) getCallToReturnFlowFunction
(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) getNormalFlowFunction
(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) getReturnFlowFunction
(BasicBlockInContext<E> call, BasicBlockInContext<E> src, BasicBlockInContext<E> dest) makeStaticFieldTaints
(BasicBlockInContext<E> dest, SSAInstruction inst, org.scandroid.flow.functions.PairBasedFlowFunction<E> flowFunction)
-
Field Details
-
EMPTY_SET
-
ZERO_SET
-
-
Constructor Details
-
TaintTransferFunctions
-
TaintTransferFunctions
public TaintTransferFunctions(IFDSTaintDomain<E> domain, PointerAnalysis<InstanceKey> pa, boolean taintStaticFields)
-
-
Method Details
-
getCallFlowFunction
public IUnaryFlowFunction getCallFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest, BasicBlockInContext<E> ret) - Specified by:
getCallFlowFunction
in interfaceIFlowFunctionMap<E extends ISSABasicBlock>
- Parameters:
src
- the call blockdest
- the entry of the calleeret
- the block that will be returned to, in the caller. This can be null .. signifying that facts can flow into the callee but not return- Returns:
- the flow function for a "call" edge in the supergraph from src -> dest
-
getCallNoneToReturnFlowFunction
public IUnaryFlowFunction getCallNoneToReturnFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getCallNoneToReturnFlowFunction
in interfaceIFlowFunctionMap<E extends ISSABasicBlock>
- Returns:
- the flow function for a "call-to-return" edge in the supergraph from src -> dest, when the supergraph does not contain any callees of src. This happens via, e.g., slicing.
-
getCallToReturnFlowFunction
public IUnaryFlowFunction getCallToReturnFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getCallToReturnFlowFunction
in interfaceIFlowFunctionMap<E extends ISSABasicBlock>
- Returns:
- the flow function for a "call-to-return" edge in the supergraph from src -> dest
-
getNormalFlowFunction
public IUnaryFlowFunction getNormalFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getNormalFlowFunction
in interfaceIFlowFunctionMap<E extends ISSABasicBlock>
- Returns:
- the flow function for a "normal" edge in the supergraph from src -> dest
-
makeStaticFieldTaints
public IUnaryFlowFunction makeStaticFieldTaints(BasicBlockInContext<E> dest, SSAInstruction inst, org.scandroid.flow.functions.PairBasedFlowFunction<E> flowFunction) -
getReturnFlowFunction
public IFlowFunction getReturnFlowFunction(BasicBlockInContext<E> call, BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getReturnFlowFunction
in interfaceIFlowFunctionMap<E extends ISSABasicBlock>
- Parameters:
call
- supergraph node of the call instruction for this return edge.- Returns:
- the flow function for a "return" edge in the supergraph from src -> dest
-