Class 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.)
    • Field Summary

      • Fields inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor

        cpg
    • 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
      void analyzeInstruction​(org.apache.bcel.generic.Instruction ins)  
      void finishAnalysis()
      This method must be called from outside at the end of the method analysis
      Taint getDefaultValue()  
      void handleLoadInstruction​(org.apache.bcel.generic.LoadInstruction load)  
      void handleStoreInstruction​(org.apache.bcel.generic.StoreInstruction obj)  
      void visitAALOAD​(org.apache.bcel.generic.AALOAD obj)  
      void visitAASTORE​(org.apache.bcel.generic.AASTORE obj)  
      void visitACONST_NULL​(org.apache.bcel.generic.ACONST_NULL obj)  
      void visitANEWARRAY​(org.apache.bcel.generic.ANEWARRAY obj)  
      void visitARETURN​(org.apache.bcel.generic.ARETURN obj)  
      void visitBIPUSH​(org.apache.bcel.generic.BIPUSH obj)  
      void visitCHECKCAST​(org.apache.bcel.generic.CHECKCAST obj)  
      void visitGETFIELD​(org.apache.bcel.generic.GETFIELD obj)  
      void visitGETSTATIC​(org.apache.bcel.generic.GETSTATIC obj)  
      void visitICONST​(org.apache.bcel.generic.ICONST obj)  
      void visitINVOKEDYNAMIC​(org.apache.bcel.generic.INVOKEDYNAMIC obj)  
      void visitINVOKEINTERFACE​(org.apache.bcel.generic.INVOKEINTERFACE obj)  
      void visitINVOKESPECIAL​(org.apache.bcel.generic.INVOKESPECIAL obj)  
      void visitINVOKESTATIC​(org.apache.bcel.generic.INVOKESTATIC obj)  
      void visitINVOKEVIRTUAL​(org.apache.bcel.generic.INVOKEVIRTUAL obj)  
      void visitLDC​(org.apache.bcel.generic.LDC ldc)  
      void visitLDC2_W​(org.apache.bcel.generic.LDC2_W obj)  
      void visitNEW​(org.apache.bcel.generic.NEW obj)  
      void visitPUTFIELD​(org.apache.bcel.generic.PUTFIELD obj)  
      void visitPutFieldOp​(org.apache.bcel.generic.FieldInstruction obj)  
      void visitPUTSTATIC​(org.apache.bcel.generic.PUTSTATIC obj)  
      void visitReturnInstruction​(org.apache.bcel.generic.ReturnInstruction obj)  
      void visitSIPUSH​(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 class
        method - descriptor of analysed method
        taintConfig - 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:
        analyzeInstruction in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
        Throws:
        edu.umd.cs.findbugs.ba.DataflowAnalysisException
      • getDefaultValue

        public Taint getDefaultValue()
        Specified by:
        getDefaultValue in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitLDC

        public void visitLDC​(org.apache.bcel.generic.LDC ldc)
        Specified by:
        visitLDC in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitLDC in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitLDC2_W

        public void visitLDC2_W​(org.apache.bcel.generic.LDC2_W obj)
        Specified by:
        visitLDC2_W in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitLDC2_W in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitBIPUSH

        public void visitBIPUSH​(org.apache.bcel.generic.BIPUSH obj)
        Specified by:
        visitBIPUSH in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitBIPUSH in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitSIPUSH

        public void visitSIPUSH​(org.apache.bcel.generic.SIPUSH obj)
        Specified by:
        visitSIPUSH in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitSIPUSH in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitGETSTATIC

        public void visitGETSTATIC​(org.apache.bcel.generic.GETSTATIC obj)
        Specified by:
        visitGETSTATIC in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitGETSTATIC in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitACONST_NULL

        public void visitACONST_NULL​(org.apache.bcel.generic.ACONST_NULL obj)
        Specified by:
        visitACONST_NULL in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitACONST_NULL in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitICONST

        public void visitICONST​(org.apache.bcel.generic.ICONST obj)
        Specified by:
        visitICONST in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitICONST in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitGETFIELD

        public void visitGETFIELD​(org.apache.bcel.generic.GETFIELD obj)
        Specified by:
        visitGETFIELD in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitGETFIELD in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitPUTFIELD

        public void visitPUTFIELD​(org.apache.bcel.generic.PUTFIELD obj)
        Specified by:
        visitPUTFIELD in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitPUTFIELD in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitPUTSTATIC

        public void visitPUTSTATIC​(org.apache.bcel.generic.PUTSTATIC obj)
        Specified by:
        visitPUTSTATIC in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitPUTSTATIC in class edu.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:
        visitNEW in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitNEW in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • handleStoreInstruction

        public void handleStoreInstruction​(org.apache.bcel.generic.StoreInstruction obj)
        Overrides:
        handleStoreInstruction in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • handleLoadInstruction

        public void handleLoadInstruction​(org.apache.bcel.generic.LoadInstruction load)
        Overrides:
        handleLoadInstruction in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitINVOKEINTERFACE

        public void visitINVOKEINTERFACE​(org.apache.bcel.generic.INVOKEINTERFACE obj)
        Specified by:
        visitINVOKEINTERFACE in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitINVOKEINTERFACE in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitINVOKESPECIAL

        public void visitINVOKESPECIAL​(org.apache.bcel.generic.INVOKESPECIAL obj)
        Specified by:
        visitINVOKESPECIAL in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitINVOKESPECIAL in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitINVOKESTATIC

        public void visitINVOKESTATIC​(org.apache.bcel.generic.INVOKESTATIC obj)
        Specified by:
        visitINVOKESTATIC in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitINVOKESTATIC in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitINVOKEVIRTUAL

        public void visitINVOKEVIRTUAL​(org.apache.bcel.generic.INVOKEVIRTUAL obj)
        Specified by:
        visitINVOKEVIRTUAL in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitINVOKEVIRTUAL in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitINVOKEDYNAMIC

        public void visitINVOKEDYNAMIC​(org.apache.bcel.generic.INVOKEDYNAMIC obj)
        Specified by:
        visitINVOKEDYNAMIC in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitINVOKEDYNAMIC in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitANEWARRAY

        public void visitANEWARRAY​(org.apache.bcel.generic.ANEWARRAY obj)
        Specified by:
        visitANEWARRAY in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitANEWARRAY in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitAASTORE

        public void visitAASTORE​(org.apache.bcel.generic.AASTORE obj)
        Specified by:
        visitAASTORE in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitAASTORE in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitAALOAD

        public void visitAALOAD​(org.apache.bcel.generic.AALOAD obj)
        Specified by:
        visitAALOAD in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitAALOAD in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitCHECKCAST

        public void visitCHECKCAST​(org.apache.bcel.generic.CHECKCAST obj)
        Specified by:
        visitCHECKCAST in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitCHECKCAST in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitReturnInstruction

        public void visitReturnInstruction​(org.apache.bcel.generic.ReturnInstruction obj)
        Specified by:
        visitReturnInstruction in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitReturnInstruction in class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<Taint,​TaintFrame>
      • visitARETURN

        public void visitARETURN​(org.apache.bcel.generic.ARETURN obj)
        Specified by:
        visitARETURN in interface org.apache.bcel.generic.Visitor
        Overrides:
        visitARETURN in class edu.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