Class TaintFrameModelingVisitor
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
- com.h3xstream.findsecbugs.taintanalysis.TaintFrameModelingVisitor
-
- All Implemented Interfaces:
org.apache.bcel.generic.Visitor
public class TaintFrameModelingVisitor extends edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
Visitor to make instruction transfer of taint values easier- Author:
- David Formanek (Y Soft Corporation, a.s.)
-
-
Constructor Summary
Constructors Constructor Description TaintFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, edu.umd.cs.findbugs.classfile.MethodDescriptor method, TaintConfig taintConfig, List<TaintFrameAdditionalVisitor> visitors, org.apache.bcel.generic.MethodGen methodGen)Constructs the object and stores the parameters
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidanalyzeInstruction(org.apache.bcel.generic.Instruction ins)voidfinishAnalysis()This method must be called from outside at the end of the method analysisTaintgetDefaultValue()voidhandleLoadInstruction(org.apache.bcel.generic.LoadInstruction load)voidhandleStoreInstruction(org.apache.bcel.generic.StoreInstruction obj)voidvisitAALOAD(org.apache.bcel.generic.AALOAD obj)voidvisitAASTORE(org.apache.bcel.generic.AASTORE obj)voidvisitACONST_NULL(org.apache.bcel.generic.ACONST_NULL obj)voidvisitANEWARRAY(org.apache.bcel.generic.ANEWARRAY obj)voidvisitARETURN(org.apache.bcel.generic.ARETURN obj)voidvisitBIPUSH(org.apache.bcel.generic.BIPUSH obj)voidvisitCHECKCAST(org.apache.bcel.generic.CHECKCAST obj)voidvisitGETFIELD(org.apache.bcel.generic.GETFIELD obj)voidvisitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)voidvisitICONST(org.apache.bcel.generic.ICONST obj)voidvisitINVOKEDYNAMIC(org.apache.bcel.generic.INVOKEDYNAMIC obj)voidvisitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE obj)voidvisitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL obj)voidvisitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)voidvisitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL obj)voidvisitLDC(org.apache.bcel.generic.LDC ldc)voidvisitLDC2_W(org.apache.bcel.generic.LDC2_W obj)voidvisitNEW(org.apache.bcel.generic.NEW obj)voidvisitPUTFIELD(org.apache.bcel.generic.PUTFIELD obj)voidvisitPutFieldOp(org.apache.bcel.generic.FieldInstruction obj)voidvisitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC obj)voidvisitReturnInstruction(org.apache.bcel.generic.ReturnInstruction obj)voidvisitSIPUSH(org.apache.bcel.generic.SIPUSH obj)-
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
getCPG, getFrame, getLocation, getNumWordsConsumed, getNumWordsProduced, handleNormalInstruction, modelInstruction, modelNormalInstruction, setFrameAndLocation, visitAllocationInstruction, visitALOAD, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitASTORE, visitATHROW, visitBALOAD, visitBASTORE, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitConstantPushInstruction, visitConversionInstruction, visitConversionInstruction2, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDLOAD, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSTORE, visitDSUB, visitDUP, visitDUP_X1, visitDUP_X2, visitDUP2, visitDUP2_X1, visitDUP2_X2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSTORE, visitFSUB, visitGOTO, visitGOTO_W, visitGotoInstruction, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIADD, visitIALOAD, visitIAND, visitIASTORE, visitIDIV, visitIF_ACMPEQ, visitIF_ACMPNE, visitIF_ICMPEQ, visitIF_ICMPGE, visitIF_ICMPGT, visitIF_ICMPLE, visitIF_ICMPLT, visitIF_ICMPNE, visitIFEQ, visitIFGE, visitIFGT, visitIfInstruction, visitIFLE, visitIFLT, visitIFNE, visitIFNONNULL, visitIFNULL, visitIINC, visitILOAD, visitIMPDEP1, visitIMPDEP2, visitIMUL, visitINEG, visitINSTANCEOF, visitInvokeInstruction, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISTORE, visitISUB, visitIUSHR, visitIXOR, visitJSR, visitJSR_W, visitJsrInstruction, visitL2D, visitL2F, visitL2I, visitLADD, visitLALOAD, visitLAND, visitLASTORE, visitLCMP, visitLCONST, visitLDIV, visitLLOAD, visitLMUL, visitLNEG, visitLoadClass, visitLoadInstruction, visitLocalVariableInstruction, visitLOOKUPSWITCH, visitLOR, visitLREM, visitLRETURN, visitLSHL, visitLSHR, visitLSTORE, visitLSUB, visitLUSHR, visitLXOR, visitMONITORENTER, visitMONITOREXIT, visitMULTIANEWARRAY, visitNEWARRAY, visitNONNULL2Z, visitNOP, visitNULL2Z, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitRET, visitRETURN, visitSALOAD, visitSASTORE, visitSelect, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTABLESWITCH, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
-
-
-
-
Constructor Detail
-
TaintFrameModelingVisitor
public TaintFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, edu.umd.cs.findbugs.classfile.MethodDescriptor method, TaintConfig taintConfig, List<TaintFrameAdditionalVisitor> visitors, org.apache.bcel.generic.MethodGen methodGen)Constructs the object and stores the parameters- Parameters:
cpg- constant pool gen for super classmethod- descriptor of analysed methodtaintConfig- current configured and derived taint summaries- Throws:
NullPointerException- if arguments method or taintConfig is null
-
-
Method Detail
-
analyzeInstruction
public void analyzeInstruction(org.apache.bcel.generic.Instruction ins) throws edu.umd.cs.findbugs.ba.DataflowAnalysisException- Overrides:
analyzeInstructionin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>- Throws:
edu.umd.cs.findbugs.ba.DataflowAnalysisException
-
getDefaultValue
public Taint getDefaultValue()
- Specified by:
getDefaultValuein classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitLDC
public void visitLDC(org.apache.bcel.generic.LDC ldc)
- Specified by:
visitLDCin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitLDCin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitLDC2_W
public void visitLDC2_W(org.apache.bcel.generic.LDC2_W obj)
- Specified by:
visitLDC2_Win interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitLDC2_Win classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitBIPUSH
public void visitBIPUSH(org.apache.bcel.generic.BIPUSH obj)
- Specified by:
visitBIPUSHin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitBIPUSHin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitSIPUSH
public void visitSIPUSH(org.apache.bcel.generic.SIPUSH obj)
- Specified by:
visitSIPUSHin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitSIPUSHin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitGETSTATIC
public void visitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)
- Specified by:
visitGETSTATICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitGETSTATICin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitACONST_NULL
public void visitACONST_NULL(org.apache.bcel.generic.ACONST_NULL obj)
- Specified by:
visitACONST_NULLin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitACONST_NULLin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitICONST
public void visitICONST(org.apache.bcel.generic.ICONST obj)
- Specified by:
visitICONSTin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitICONSTin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitGETFIELD
public void visitGETFIELD(org.apache.bcel.generic.GETFIELD obj)
- Specified by:
visitGETFIELDin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitGETFIELDin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitPUTFIELD
public void visitPUTFIELD(org.apache.bcel.generic.PUTFIELD obj)
- Specified by:
visitPUTFIELDin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitPUTFIELDin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitPUTSTATIC
public void visitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC obj)
- Specified by:
visitPUTSTATICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitPUTSTATICin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitPutFieldOp
public void visitPutFieldOp(org.apache.bcel.generic.FieldInstruction obj)
-
visitNEW
public void visitNEW(org.apache.bcel.generic.NEW obj)
- Specified by:
visitNEWin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitNEWin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
handleStoreInstruction
public void handleStoreInstruction(org.apache.bcel.generic.StoreInstruction obj)
- Overrides:
handleStoreInstructionin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
handleLoadInstruction
public void handleLoadInstruction(org.apache.bcel.generic.LoadInstruction load)
- Overrides:
handleLoadInstructionin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitINVOKEINTERFACE
public void visitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE obj)
- Specified by:
visitINVOKEINTERFACEin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKEINTERFACEin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitINVOKESPECIAL
public void visitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL obj)
- Specified by:
visitINVOKESPECIALin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKESPECIALin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitINVOKESTATIC
public void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)
- Specified by:
visitINVOKESTATICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKESTATICin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitINVOKEVIRTUAL
public void visitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL obj)
- Specified by:
visitINVOKEVIRTUALin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKEVIRTUALin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitINVOKEDYNAMIC
public void visitINVOKEDYNAMIC(org.apache.bcel.generic.INVOKEDYNAMIC obj)
- Specified by:
visitINVOKEDYNAMICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKEDYNAMICin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitANEWARRAY
public void visitANEWARRAY(org.apache.bcel.generic.ANEWARRAY obj)
- Specified by:
visitANEWARRAYin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitANEWARRAYin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitAASTORE
public void visitAASTORE(org.apache.bcel.generic.AASTORE obj)
- Specified by:
visitAASTOREin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitAASTOREin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitAALOAD
public void visitAALOAD(org.apache.bcel.generic.AALOAD obj)
- Specified by:
visitAALOADin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitAALOADin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitCHECKCAST
public void visitCHECKCAST(org.apache.bcel.generic.CHECKCAST obj)
- Specified by:
visitCHECKCASTin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitCHECKCASTin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitReturnInstruction
public void visitReturnInstruction(org.apache.bcel.generic.ReturnInstruction obj)
- Specified by:
visitReturnInstructionin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitReturnInstructionin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
visitARETURN
public void visitARETURN(org.apache.bcel.generic.ARETURN obj)
- Specified by:
visitARETURNin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitARETURNin classedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,TaintFrame>
-
finishAnalysis
public void finishAnalysis()
This method must be called from outside at the end of the method analysis
-
-