Class JvmTaintTransferRelation
- java.lang.Object
-
- proguard.analysis.cpa.jvm.transfer.JvmTransferRelation<SetAbstractState<JvmTaintSource>>
-
- proguard.analysis.cpa.jvm.domain.taint.JvmTaintTransferRelation
-
- All Implemented Interfaces:
ProgramLocationDependentForwardTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,ProgramLocationDependentTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,TransferRelation
public class JvmTaintTransferRelation extends JvmTransferRelation<SetAbstractState<JvmTaintSource>>
TheJvmTaintTransferRelation
is parametrized by a set ofTaintSource
methods.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
JvmTaintTransferRelation.InstructionAbstractInterpreter
-
Constructor Summary
Constructors Constructor Description JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources)
Create a taint transfer relation.JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources, java.util.Map<MethodSignature,JvmTaintTransformer> taintTransformers)
JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources, java.util.Map<MethodSignature,JvmTaintTransformer> taintTransformers, java.util.Map<Call,java.util.Set<JvmMemoryLocation>> extraTaintPropagationLocations)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Collection<? extends AbstractState>
generateEdgeAbstractSuccessors(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
Computes the successor states for the CFAedge
.SetAbstractState<JvmTaintSource>
getAbstractDefault()
Returns a default abstract state.protected JvmAbstractState<SetAbstractState<JvmTaintSource>>
getAbstractSuccessorForInstruction(JvmAbstractState<SetAbstractState<JvmTaintSource>> abstractState, Instruction instruction, Clazz clazz, Precision precision)
Returns the result of applyinginstruction
to theabstractState
.void
invokeMethod(JvmAbstractState<SetAbstractState<JvmTaintSource>> state, Call call, java.util.List<SetAbstractState<JvmTaintSource>> operands)
The default implementation computes join over its arguments.-
Methods inherited from class proguard.analysis.cpa.jvm.transfer.JvmTransferRelation
calculateArithmeticInstruction, computeIncrement, generateEdgeAbstractSuccessor, getAbstractByteConstant, getAbstractDoubleConstant, getAbstractFloatConstant, getAbstractIntegerConstant, getAbstractLongConstant, getAbstractNull, getAbstractReferenceValue, getAbstractReferenceValue, getAbstractReferenceValue, getAbstractShortConstant, handleCheckCast, isInstanceOf, processCall
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentForwardTransferRelation
getEdges
-
Methods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentTransferRelation
generateAbstractSuccessors, wrapAbstractSuccessorInCollection
-
-
-
-
Constructor Detail
-
JvmTaintTransferRelation
public JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources)
Create a taint transfer relation.- Parameters:
taintSources
- a mapping from fully qualified names to taint sources
-
JvmTaintTransferRelation
public JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources, java.util.Map<MethodSignature,JvmTaintTransformer> taintTransformers)
-
JvmTaintTransferRelation
public JvmTaintTransferRelation(java.util.Map<Signature,java.util.Set<JvmTaintSource>> taintSources, java.util.Map<MethodSignature,JvmTaintTransformer> taintTransformers, java.util.Map<Call,java.util.Set<JvmMemoryLocation>> extraTaintPropagationLocations)
-
-
Method Detail
-
invokeMethod
public void invokeMethod(JvmAbstractState<SetAbstractState<JvmTaintSource>> state, Call call, java.util.List<SetAbstractState<JvmTaintSource>> operands)
Description copied from class:JvmTransferRelation
The default implementation computes join over its arguments.- Overrides:
invokeMethod
in classJvmTransferRelation<SetAbstractState<JvmTaintSource>>
-
getAbstractDefault
public SetAbstractState<JvmTaintSource> getAbstractDefault()
Description copied from class:JvmTransferRelation
Returns a default abstract state. In case of lattice abstract domains, it should be the bottom element.- Specified by:
getAbstractDefault
in classJvmTransferRelation<SetAbstractState<JvmTaintSource>>
-
getAbstractSuccessorForInstruction
protected JvmAbstractState<SetAbstractState<JvmTaintSource>> getAbstractSuccessorForInstruction(JvmAbstractState<SetAbstractState<JvmTaintSource>> abstractState, Instruction instruction, Clazz clazz, Precision precision)
Description copied from class:JvmTransferRelation
Returns the result of applyinginstruction
to theabstractState
.- Overrides:
getAbstractSuccessorForInstruction
in classJvmTransferRelation<SetAbstractState<JvmTaintSource>>
-
generateEdgeAbstractSuccessors
public java.util.Collection<? extends AbstractState> generateEdgeAbstractSuccessors(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
Description copied from interface:ProgramLocationDependentTransferRelation
Computes the successor states for the CFAedge
.
-
-