svf-tools 1.0.874 → 1.0.875
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/AE_8cpp.html +218 -0
- package/SVF-doxygen/html/AE_8cpp_source.html +2124 -0
- package/SVF-doxygen/html/AE_8h.html +118 -0
- package/SVF-doxygen/html/AE_8h_source.html +513 -0
- package/SVF-doxygen/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/AbstractValue_8h.html +2 -3
- package/SVF-doxygen/html/AbstractValue_8h_source.html +50 -52
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +9 -9
- package/SVF-doxygen/html/AccessPath_8h_source.html +5 -5
- package/SVF-doxygen/html/AddressValue_8h.html +22 -4
- package/SVF-doxygen/html/AddressValue_8h_source.html +213 -211
- package/SVF-doxygen/html/AndersenPWC_8h_source.html +4 -4
- package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +4 -4
- package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +4 -4
- package/SVF-doxygen/html/AndersenStat_8cpp_source.html +9 -8
- package/SVF-doxygen/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/Andersen_8cpp_source.html +21 -21
- package/SVF-doxygen/html/Andersen_8h_source.html +4 -4
- package/SVF-doxygen/html/BoundedZ3Expr_8cpp.html +3 -3
- package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +4 -4
- package/SVF-doxygen/html/BoundedZ3Expr_8h.html +2 -2
- package/SVF-doxygen/html/BoundedZ3Expr_8h_source.html +5 -5
- package/SVF-doxygen/html/BreakConstantExpr_8cpp.html +3 -3
- package/SVF-doxygen/html/BreakConstantExpr_8cpp_source.html +4 -3
- package/SVF-doxygen/html/BufOverflowChecker_8cpp.html +101 -0
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +1040 -0
- package/SVF-doxygen/html/BufOverflowChecker_8h.html +102 -0
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +300 -0
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CDGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/CDG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CDG_8h_source.html +3 -3
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +25 -19
- package/SVF-doxygen/html/CFBasicBlockGWTO_8h.html +2 -2
- package/SVF-doxygen/html/CFBasicBlockGWTO_8h_source.html +37 -34
- package/SVF-doxygen/html/CFBasicBlockG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFBasicBlockG_8h_source.html +501 -494
- package/SVF-doxygen/html/CFGNormalizer_8cpp_source.html +5 -5
- package/SVF-doxygen/html/CFGNormalizer_8h_source.html +3 -3
- package/SVF-doxygen/html/CFGrammar_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFGrammar_8h_source.html +21 -21
- package/SVF-doxygen/html/CFLAlias_8cpp_source.html +4 -4
- package/SVF-doxygen/html/CFLAlias_8h_source.html +5 -5
- package/SVF-doxygen/html/CFLBase_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CFLGraphBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/CHG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/CSC_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CSC_8h_source.html +4 -4
- package/SVF-doxygen/html/ConditionalPT_8h_source.html +5 -5
- package/SVF-doxygen/html/ConsExeState_8cpp.html +4 -4
- package/SVF-doxygen/html/ConsExeState_8cpp_source.html +552 -555
- package/SVF-doxygen/html/ConsExeState_8h.html +28 -5
- package/SVF-doxygen/html/ConsExeState_8h_source.html +439 -438
- package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ConsG_8h_source.html +4 -4
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/ContextDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CoreBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/CppUtil_8cpp.html +5 -5
- package/SVF-doxygen/html/CppUtil_8cpp_source.html +10 -9
- package/SVF-doxygen/html/CppUtil_8h_source.html +2 -2
- package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/DCHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/DCHG_8h_source.html +3 -3
- package/SVF-doxygen/html/DDAClient_8cpp_source.html +7 -7
- package/SVF-doxygen/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/DDAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/DDAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/DDAVFSolver_8h_source.html +6 -6
- package/SVF-doxygen/html/DPItem_8h_source.html +4 -4
- package/SVF-doxygen/html/ExeState_8cpp.html +4 -4
- package/SVF-doxygen/html/ExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/ExeState_8h.html +5 -4
- package/SVF-doxygen/html/ExeState_8h_source.html +296 -294
- package/SVF-doxygen/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/FSMPTA_8cpp_source.html +8 -8
- package/SVF-doxygen/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/FlowDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/FlowDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +8 -8
- package/SVF-doxygen/html/FlowSensitive_8h_source.html +3 -3
- package/SVF-doxygen/html/GeneralType_8h.html +186 -0
- package/SVF-doxygen/html/GeneralType_8h_source.html +244 -0
- package/SVF-doxygen/html/GenericGraph_8h_source.html +5 -5
- package/SVF-doxygen/html/GrammarBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/GraphPrinter_8h_source.html +1 -1
- package/SVF-doxygen/html/GraphTraits_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/ICFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGWTO_8h.html +2 -2
- package/SVF-doxygen/html/ICFGWTO_8h_source.html +2 -2
- package/SVF-doxygen/html/ICFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/IntervalExeState_8cpp.html +3 -3
- package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +9 -9
- package/SVF-doxygen/html/IntervalExeState_8h.html +4 -4
- package/SVF-doxygen/html/IntervalExeState_8h_source.html +19 -19
- package/SVF-doxygen/html/IntervalValue_8h.html +4 -4
- package/SVF-doxygen/html/IntervalValue_8h_source.html +25 -25
- package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +24 -24
- package/SVF-doxygen/html/LLVMModule_8h_source.html +4 -4
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +6 -6
- package/SVF-doxygen/html/LLVMUtil_8h.html +4 -4
- package/SVF-doxygen/html/LLVMUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/LockAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/MHP_8cpp_source.html +8 -8
- package/SVF-doxygen/html/MHP_8h_source.html +4 -4
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/MTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/MemPartition_8h_source.html +2 -2
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +11 -11
- package/SVF-doxygen/html/MemRegion_8h_source.html +5 -5
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/MemSSA_8h_source.html +5 -5
- package/SVF-doxygen/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/NodeIDAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/NumericLiteral_8h.html +4 -5
- package/SVF-doxygen/html/NumericLiteral_8h_source.html +440 -442
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +4 -4
- package/SVF-doxygen/html/ObjTypeInference_8h_source.html +3 -3
- package/SVF-doxygen/html/Options_8cpp_source.html +20 -1
- package/SVF-doxygen/html/Options_8h_source.html +17 -4
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp.html +2 -2
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +4 -3
- package/SVF-doxygen/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/PCG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PTACallGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/PersistentPointsToCache_8h_source.html +3 -3
- package/SVF-doxygen/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/PointerAnalysisImpl_8h_source.html +7 -7
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/PointerAnalysis_8h_source.html +7 -7
- package/SVF-doxygen/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointsTo_8h_source.html +1 -1
- package/SVF-doxygen/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/ProgSlice_8h_source.html +3 -3
- package/SVF-doxygen/html/RelExeState_8cpp.html +5 -4
- package/SVF-doxygen/html/RelExeState_8cpp_source.html +161 -159
- package/SVF-doxygen/html/RelExeState_8h.html +4 -4
- package/SVF-doxygen/html/RelExeState_8h_source.html +23 -23
- package/SVF-doxygen/html/RelationSolver_8cpp.html +3 -3
- package/SVF-doxygen/html/RelationSolver_8cpp_source.html +7 -7
- package/SVF-doxygen/html/RelationSolver_8h.html +3 -3
- package/SVF-doxygen/html/RelationSolver_8h_source.html +6 -6
- package/SVF-doxygen/html/SCC_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFBugReport_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +18 -18
- package/SVF-doxygen/html/SVFFileSystem_8h.html +1 -1
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +14 -14
- package/SVF-doxygen/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFGStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFGStat_8h_source.html +4 -4
- package/SVF-doxygen/html/SVFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFG_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp.html +3 -3
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +22 -22
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h.html +3 -3
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +14 -14
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp.html +3 -3
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +26 -26
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h.html +7 -7
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +15 -15
- package/SVF-doxygen/html/SVFIR2Relation_8cpp.html +3 -3
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFIR_8h_source.html +7 -7
- package/SVF-doxygen/html/SVFLoop_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFStat_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFStatements_8h_source.html +7 -7
- package/SVF-doxygen/html/SVFType_8cpp_source.html +8 -8
- package/SVF-doxygen/html/SVFType_8h.html +24 -113
- package/SVF-doxygen/html/SVFType_8h_source.html +580 -698
- package/SVF-doxygen/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/SVFUtil_8h_source.html +5 -5
- package/SVF-doxygen/html/SVFValue_8cpp.html +6 -6
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +6 -5
- package/SVF-doxygen/html/SVFValue_8h_source.html +10 -10
- package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +12 -11
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/SingleAbsValue_8h.html +3 -3
- package/SVF-doxygen/html/SingleAbsValue_8h_source.html +5 -5
- package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/Steensgaard_8cpp_source.html +6 -6
- package/SVF-doxygen/html/Steensgaard_8h_source.html +4 -4
- package/SVF-doxygen/html/SymState_8cpp.html +3 -3
- package/SVF-doxygen/html/SymState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SymState_8h.html +3 -3
- package/SVF-doxygen/html/SymState_8h_source.html +7 -7
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +17 -17
- package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +8 -8
- package/SVF-doxygen/html/TCT_8cpp_source.html +5 -5
- package/SVF-doxygen/html/TCT_8h_source.html +5 -5
- package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ThreadCallGraph_8h_source.html +4 -4
- package/SVF-doxygen/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/VFGNode_8h_source.html +4 -4
- package/SVF-doxygen/html/VFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/VFG_8h_source.html +5 -5
- package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/VersionedFlowSensitive_8h_source.html +5 -5
- package/SVF-doxygen/html/WPAFSSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/WPAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/WPASolver_8h_source.html +3 -3
- package/SVF-doxygen/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/WTO_8h_source.html +3 -3
- package/SVF-doxygen/html/WorkList_8h_source.html +2 -2
- package/SVF-doxygen/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Z3Expr_8h_source.html +1 -1
- package/SVF-doxygen/html/ae_8cpp.html +70 -21
- package/SVF-doxygen/html/ae_8cpp_source.html +715 -631
- package/SVF-doxygen/html/annotated.html +446 -440
- package/SVF-doxygen/html/classSVF_1_1AE-members.html +137 -0
- package/SVF-doxygen/html/classSVF_1_1AE.html +2884 -0
- package/SVF-doxygen/html/classSVF_1_1AE.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AEAPI-members.html +119 -0
- package/SVF-doxygen/html/classSVF_1_1AEAPI.html +1947 -0
- package/SVF-doxygen/html/classSVF_1_1AEAPI.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +123 -0
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +707 -0
- package/SVF-doxygen/html/classSVF_1_1AEStat.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractValue.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +16 -15
- package/SVF-doxygen/html/classSVF_1_1AddressValue.html +146 -147
- package/SVF-doxygen/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +34 -34
- package/SVF-doxygen/html/classSVF_1_1AndersenWaveDiff.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BreakConstantGEPs.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +139 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +619 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI-members.html +127 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +984 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder-members.html +1 -0
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +38 -6
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO-members.html +2 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO.html +50 -23
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph.html +92 -92
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode-members.html +2 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode.html +189 -156
- package/SVF-doxygen/html/classSVF_1_1CFGNormalizer.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1CFLBase.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFLGraphBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1CSC.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CondPTAImpl.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +783 -785
- package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1ConstraintNode-members.html +34 -34
- package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +65 -25
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1DDAClient.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1DDAPass.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1DDAStat.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1ExeState.html +195 -195
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1GenericNode.html +10 -9
- package/SVF-doxygen/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1GrammarBase.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1ICFGWTO.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IRGraph.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1IntervalESBase.html +20 -21
- package/SVF-doxygen/html/classSVF_1_1IntervalExeState.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +43 -44
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MHP.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1MTA.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1MTAStat.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +14 -14
- package/SVF-doxygen/html/classSVF_1_1MemSSAStat.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1NumericLiteral.html +326 -326
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1Options-members.html +79 -73
- package/SVF-doxygen/html/classSVF_1_1Options.html +168 -0
- package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1PCG.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1POCRSolver.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PTAStat.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1PersistentDFPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentDiffPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentPointsToCache.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1RelExeState.html +140 -140
- package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +29 -29
- package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1SVFFunction.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +19 -19
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +55 -55
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +69 -69
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +32 -32
- package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +25 -25
- package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1SVFStat.html +31 -30
- package/SVF-doxygen/html/classSVF_1_1SVFStat.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +25 -25
- package/SVF-doxygen/html/classSVF_1_1SVFType.html +89 -89
- package/SVF-doxygen/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SingleAbsValue.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1StInfo.html +73 -73
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1SymState.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +24 -24
- package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +20 -20
- package/SVF-doxygen/html/classSVF_1_1TCT.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1VFG.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPAMinimumSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPAPass.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/classSymblicAbstractionTest.html +564 -564
- package/SVF-doxygen/html/classes.html +454 -446
- package/SVF-doxygen/html/dir_2c6fb801affc4b3efe6e1ed5974683f6.html +112 -0
- package/SVF-doxygen/html/dir_390f2a6be5eff59a6919ecbd9cc9f31d.html +1 -1
- package/SVF-doxygen/html/dir_445b24f35a8ddd2effd3d23ee1278e0a.html +2 -0
- package/SVF-doxygen/html/dir_53d761ae38d6f143a0d195c719804439.html +88 -0
- package/SVF-doxygen/html/dir_7e02b97230e2801c6749b0b00985526f.html +88 -0
- package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +92 -0
- package/SVF-doxygen/html/dir_946e55d8e7afdb1629c1e1d7cdc5486a.html +1 -1
- package/SVF-doxygen/html/dir_9a8e7a56f4029a0d9f62b1c6d1f6e85b.html +100 -0
- package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +92 -0
- package/SVF-doxygen/html/files.html +51 -42
- package/SVF-doxygen/html/functions.html +90 -2
- package/SVF-doxygen/html/functions_a.html +41 -11
- package/SVF-doxygen/html/functions_b.html +20 -4
- package/SVF-doxygen/html/functions_c.html +47 -31
- package/SVF-doxygen/html/functions_d.html +14 -2
- package/SVF-doxygen/html/functions_e.html +7 -1
- package/SVF-doxygen/html/functions_enum.html +3 -0
- package/SVF-doxygen/html/functions_eval_m.html +6 -0
- package/SVF-doxygen/html/functions_eval_s.html +6 -0
- package/SVF-doxygen/html/functions_eval_u.html +3 -0
- package/SVF-doxygen/html/functions_f.html +15 -12
- package/SVF-doxygen/html/functions_func.html +37 -10
- package/SVF-doxygen/html/functions_func_b.html +11 -2
- package/SVF-doxygen/html/functions_func_c.html +43 -27
- package/SVF-doxygen/html/functions_func_d.html +13 -1
- package/SVF-doxygen/html/functions_func_e.html +4 -1
- package/SVF-doxygen/html/functions_func_f.html +6 -3
- package/SVF-doxygen/html/functions_func_g.html +53 -17
- package/SVF-doxygen/html/functions_func_h.html +52 -1
- package/SVF-doxygen/html/functions_func_i.html +38 -8
- package/SVF-doxygen/html/functions_func_m.html +5 -2
- package/SVF-doxygen/html/functions_func_n.html +5 -2
- package/SVF-doxygen/html/functions_func_o.html +3 -3
- package/SVF-doxygen/html/functions_func_p.html +6 -5
- package/SVF-doxygen/html/functions_func_r.html +13 -8
- package/SVF-doxygen/html/functions_func_s.html +48 -26
- package/SVF-doxygen/html/functions_func_t.html +3 -0
- package/SVF-doxygen/html/functions_func_w.html +9 -3
- package/SVF-doxygen/html/functions_func_~.html +18 -0
- package/SVF-doxygen/html/functions_g.html +57 -18
- package/SVF-doxygen/html/functions_h.html +55 -4
- package/SVF-doxygen/html/functions_i.html +41 -11
- package/SVF-doxygen/html/functions_m.html +17 -2
- package/SVF-doxygen/html/functions_n.html +8 -5
- package/SVF-doxygen/html/functions_o.html +19 -16
- package/SVF-doxygen/html/functions_p.html +17 -18
- package/SVF-doxygen/html/functions_r.html +17 -7
- package/SVF-doxygen/html/functions_rela.html +6 -0
- package/SVF-doxygen/html/functions_s.html +51 -23
- package/SVF-doxygen/html/functions_t.html +10 -4
- package/SVF-doxygen/html/functions_type.html +2 -1
- package/SVF-doxygen/html/functions_type_c.html +2 -1
- package/SVF-doxygen/html/functions_u.html +5 -2
- package/SVF-doxygen/html/functions_v.html +3 -1
- package/SVF-doxygen/html/functions_vars.html +90 -2
- package/SVF-doxygen/html/functions_vars_b.html +9 -0
- package/SVF-doxygen/html/functions_vars_c.html +3 -0
- package/SVF-doxygen/html/functions_vars_g.html +3 -0
- package/SVF-doxygen/html/functions_vars_m.html +6 -0
- package/SVF-doxygen/html/functions_vars_o.html +3 -0
- package/SVF-doxygen/html/functions_vars_r.html +3 -0
- package/SVF-doxygen/html/functions_vars_t.html +3 -0
- package/SVF-doxygen/html/functions_vars_w.html +3 -0
- package/SVF-doxygen/html/functions_w.html +19 -14
- package/SVF-doxygen/html/functions_~.html +18 -0
- package/SVF-doxygen/html/globals.html +8 -2
- package/SVF-doxygen/html/globals_b.html +3 -0
- package/SVF-doxygen/html/globals_defs.html +9 -0
- package/SVF-doxygen/html/globals_n.html +5 -2
- package/SVF-doxygen/html/globals_s.html +5 -2
- package/SVF-doxygen/html/globals_vars.html +9 -3
- package/SVF-doxygen/html/globals_z.html +3 -3
- package/SVF-doxygen/html/hierarchy.html +647 -640
- package/SVF-doxygen/html/namespaceSVF.html +166 -70
- package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +8 -8
- package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +4 -4
- package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +6 -6
- package/SVF-doxygen/html/namespacemembers_a.html +3 -0
- package/SVF-doxygen/html/namespacemembers_enum.html +3 -0
- package/SVF-doxygen/html/namespacemembers_func_i.html +8 -5
- package/SVF-doxygen/html/namespacemembers_i.html +10 -7
- package/SVF-doxygen/html/search/all_0.js +182 -154
- package/SVF-doxygen/html/search/all_1.js +507 -496
- package/SVF-doxygen/html/search/all_10.js +325 -325
- package/SVF-doxygen/html/search/all_11.js +228 -226
- package/SVF-doxygen/html/search/all_12.js +569 -559
- package/SVF-doxygen/html/search/all_13.js +208 -206
- package/SVF-doxygen/html/search/all_14.js +69 -68
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +78 -75
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +26 -26
- package/SVF-doxygen/html/search/all_1a.js +182 -176
- package/SVF-doxygen/html/search/all_2.js +182 -174
- package/SVF-doxygen/html/search/all_3.js +654 -650
- package/SVF-doxygen/html/search/all_4.js +237 -233
- package/SVF-doxygen/html/search/all_5.js +128 -126
- package/SVF-doxygen/html/search/all_6.js +232 -231
- package/SVF-doxygen/html/search/all_7.js +1060 -1047
- package/SVF-doxygen/html/search/all_8.js +217 -201
- package/SVF-doxygen/html/search/all_9.js +628 -619
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +115 -115
- package/SVF-doxygen/html/search/all_d.js +203 -198
- package/SVF-doxygen/html/search/all_e.js +209 -207
- package/SVF-doxygen/html/search/all_f.js +121 -120
- package/SVF-doxygen/html/search/classes_0.js +29 -26
- package/SVF-doxygen/html/search/classes_1.js +12 -9
- package/SVF-doxygen/html/search/classes_10.js +74 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +20 -20
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +78 -78
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +38 -38
- package/SVF-doxygen/html/search/classes_8.js +58 -58
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +3 -2
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +4 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -7
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +4 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +15 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +15 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +4 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +17 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +47 -45
- package/SVF-doxygen/html/search/files_0.js +15 -14
- package/SVF-doxygen/html/search/files_1.js +9 -7
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +58 -58
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +10 -9
- package/SVF-doxygen/html/search/files_7.js +15 -15
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +4 -4
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +374 -365
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +142 -141
- package/SVF-doxygen/html/search/functions_12.js +298 -291
- package/SVF-doxygen/html/search/functions_13.js +74 -73
- package/SVF-doxygen/html/search/functions_14.js +40 -40
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -36
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +182 -176
- package/SVF-doxygen/html/search/functions_2.js +95 -92
- package/SVF-doxygen/html/search/functions_3.js +266 -262
- package/SVF-doxygen/html/search/functions_4.js +84 -80
- package/SVF-doxygen/html/search/functions_5.js +57 -56
- package/SVF-doxygen/html/search/functions_6.js +65 -64
- package/SVF-doxygen/html/search/functions_7.js +867 -856
- package/SVF-doxygen/html/search/functions_8.js +164 -148
- package/SVF-doxygen/html/search/functions_9.js +440 -431
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +25 -25
- package/SVF-doxygen/html/search/functions_d.js +81 -80
- package/SVF-doxygen/html/search/functions_e.js +36 -35
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +4 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +3 -3
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +20 -20
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +63 -63
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +18 -18
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +57 -57
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +14 -14
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +182 -154
- package/SVF-doxygen/html/search/variables_1.js +76 -76
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +46 -45
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -10
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +41 -38
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -33
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +78 -78
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +57 -55
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -30
- package/SVF-doxygen/html/structSVF_1_1BufOverflowException-members.html +100 -0
- package/SVF-doxygen/html/structSVF_1_1BufOverflowException.html +663 -0
- package/SVF-doxygen/html/structSVF_1_1BufOverflowException.png +0 -0
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +102 -102
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFBasicBlockNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1GrammarBase_1_1Symbol.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1Hash.html +8 -8
- package/SVF-doxygen/html/structSVF_1_1Hash_3_01NodePair_01_4.html +11 -11
- package/SVF-doxygen/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +14 -14
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ConsExeState_01_4.html +7 -7
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +6 -6
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1IntervalExeState_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +11 -11
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1NumericLiteral_01_4.html +6 -6
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1RelExeState_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SingleAbsValue_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +8 -8
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +2 -2
- package/SVF-doxygen/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +15 -15
- package/SVF-doxygen/html/svf-ex_8cpp.html +193 -193
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +212 -213
- package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/package.json +1 -1
- package/svf/include/{AbstractExecution → AE/Core}/AbstractValue.h +0 -1
- package/svf/include/{AbstractExecution → AE/Core}/AddressValue.h +6 -4
- package/svf/include/{AbstractExecution → AE/Core}/CFBasicBlockGWTO.h +2 -0
- package/svf/include/{AbstractExecution → AE/Core}/ConsExeState.h +5 -3
- package/svf/include/{AbstractExecution → AE/Core}/ExeState.h +3 -2
- package/svf/include/{AbstractExecution → AE/Core}/IntervalExeState.h +2 -2
- package/svf/include/{AbstractExecution → AE/Core}/IntervalValue.h +2 -2
- package/svf/include/{AbstractExecution → AE/Core}/NumericLiteral.h +2 -4
- package/svf/include/{AbstractExecution → AE/Core}/RelExeState.h +1 -1
- package/svf/include/{AbstractExecution → AE/Core}/RelationSolver.h +1 -1
- package/svf/include/{AbstractExecution → AE/Core}/SingleAbsValue.h +1 -1
- package/svf/include/{AbstractExecution → AE/Core}/SymState.h +1 -1
- package/svf/include/AE/Svfexe/AE.h +434 -0
- package/svf/include/AE/Svfexe/BufOverflowChecker.h +223 -0
- package/svf/include/{AbstractExecution → AE/Svfexe}/SVFIR2ConsExeState.h +1 -1
- package/svf/include/{AbstractExecution → AE/Svfexe}/SVFIR2ItvExeState.h +4 -4
- package/svf/include/Graphs/CFBasicBlockG.h +6 -0
- package/svf/include/SVFIR/SVFType.h +2 -88
- package/svf/include/Util/CFBasicBlockGBuilder.h +5 -0
- package/svf/include/Util/GeneralType.h +123 -0
- package/svf/include/Util/Options.h +11 -0
- package/svf/lib/{AbstractExecution → AE/Core}/BoundedZ3Expr.cpp +1 -1
- package/svf/lib/{AbstractExecution → AE/Core}/ConsExeState.cpp +2 -5
- package/svf/lib/{AbstractExecution → AE/Core}/ExeState.cpp +2 -2
- package/svf/lib/{AbstractExecution → AE/Core}/IntervalExeState.cpp +1 -1
- package/svf/lib/{AbstractExecution → AE/Core}/RelExeState.cpp +3 -2
- package/svf/lib/{AbstractExecution → AE/Core}/RelationSolver.cpp +1 -1
- package/svf/lib/{AbstractExecution → AE/Core}/SVFIR2Relation.cpp +1 -1
- package/svf/lib/{AbstractExecution → AE/Core}/SymState.cpp +1 -1
- package/svf/lib/AE/Svfexe/AE.cpp +1833 -0
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +839 -0
- package/svf/lib/{AbstractExecution → AE/Svfexe}/SVFIR2ConsExeState.cpp +1 -1
- package/svf/lib/{AbstractExecution → AE/Svfexe}/SVFIR2ItvExeState.cpp +1 -1
- package/svf/lib/Util/Options.cpp +13 -0
- package/svf-llvm/tools/AE/CMakeLists.txt +1 -0
- package/svf-llvm/tools/AE/ae.cpp +91 -26
- package/svf-llvm/tools/Example/svf-ex.cpp +3 -4
- /package/svf/include/{AbstractExecution → AE/Core}/BoundedZ3Expr.h +0 -0
- /package/svf/include/{AbstractExecution → AE/Core}/ICFGWTO.h +0 -0
|
@@ -0,0 +1,984 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
6
|
+
<meta name="generator" content="Doxygen 1.8.17"/>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
8
|
+
<title>Static Value-Flow Analysis: SVF::BufOverflowCheckerAPI Class Reference</title>
|
|
9
|
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
10
|
+
<script type="text/javascript" src="jquery.js"></script>
|
|
11
|
+
<script type="text/javascript" src="dynsections.js"></script>
|
|
12
|
+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
13
|
+
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
14
|
+
<script type="text/javascript" src="search/search.js"></script>
|
|
15
|
+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
19
|
+
<div id="titlearea">
|
|
20
|
+
<table cellspacing="0" cellpadding="0">
|
|
21
|
+
<tbody>
|
|
22
|
+
<tr style="height: 56px;">
|
|
23
|
+
<td id="projectalign" style="padding-left: 0.5em;">
|
|
24
|
+
<div id="projectname">Static Value-Flow Analysis
|
|
25
|
+
</div>
|
|
26
|
+
</td>
|
|
27
|
+
</tr>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
</div>
|
|
31
|
+
<!-- end header part -->
|
|
32
|
+
<!-- Generated by Doxygen 1.8.17 -->
|
|
33
|
+
<script type="text/javascript">
|
|
34
|
+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
35
|
+
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
36
|
+
/* @license-end */
|
|
37
|
+
</script>
|
|
38
|
+
<script type="text/javascript" src="menudata.js"></script>
|
|
39
|
+
<script type="text/javascript" src="menu.js"></script>
|
|
40
|
+
<script type="text/javascript">
|
|
41
|
+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
42
|
+
$(function() {
|
|
43
|
+
initMenu('',true,false,'search.php','Search');
|
|
44
|
+
$(document).ready(function() { init_search(); });
|
|
45
|
+
});
|
|
46
|
+
/* @license-end */</script>
|
|
47
|
+
<div id="main-nav"></div>
|
|
48
|
+
<!-- window showing the filter options -->
|
|
49
|
+
<div id="MSearchSelectWindow"
|
|
50
|
+
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
51
|
+
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
52
|
+
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- iframe showing the search results (closed by default) -->
|
|
56
|
+
<div id="MSearchResultsWindow">
|
|
57
|
+
<iframe src="javascript:void(0)" frameborder="0"
|
|
58
|
+
name="MSearchResults" id="MSearchResults">
|
|
59
|
+
</iframe>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div id="nav-path" class="navpath">
|
|
63
|
+
<ul>
|
|
64
|
+
<li class="navelem"><a class="el" href="namespaceSVF.html">SVF</a></li><li class="navelem"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html">BufOverflowCheckerAPI</a></li> </ul>
|
|
65
|
+
</div>
|
|
66
|
+
</div><!-- top -->
|
|
67
|
+
<div class="header">
|
|
68
|
+
<div class="summary">
|
|
69
|
+
<a href="#pub-methods">Public Member Functions</a> |
|
|
70
|
+
<a href="#pub-static-methods">Static Public Member Functions</a> |
|
|
71
|
+
<a href="#pub-attribs">Public Attributes</a> |
|
|
72
|
+
<a href="classSVF_1_1BufOverflowCheckerAPI-members.html">List of all members</a> </div>
|
|
73
|
+
<div class="headertitle">
|
|
74
|
+
<div class="title">SVF::BufOverflowCheckerAPI Class Reference</div> </div>
|
|
75
|
+
</div><!--header-->
|
|
76
|
+
<div class="contents">
|
|
77
|
+
|
|
78
|
+
<p><code>#include <<a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>></code></p>
|
|
79
|
+
<div class="dynheader">
|
|
80
|
+
Inheritance diagram for SVF::BufOverflowCheckerAPI:</div>
|
|
81
|
+
<div class="dyncontent">
|
|
82
|
+
<div class="center">
|
|
83
|
+
<img src="classSVF_1_1BufOverflowCheckerAPI.png" usemap="#SVF::BufOverflowCheckerAPI_map" alt=""/>
|
|
84
|
+
<map id="SVF::BufOverflowCheckerAPI_map" name="SVF::BufOverflowCheckerAPI_map">
|
|
85
|
+
<area href="classSVF_1_1AEAPI.html" alt="SVF::AEAPI" shape="rect" coords="0,0,182,24"/>
|
|
86
|
+
</map>
|
|
87
|
+
</div></div>
|
|
88
|
+
<table class="memberdecls">
|
|
89
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
90
|
+
Public Member Functions</h2></td></tr>
|
|
91
|
+
<tr class="memitem:ad8c1d7dfcb2fcd14fe0d8911b83500fd"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#ad8c1d7dfcb2fcd14fe0d8911b83500fd">BufOverflowCheckerAPI</a> ()=delete</td></tr>
|
|
92
|
+
<tr class="separator:ad8c1d7dfcb2fcd14fe0d8911b83500fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
93
|
+
<tr class="memitem:a8a041289be216a8b05fa95e03088ef05"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a8a041289be216a8b05fa95e03088ef05">BufOverflowCheckerAPI</a> (<a class="el" href="classSVF_1_1AE.html">AE</a> *ae, <a class="el" href="classSVF_1_1AEStat.html">AEStat</a> *stat)</td></tr>
|
|
94
|
+
<tr class="separator:a8a041289be216a8b05fa95e03088ef05"><td class="memSeparator" colspan="2"> </td></tr>
|
|
95
|
+
<tr class="memitem:a49a9ee0125f2af00cc55c3224611f28e"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a49a9ee0125f2af00cc55c3224611f28e">initExtFunMap</a> ()</td></tr>
|
|
96
|
+
<tr class="separator:a49a9ee0125f2af00cc55c3224611f28e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
97
|
+
<tr class="memitem:a950ff9c290eef3ed8b4343aaa527946e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a950ff9c290eef3ed8b4343aaa527946e">initExtAPIBufOverflowCheckRules</a> ()</td></tr>
|
|
98
|
+
<tr class="separator:a950ff9c290eef3ed8b4343aaa527946e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
99
|
+
<tr class="memitem:a6a4afd9b4546d0a01dc869c6672f6dc6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a6a4afd9b4546d0a01dc869c6672f6dc6">handleExtAPI</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
100
|
+
<tr class="separator:a6a4afd9b4546d0a01dc869c6672f6dc6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
101
|
+
<tr class="memitem:a296a3ea0f8df72ce6480b5cb0f207945"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a296a3ea0f8df72ce6480b5cb0f207945">detectStrcpy</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
102
|
+
<tr class="separator:a296a3ea0f8df72ce6480b5cb0f207945"><td class="memSeparator" colspan="2"> </td></tr>
|
|
103
|
+
<tr class="memitem:ae88696790ca4f3392c7dc76c74619f46"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#ae88696790ca4f3392c7dc76c74619f46">detectStrcat</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
104
|
+
<tr class="separator:ae88696790ca4f3392c7dc76c74619f46"><td class="memSeparator" colspan="2"> </td></tr>
|
|
105
|
+
<tr class="memitem:a62a7eb3560c8ec158c2fe0c1fc95189d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *value, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &len, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *curNode)</td></tr>
|
|
106
|
+
<tr class="separator:a62a7eb3560c8ec158c2fe0c1fc95189d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
107
|
+
<tr class="inherit_header pub_methods_classSVF_1_1AEAPI"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1AEAPI')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classSVF_1_1AEAPI.html">SVF::AEAPI</a></td></tr>
|
|
108
|
+
<tr class="memitem:a680ff8e8913aafa7bea9ceea4a262a72 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a680ff8e8913aafa7bea9ceea4a262a72">AEAPI</a> (<a class="el" href="classSVF_1_1AE.html">AE</a> *ae, <a class="el" href="classSVF_1_1AEStat.html">AEStat</a> *stat)</td></tr>
|
|
109
|
+
<tr class="separator:a680ff8e8913aafa7bea9ceea4a262a72 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
110
|
+
<tr class="memitem:a1b878ba64873caf341984d788d7b4d2a inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a1b878ba64873caf341984d788d7b4d2a">~AEAPI</a> ()</td></tr>
|
|
111
|
+
<tr class="separator:a1b878ba64873caf341984d788d7b4d2a inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
112
|
+
<tr class="memitem:a5172791c4432a4c4ab0f7e97e7b3b596 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a5172791c4432a4c4ab0f7e97e7b3b596">setModule</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfModule)</td></tr>
|
|
113
|
+
<tr class="separator:a5172791c4432a4c4ab0f7e97e7b3b596 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
114
|
+
<tr class="memitem:ab549486e45e0c775c75f0f8749797a1c inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ab549486e45e0c775c75f0f8749797a1c">getKind</a> () const</td></tr>
|
|
115
|
+
<tr class="separator:ab549486e45e0c775c75f0f8749797a1c inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
116
|
+
<tr class="memitem:afe6d49fd36a96bda165654eb393be6f2 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#afe6d49fd36a96bda165654eb393be6f2">getAllocaInstByteSize</a> (const <a class="el" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr)</td></tr>
|
|
117
|
+
<tr class="separator:afe6d49fd36a96bda165654eb393be6f2 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
118
|
+
<tr class="memitem:a3df0f1b34893f44904dce62e6641a58e inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a3df0f1b34893f44904dce62e6641a58e">strRead</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *rhs)</td></tr>
|
|
119
|
+
<tr class="separator:a3df0f1b34893f44904dce62e6641a58e inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
120
|
+
<tr class="memitem:ae0519df0b6927a2d077c3d46beeaa9f7 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVF::SVFValue</a> *strValue)</td></tr>
|
|
121
|
+
<tr class="separator:ae0519df0b6927a2d077c3d46beeaa9f7 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
122
|
+
<tr class="memitem:a4efc7447db13da26ce284218d6c01059 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a4efc7447db13da26ce284218d6c01059">traceMemoryAllocationSize</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *value)</td></tr>
|
|
123
|
+
<tr class="separator:a4efc7447db13da26ce284218d6c01059 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
124
|
+
<tr class="memitem:a13abbe8b8622df63e7f160732bc1cbfc inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a13abbe8b8622df63e7f160732bc1cbfc">handleStrcpy</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
125
|
+
<tr class="separator:a13abbe8b8622df63e7f160732bc1cbfc inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
126
|
+
<tr class="memitem:a4d160903c3bbedbd486be39c40c2c836 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a4d160903c3bbedbd486be39c40c2c836">handleStrcat</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
127
|
+
<tr class="separator:a4d160903c3bbedbd486be39c40c2c836 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
128
|
+
<tr class="memitem:ae0847fb421538982bfd50cc280d1a65b inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ae0847fb421538982bfd50cc280d1a65b">handleMemcpy</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *dst, const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *src, <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> len, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> start_idx)</td></tr>
|
|
129
|
+
<tr class="separator:ae0847fb421538982bfd50cc280d1a65b inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
130
|
+
<tr class="memitem:a185e694007f4d69b0030c65fb54c9c6d inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a185e694007f4d69b0030c65fb54c9c6d">handleMemset</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *dst, <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> elem, <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> len)</td></tr>
|
|
131
|
+
<tr class="separator:a185e694007f4d69b0030c65fb54c9c6d inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
132
|
+
<tr class="memitem:a112519b672206ac552273666949eeb3b inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id)</td></tr>
|
|
133
|
+
<tr class="separator:a112519b672206ac552273666949eeb3b inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
134
|
+
<tr class="memitem:a2dc09f4a21cf629ebe500f856cf86bb4 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a2dc09f4a21cf629ebe500f856cf86bb4">collectCheckPoint</a> ()</td></tr>
|
|
135
|
+
<tr class="separator:a2dc09f4a21cf629ebe500f856cf86bb4 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
136
|
+
<tr class="memitem:aa2a97be698768ddbcab0fec27bde60c8 inherit pub_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#aa2a97be698768ddbcab0fec27bde60c8">checkPointAllSet</a> ()</td></tr>
|
|
137
|
+
<tr class="separator:aa2a97be698768ddbcab0fec27bde60c8 inherit pub_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
138
|
+
</table><table class="memberdecls">
|
|
139
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
|
|
140
|
+
Static Public Member Functions</h2></td></tr>
|
|
141
|
+
<tr class="memitem:a9832ccaca3754bfd4acc2a851c8e0cb4"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a9832ccaca3754bfd4acc2a851c8e0cb4">classof</a> (const <a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a> *api)</td></tr>
|
|
142
|
+
<tr class="separator:a9832ccaca3754bfd4acc2a851c8e0cb4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
143
|
+
<tr class="inherit_header pub_static_methods_classSVF_1_1AEAPI"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classSVF_1_1AEAPI')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classSVF_1_1AEAPI.html">SVF::AEAPI</a></td></tr>
|
|
144
|
+
<tr class="memitem:a31545025fcf62a0c6680ba99666f7b01 inherit pub_static_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a31545025fcf62a0c6680ba99666f7b01">classof</a> (const <a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a> *api)</td></tr>
|
|
145
|
+
<tr class="separator:a31545025fcf62a0c6680ba99666f7b01 inherit pub_static_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
146
|
+
</table><table class="memberdecls">
|
|
147
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
|
|
148
|
+
Public Attributes</h2></td></tr>
|
|
149
|
+
<tr class="memitem:a9bd2a222c9f63c589df5a8d2076ffe03"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#a9bd2a222c9f63c589df5a8d2076ffe03">_addrToGep</a></td></tr>
|
|
150
|
+
<tr class="separator:a9bd2a222c9f63c589df5a8d2076ffe03"><td class="memSeparator" colspan="2"> </td></tr>
|
|
151
|
+
<tr class="memitem:adf5b059cb16c8f35146166269f9e1ebc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, std::vector< std::pair< <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> > > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a></td></tr>
|
|
152
|
+
<tr class="separator:adf5b059cb16c8f35146166269f9e1ebc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
153
|
+
</table><table class="memberdecls">
|
|
154
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
|
155
|
+
Additional Inherited Members</h2></td></tr>
|
|
156
|
+
<tr class="inherit_header pub_types_classSVF_1_1AEAPI"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classSVF_1_1AEAPI')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="classSVF_1_1AEAPI.html">SVF::AEAPI</a></td></tr>
|
|
157
|
+
<tr class="memitem:a29ab312d273e6c9c32a40d61861afb04 inherit pub_types_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04">ExtAPIType</a> { <br />
|
|
158
|
+
  <a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a2dc334d7904e139e2e2b5e9eb2a1bb0a">UNCLASSIFIED</a>,
|
|
159
|
+
<a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">MEMCPY</a>,
|
|
160
|
+
<a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">MEMSET</a>,
|
|
161
|
+
<a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">STRCPY</a>,
|
|
162
|
+
<br />
|
|
163
|
+
  <a class="el" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">STRCAT</a>
|
|
164
|
+
<br />
|
|
165
|
+
}</td></tr>
|
|
166
|
+
<tr class="separator:a29ab312d273e6c9c32a40d61861afb04 inherit pub_types_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
167
|
+
<tr class="memitem:ad4967592a9dcf19d84c85dd08e93137a inherit pub_types_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1ExeState.html#a78038dd4884a501cfc94f073021eac96">ExeState::Addrs</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a></td></tr>
|
|
168
|
+
<tr class="separator:ad4967592a9dcf19d84c85dd08e93137a inherit pub_types_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
169
|
+
<tr class="inherit_header pro_methods_classSVF_1_1AEAPI"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classSVF_1_1AEAPI')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="classSVF_1_1AEAPI.html">SVF::AEAPI</a></td></tr>
|
|
170
|
+
<tr class="memitem:a7be3da80bedb1077a99d67daa124afde inherit pro_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">AccessMemoryViaRetNode</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callnode, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
171
|
+
<tr class="separator:a7be3da80bedb1077a99d67daa124afde inherit pro_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
172
|
+
<tr class="memitem:a3665513f6e8f8b93ef3f9d273d03ee70 inherit pro_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">AccessMemoryViaCopyStmt</a> (const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="el" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
173
|
+
<tr class="separator:a3665513f6e8f8b93ef3f9d273d03ee70 inherit pro_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
174
|
+
<tr class="memitem:afa34cb2ee3fc1ca5aa04a2afe7c2d6e8 inherit pro_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">AccessMemoryViaLoadStmt</a> (const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
175
|
+
<tr class="separator:afa34cb2ee3fc1ca5aa04a2afe7c2d6e8 inherit pro_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
176
|
+
<tr class="memitem:ac49859a7848fbef0e29492e95b031f1f inherit pro_methods_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">AccessMemoryViaCallArgs</a> (const <a class="el" href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a> *arg, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
177
|
+
<tr class="separator:ac49859a7848fbef0e29492e95b031f1f inherit pro_methods_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
178
|
+
<tr class="inherit_header pro_attribs_classSVF_1_1AEAPI"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classSVF_1_1AEAPI')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classSVF_1_1AEAPI.html">SVF::AEAPI</a></td></tr>
|
|
179
|
+
<tr class="memitem:a6cd87d552b2bd81252ef62c624a56b36 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AE.html">AE</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a></td></tr>
|
|
180
|
+
<tr class="separator:a6cd87d552b2bd81252ef62c624a56b36 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
181
|
+
<tr class="memitem:afed1d221bdb876046ec036f1cae53fd3 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AEStat.html">AEStat</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#afed1d221bdb876046ec036f1cae53fd3">_stat</a></td></tr>
|
|
182
|
+
<tr class="separator:afed1d221bdb876046ec036f1cae53fd3 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
183
|
+
<tr class="memitem:ae983d887ccf66c7f21b4712b37ab5f60 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a></td></tr>
|
|
184
|
+
<tr class="separator:ae983d887ccf66c7f21b4712b37ab5f60 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
185
|
+
<tr class="memitem:ac647ce8e5e4e14303a4c8c8fc6321492 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ac647ce8e5e4e14303a4c8c8fc6321492">_kind</a></td></tr>
|
|
186
|
+
<tr class="separator:ac647ce8e5e4e14303a4c8c8fc6321492 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
187
|
+
<tr class="memitem:ab47136a3fee89fa6cad5ddb95306f27f inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, std::function< void(const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a> &)> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a></td></tr>
|
|
188
|
+
<tr class="separator:ab47136a3fee89fa6cad5ddb95306f27f inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
189
|
+
<tr class="memitem:ad364ccca2d91efa83263fad7ed196361 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ad364ccca2d91efa83263fad7ed196361">_checkpoints</a></td></tr>
|
|
190
|
+
<tr class="separator:ad364ccca2d91efa83263fad7ed196361 inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
191
|
+
<tr class="memitem:ace3e82bcfbb4495a765e01d75a58dc3f inherit pro_attribs_classSVF_1_1AEAPI"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AEAPI.html#ace3e82bcfbb4495a765e01d75a58dc3f">_checkpoint_names</a></td></tr>
|
|
192
|
+
<tr class="separator:ace3e82bcfbb4495a765e01d75a58dc3f inherit pro_attribs_classSVF_1_1AEAPI"><td class="memSeparator" colspan="2"> </td></tr>
|
|
193
|
+
</table>
|
|
194
|
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
195
|
+
<div class="textblock">
|
|
196
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00100">100</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
197
|
+
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
198
|
+
<a id="ad8c1d7dfcb2fcd14fe0d8911b83500fd"></a>
|
|
199
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad8c1d7dfcb2fcd14fe0d8911b83500fd">◆ </a></span>BufOverflowCheckerAPI() <span class="overload">[1/2]</span></h2>
|
|
200
|
+
|
|
201
|
+
<div class="memitem">
|
|
202
|
+
<div class="memproto">
|
|
203
|
+
<table class="mlabels">
|
|
204
|
+
<tr>
|
|
205
|
+
<td class="mlabels-left">
|
|
206
|
+
<table class="memname">
|
|
207
|
+
<tr>
|
|
208
|
+
<td class="memname">SVF::BufOverflowCheckerAPI::BufOverflowCheckerAPI </td>
|
|
209
|
+
<td>(</td>
|
|
210
|
+
<td class="paramname"></td><td>)</td>
|
|
211
|
+
<td></td>
|
|
212
|
+
</tr>
|
|
213
|
+
</table>
|
|
214
|
+
</td>
|
|
215
|
+
<td class="mlabels-right">
|
|
216
|
+
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
|
|
217
|
+
</tr>
|
|
218
|
+
</table>
|
|
219
|
+
</div><div class="memdoc">
|
|
220
|
+
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
<a id="a8a041289be216a8b05fa95e03088ef05"></a>
|
|
224
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a8a041289be216a8b05fa95e03088ef05">◆ </a></span>BufOverflowCheckerAPI() <span class="overload">[2/2]</span></h2>
|
|
225
|
+
|
|
226
|
+
<div class="memitem">
|
|
227
|
+
<div class="memproto">
|
|
228
|
+
<table class="mlabels">
|
|
229
|
+
<tr>
|
|
230
|
+
<td class="mlabels-left">
|
|
231
|
+
<table class="memname">
|
|
232
|
+
<tr>
|
|
233
|
+
<td class="memname">SVF::BufOverflowCheckerAPI::BufOverflowCheckerAPI </td>
|
|
234
|
+
<td>(</td>
|
|
235
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1AE.html">AE</a> * </td>
|
|
236
|
+
<td class="paramname"><em>ae</em>, </td>
|
|
237
|
+
</tr>
|
|
238
|
+
<tr>
|
|
239
|
+
<td class="paramkey"></td>
|
|
240
|
+
<td></td>
|
|
241
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1AEStat.html">AEStat</a> * </td>
|
|
242
|
+
<td class="paramname"><em>stat</em> </td>
|
|
243
|
+
</tr>
|
|
244
|
+
<tr>
|
|
245
|
+
<td></td>
|
|
246
|
+
<td>)</td>
|
|
247
|
+
<td></td><td></td>
|
|
248
|
+
</tr>
|
|
249
|
+
</table>
|
|
250
|
+
</td>
|
|
251
|
+
<td class="mlabels-right">
|
|
252
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
253
|
+
</tr>
|
|
254
|
+
</table>
|
|
255
|
+
</div><div class="memdoc">
|
|
256
|
+
|
|
257
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00104">104</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
258
|
+
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  : <a class="code" href="classSVF_1_1AEAPI.html#a680ff8e8913aafa7bea9ceea4a262a72">AEAPI</a>(ae, stat)</div>
|
|
259
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div>
|
|
260
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a49a9ee0125f2af00cc55c3224611f28e">initExtFunMap</a>();</div>
|
|
261
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a950ff9c290eef3ed8b4343aaa527946e">initExtAPIBufOverflowCheckRules</a>();</div>
|
|
262
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1AEAPI.html#ac647ce8e5e4e14303a4c8c8fc6321492">_kind</a> = <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">AEKind::BufOverflowChecker</a>;</div>
|
|
263
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div>
|
|
264
|
+
</div><!-- fragment -->
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
<h2 class="groupheader">Member Function Documentation</h2>
|
|
268
|
+
<a id="a62a7eb3560c8ec158c2fe0c1fc95189d"></a>
|
|
269
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a62a7eb3560c8ec158c2fe0c1fc95189d">◆ </a></span>canSafelyAccessMemory()</h2>
|
|
270
|
+
|
|
271
|
+
<div class="memitem">
|
|
272
|
+
<div class="memproto">
|
|
273
|
+
<table class="memname">
|
|
274
|
+
<tr>
|
|
275
|
+
<td class="memname">bool SVF::BufOverflowCheckerAPI::canSafelyAccessMemory </td>
|
|
276
|
+
<td>(</td>
|
|
277
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * </td>
|
|
278
|
+
<td class="paramname"><em>value</em>, </td>
|
|
279
|
+
</tr>
|
|
280
|
+
<tr>
|
|
281
|
+
<td class="paramkey"></td>
|
|
282
|
+
<td></td>
|
|
283
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> & </td>
|
|
284
|
+
<td class="paramname"><em>len</em>, </td>
|
|
285
|
+
</tr>
|
|
286
|
+
<tr>
|
|
287
|
+
<td class="paramkey"></td>
|
|
288
|
+
<td></td>
|
|
289
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> * </td>
|
|
290
|
+
<td class="paramname"><em>curNode</em> </td>
|
|
291
|
+
</tr>
|
|
292
|
+
<tr>
|
|
293
|
+
<td></td>
|
|
294
|
+
<td>)</td>
|
|
295
|
+
<td></td><td></td>
|
|
296
|
+
</tr>
|
|
297
|
+
</table>
|
|
298
|
+
</div><div class="memdoc">
|
|
299
|
+
<p>detect buffer overflow by giving a var and a length e.g. int x[10]; x[10] = 1; we call canSafelyAccessMemory(x, 11 * sizeof(int));</p>
|
|
300
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
301
|
+
<table class="params">
|
|
302
|
+
<tr><td class="paramname">value</td><td>the value of the buffer overflow checkpoint </td></tr>
|
|
303
|
+
<tr><td class="paramname">len</td><td>the length of the buffer overflow checkpoint </td></tr>
|
|
304
|
+
</table>
|
|
305
|
+
</dd>
|
|
306
|
+
</dl>
|
|
307
|
+
<dl class="section return"><dt>Returns</dt><dd>true if the buffer overflow is detected </dd></dl>
|
|
308
|
+
<p>Usually called by a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> overflow check, or external API (like memcpy) overflow check Defitions of Terms: source node: malloc or gepStmt(array), sink node: gepStmt or external API (like memcpy) e.g. 1) a = malloc(10), a[11] = 10, a[11] is the sink node, a is the source node (malloc) 2) A = struct {int a[10];}, A.a[11] = 10, A.a[11] is the sink, A.a is the source node (gepStmt(array))</p>
|
|
309
|
+
<p>it tracks the value flow from sink to source, and accumulates offset then compare the accumulated offset and malloc size (or gepStmt array size)</p>
|
|
310
|
+
|
|
311
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00595">595</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
312
|
+
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
<a id="a9832ccaca3754bfd4acc2a851c8e0cb4"></a>
|
|
316
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a9832ccaca3754bfd4acc2a851c8e0cb4">◆ </a></span>classof()</h2>
|
|
317
|
+
|
|
318
|
+
<div class="memitem">
|
|
319
|
+
<div class="memproto">
|
|
320
|
+
<table class="mlabels">
|
|
321
|
+
<tr>
|
|
322
|
+
<td class="mlabels-left">
|
|
323
|
+
<table class="memname">
|
|
324
|
+
<tr>
|
|
325
|
+
<td class="memname">static bool SVF::BufOverflowCheckerAPI::classof </td>
|
|
326
|
+
<td>(</td>
|
|
327
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a> * </td>
|
|
328
|
+
<td class="paramname"><em>api</em></td><td>)</td>
|
|
329
|
+
<td></td>
|
|
330
|
+
</tr>
|
|
331
|
+
</table>
|
|
332
|
+
</td>
|
|
333
|
+
<td class="mlabels-right">
|
|
334
|
+
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
335
|
+
</tr>
|
|
336
|
+
</table>
|
|
337
|
+
</div><div class="memdoc">
|
|
338
|
+
|
|
339
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00110">110</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
340
|
+
<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div>
|
|
341
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> api->getKind() == <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">AEKind::BufOverflowChecker</a>;</div>
|
|
342
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div>
|
|
343
|
+
</div><!-- fragment -->
|
|
344
|
+
</div>
|
|
345
|
+
</div>
|
|
346
|
+
<a id="ae88696790ca4f3392c7dc76c74619f46"></a>
|
|
347
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ae88696790ca4f3392c7dc76c74619f46">◆ </a></span>detectStrcat()</h2>
|
|
348
|
+
|
|
349
|
+
<div class="memitem">
|
|
350
|
+
<div class="memproto">
|
|
351
|
+
<table class="memname">
|
|
352
|
+
<tr>
|
|
353
|
+
<td class="memname">bool SVF::BufOverflowCheckerAPI::detectStrcat </td>
|
|
354
|
+
<td>(</td>
|
|
355
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
356
|
+
<td class="paramname"><em>call</em></td><td>)</td>
|
|
357
|
+
<td></td>
|
|
358
|
+
</tr>
|
|
359
|
+
</table>
|
|
360
|
+
</div><div class="memdoc">
|
|
361
|
+
<p>detect buffer overflow from strcat like apis e.g. strcat(dst, src), if dst is shorter than src, we will throw buffer overflow</p>
|
|
362
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
363
|
+
<table class="params">
|
|
364
|
+
<tr><td class="paramname">call</td><td>call node whose callee is strcpy-like external function </td></tr>
|
|
365
|
+
</table>
|
|
366
|
+
</dd>
|
|
367
|
+
</dl>
|
|
368
|
+
<dl class="section return"><dt>Returns</dt><dd>true if the buffer overflow is detected </dd></dl>
|
|
369
|
+
|
|
370
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00381">381</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
371
|
+
<div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> {</div>
|
|
372
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
373
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> SVFFunction *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call->getCallSite());</div>
|
|
374
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// check the arg size</span></div>
|
|
375
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// if it is strcat group, we need to check the length of string,</span></div>
|
|
376
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// e.g. strcat(str1, str2); which checks AllocSize(str1) >= Strlen(str1) + Strlen(str2);</span></div>
|
|
377
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// if it is strncat group, we do not need to check the length of string,</span></div>
|
|
378
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="comment">// e.g. strncat(str1, str2, n); which checks AllocSize(str1) >= Strlen(str1) + n;</span></div>
|
|
379
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  </div>
|
|
380
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">const</span> std::vector<std::string> strcatGroup = {<span class="stringliteral">"__strcat_chk"</span>, <span class="stringliteral">"strcat"</span>, <span class="stringliteral">"__wcscat_chk"</span>, <span class="stringliteral">"wcscat"</span>};</div>
|
|
381
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">const</span> std::vector<std::string> strncatGroup = {<span class="stringliteral">"__strncat_chk"</span>, <span class="stringliteral">"strncat"</span>, <span class="stringliteral">"__wcsncat_chk"</span>, <span class="stringliteral">"wcsncat"</span>};</div>
|
|
382
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun->getName()) != strcatGroup.end())</div>
|
|
383
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  {</div>
|
|
384
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
385
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
386
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keyword">const</span> SVFValue* arg1Val = cs.getArgument(1);</div>
|
|
387
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  IntervalValue strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
|
|
388
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  IntervalValue strLen1 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg1Val);</div>
|
|
389
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  IntervalValue totalLen = strLen0 + strLen1;</div>
|
|
390
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(arg0Val, totalLen, call);</div>
|
|
391
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div>
|
|
392
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun->getName()) != strncatGroup.end())</div>
|
|
393
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div>
|
|
394
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
395
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
396
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">const</span> SVFValue* arg2Val = cs.getArgument(2);</div>
|
|
397
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  IntervalValue arg2Num = ae->_svfir2ExeState->getEs()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
|
|
398
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  IntervalValue strLen0 = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg0Val);</div>
|
|
399
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  IntervalValue totalLen = strLen0 + arg2Num;</div>
|
|
400
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(arg0Val, totalLen, call);</div>
|
|
401
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div>
|
|
402
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">else</span></div>
|
|
403
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div>
|
|
404
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown strcat function, please add it to strcatGroup or strncatGroup"</span>);</div>
|
|
405
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div>
|
|
406
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> }</div>
|
|
407
|
+
</div><!-- fragment -->
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
410
|
+
<a id="a296a3ea0f8df72ce6480b5cb0f207945"></a>
|
|
411
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a296a3ea0f8df72ce6480b5cb0f207945">◆ </a></span>detectStrcpy()</h2>
|
|
412
|
+
|
|
413
|
+
<div class="memitem">
|
|
414
|
+
<div class="memproto">
|
|
415
|
+
<table class="memname">
|
|
416
|
+
<tr>
|
|
417
|
+
<td class="memname">bool SVF::BufOverflowCheckerAPI::detectStrcpy </td>
|
|
418
|
+
<td>(</td>
|
|
419
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
420
|
+
<td class="paramname"><em>call</em></td><td>)</td>
|
|
421
|
+
<td></td>
|
|
422
|
+
</tr>
|
|
423
|
+
</table>
|
|
424
|
+
</div><div class="memdoc">
|
|
425
|
+
<p>detect buffer overflow from strcpy like apis e.g. strcpy(dst, src), if dst is shorter than src, we will throw buffer overflow</p>
|
|
426
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
427
|
+
<table class="params">
|
|
428
|
+
<tr><td class="paramname">call</td><td>call node whose callee is strcpy-like external function </td></tr>
|
|
429
|
+
</table>
|
|
430
|
+
</dd>
|
|
431
|
+
</dl>
|
|
432
|
+
<dl class="section return"><dt>Returns</dt><dd>true if the buffer overflow is detected </dd></dl>
|
|
433
|
+
|
|
434
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00123">123</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
435
|
+
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div>
|
|
436
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
437
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
438
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> SVFValue* arg1Val = cs.getArgument(1);</div>
|
|
439
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  IntervalValue strLen = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(arg1Val);</div>
|
|
440
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// no need to -1, since it has \0 as the last byte</span></div>
|
|
441
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(arg0Val, strLen, call);</div>
|
|
442
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div>
|
|
443
|
+
</div><!-- fragment -->
|
|
444
|
+
</div>
|
|
445
|
+
</div>
|
|
446
|
+
<a id="a6a4afd9b4546d0a01dc869c6672f6dc6"></a>
|
|
447
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6a4afd9b4546d0a01dc869c6672f6dc6">◆ </a></span>handleExtAPI()</h2>
|
|
448
|
+
|
|
449
|
+
<div class="memitem">
|
|
450
|
+
<div class="memproto">
|
|
451
|
+
<table class="mlabels">
|
|
452
|
+
<tr>
|
|
453
|
+
<td class="mlabels-left">
|
|
454
|
+
<table class="memname">
|
|
455
|
+
<tr>
|
|
456
|
+
<td class="memname">void SVF::BufOverflowCheckerAPI::handleExtAPI </td>
|
|
457
|
+
<td>(</td>
|
|
458
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
459
|
+
<td class="paramname"><em>call</em></td><td>)</td>
|
|
460
|
+
<td></td>
|
|
461
|
+
</tr>
|
|
462
|
+
</table>
|
|
463
|
+
</td>
|
|
464
|
+
<td class="mlabels-right">
|
|
465
|
+
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
466
|
+
</tr>
|
|
467
|
+
</table>
|
|
468
|
+
</div><div class="memdoc">
|
|
469
|
+
<p>handle external function call regarding buffer overflow checking e.g. memcpy(dst, src, sz) -> we check allocSize(dst)>=sz and allocSize(src)>=sz</p>
|
|
470
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
471
|
+
<table class="params">
|
|
472
|
+
<tr><td class="paramname">call</td><td>call node whose callee is external function </td></tr>
|
|
473
|
+
</table>
|
|
474
|
+
</dd>
|
|
475
|
+
</dl>
|
|
476
|
+
|
|
477
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">SVF::AEAPI</a>.</p>
|
|
478
|
+
|
|
479
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00419">419</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
480
|
+
<div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div>
|
|
481
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">AEAPI::handleExtAPI</a>(call);</div>
|
|
482
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
483
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">const</span> SVFFunction *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call->getCallSite());</div>
|
|
484
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  assert(fun && <span class="stringliteral">"SVFFunction* is nullptr"</span>);</div>
|
|
485
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
486
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// check the type of mem api,</span></div>
|
|
487
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// MEMCPY: like memcpy, memcpy_chk, llvm.memcpy etc.</span></div>
|
|
488
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// MEMSET: like memset, memset_chk, llvm.memset etc.</span></div>
|
|
489
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// STRCPY: like strcpy, strcpy_chk, wcscpy etc.</span></div>
|
|
490
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// STRCAT: like strcat, strcat_chk, wcscat etc.</span></div>
|
|
491
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// for other ext api like printf, scanf, etc., they have their own handlers</span></div>
|
|
492
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04">ExtAPIType</a> extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a2dc334d7904e139e2e2b5e9eb2a1bb0a">UNCLASSIFIED</a>;</div>
|
|
493
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// get type of mem api</span></div>
|
|
494
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &annotation: fun->getAnnotations())</div>
|
|
495
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div>
|
|
496
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMCPY"</span>) != std::string::npos)</div>
|
|
497
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">MEMCPY</a>;</div>
|
|
498
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMSET"</span>) != std::string::npos)</div>
|
|
499
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">MEMSET</a>;</div>
|
|
500
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCPY"</span>) != std::string::npos)</div>
|
|
501
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">STRCPY</a>;</div>
|
|
502
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCAT"</span>) != std::string::npos)</div>
|
|
503
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">STRCAT</a>;</div>
|
|
504
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div>
|
|
505
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// 1. memcpy functions like memcpy_chk, strncpy, annotate("MEMCPY"), annotate("BUF_CHECK:Arg0, Arg2"), annotate("BUF_CHECK:Arg1, Arg2")</span></div>
|
|
506
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">MEMCPY</a>)</div>
|
|
507
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div>
|
|
508
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
509
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div>
|
|
510
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
511
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun->getName() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
512
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span>;</div>
|
|
513
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div>
|
|
514
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// call parseMemcpyBufferCheckArgs to parse the BUF_CHECK annotation</span></div>
|
|
515
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.at(fun->getName());</div>
|
|
516
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
517
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
518
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div>
|
|
519
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  IntervalValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = ae->_svfir2ExeState->getEs()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(arg.second))] - IntervalValue(1);</div>
|
|
520
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
521
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div>
|
|
522
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  }</div>
|
|
523
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="comment">// 2. memset functions like memset, memset_chk, annotate("MEMSET"), annotate("BUF_CHECK:Arg0, Arg2")</span></div>
|
|
524
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">MEMSET</a>)</div>
|
|
525
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  {</div>
|
|
526
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
527
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  {</div>
|
|
528
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
529
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun->getName() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
530
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">return</span>;</div>
|
|
531
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div>
|
|
532
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.at(fun->getName());</div>
|
|
533
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
534
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
535
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div>
|
|
536
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  IntervalValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = ae->_svfir2ExeState->getEs()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(arg.second))] - IntervalValue(1);</div>
|
|
537
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
538
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div>
|
|
539
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div>
|
|
540
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">STRCPY</a>)</div>
|
|
541
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  {</div>
|
|
542
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a296a3ea0f8df72ce6480b5cb0f207945">detectStrcpy</a>(call);</div>
|
|
543
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div>
|
|
544
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">STRCAT</a>)</div>
|
|
545
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div>
|
|
546
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#ae88696790ca4f3392c7dc76c74619f46">detectStrcat</a>(call);</div>
|
|
547
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div>
|
|
548
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span></div>
|
|
549
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div>
|
|
550
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  </div>
|
|
551
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div>
|
|
552
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">return</span>;</div>
|
|
553
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> }</div>
|
|
554
|
+
</div><!-- fragment -->
|
|
555
|
+
</div>
|
|
556
|
+
</div>
|
|
557
|
+
<a id="a950ff9c290eef3ed8b4343aaa527946e"></a>
|
|
558
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a950ff9c290eef3ed8b4343aaa527946e">◆ </a></span>initExtAPIBufOverflowCheckRules()</h2>
|
|
559
|
+
|
|
560
|
+
<div class="memitem">
|
|
561
|
+
<div class="memproto">
|
|
562
|
+
<table class="memname">
|
|
563
|
+
<tr>
|
|
564
|
+
<td class="memname">void SVF::BufOverflowCheckerAPI::initExtAPIBufOverflowCheckRules </td>
|
|
565
|
+
<td>(</td>
|
|
566
|
+
<td class="paramname"></td><td>)</td>
|
|
567
|
+
<td></td>
|
|
568
|
+
</tr>
|
|
569
|
+
</table>
|
|
570
|
+
</div><div class="memdoc">
|
|
571
|
+
<p>the map of ext apis of buffer overflow checking rules</p>
|
|
572
|
+
<p>it initialize the rules of extapis about buffer overflow checking e.g. memcpy(dst, src, sz) -> we check allocSize(dst)>=sz and allocSize(src)>=sz </p>
|
|
573
|
+
|
|
574
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00076">76</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
575
|
+
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div>
|
|
576
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">//void llvm_memcpy_p0i8_p0i8_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
577
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0i8_p0i8_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
578
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">//void llvm_memcpy_p0_p0_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
579
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0_p0_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
580
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">//void llvm_memcpy_p0i8_p0i8_i32(char* dst, char* src, int sz, int flag){}</span></div>
|
|
581
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0i8_p0i8_i32"</span>] = {{0, 2}, {1,2}};</div>
|
|
582
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">//void llvm_memcpy(char* dst, char* src, int sz, int flag){}</span></div>
|
|
583
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy"</span>] = {{0, 2}, {1,2}};</div>
|
|
584
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">//void llvm_memmove(char* dst, char* src, int sz, int flag){}</span></div>
|
|
585
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove"</span>] = {{0, 2}, {1,2}};</div>
|
|
586
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">//void llvm_memmove_p0i8_p0i8_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
587
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0i8_p0i8_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
588
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">//void llvm_memmove_p0_p0_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
589
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0_p0_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
590
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">//void llvm_memmove_p0i8_p0i8_i32(char* dst, char* src, int sz, int flag){}</span></div>
|
|
591
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0i8_p0i8_i32"</span>] = {{0, 2}, {1,2}};</div>
|
|
592
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">//void __memcpy_chk(char* dst, char* src, int sz, int flag){}</span></div>
|
|
593
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memcpy_chk"</span>] = {{0, 2}, {1,2}};</div>
|
|
594
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">//void *memmove(void *str1, const void *str2, unsigned long n)</span></div>
|
|
595
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"memmove"</span>] = {{0, 2}, {1,2}};</div>
|
|
596
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">//void bcopy(const void *s1, void *s2, unsigned long n){}</span></div>
|
|
597
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"bcopy"</span>] = {{0, 2}, {1,2}};</div>
|
|
598
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">//void *memccpy( void * restrict dest, const void * restrict src, int c, unsigned long count)</span></div>
|
|
599
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"memccpy"</span>] = {{0, 3}, {1,3}};</div>
|
|
600
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">//void __memmove_chk(char* dst, char* src, int sz){}</span></div>
|
|
601
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memmove_chk"</span>] = {{0, 2}, {1,2}};</div>
|
|
602
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">//void llvm_memset(char* dst, char elem, int sz, int flag){}</span></div>
|
|
603
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset"</span>] = {{0, 2}};</div>
|
|
604
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">//void llvm_memset_p0i8_i32(char* dst, char elem, int sz, int flag){}</span></div>
|
|
605
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0i8_i32"</span>] = {{0, 2}};</div>
|
|
606
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">//void llvm_memset_p0i8_i64(char* dst, char elem, int sz, int flag){}</span></div>
|
|
607
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0i8_i64"</span>] = {{0, 2}};</div>
|
|
608
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">//void llvm_memset_p0_i64(char* dst, char elem, int sz, int flag){}</span></div>
|
|
609
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0_i64"</span>] = {{0, 2}};</div>
|
|
610
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">//char *__memset_chk(char * dest, int c, unsigned long destlen, int flag)</span></div>
|
|
611
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memset_chk"</span>] = {{0, 2}};</div>
|
|
612
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">//char *wmemset(wchar_t * dst, wchar_t elem, int sz, int flag) {</span></div>
|
|
613
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"wmemset"</span>] = {{0, 2}};</div>
|
|
614
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">//char *strncpy(char *dest, const char *src, unsigned long n)</span></div>
|
|
615
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"strncpy"</span>] = {{0, 2}, {1,2}};</div>
|
|
616
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">//unsigned long iconv(void* cd, char **restrict inbuf, unsigned long *restrict inbytesleft, char **restrict outbuf, unsigned long *restrict outbytesleft)</span></div>
|
|
617
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"iconv"</span>] = {{1, 2}, {3, 4}};</div>
|
|
618
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div>
|
|
619
|
+
</div><!-- fragment -->
|
|
620
|
+
</div>
|
|
621
|
+
</div>
|
|
622
|
+
<a id="a49a9ee0125f2af00cc55c3224611f28e"></a>
|
|
623
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a49a9ee0125f2af00cc55c3224611f28e">◆ </a></span>initExtFunMap()</h2>
|
|
624
|
+
|
|
625
|
+
<div class="memitem">
|
|
626
|
+
<div class="memproto">
|
|
627
|
+
<table class="mlabels">
|
|
628
|
+
<tr>
|
|
629
|
+
<td class="mlabels-left">
|
|
630
|
+
<table class="memname">
|
|
631
|
+
<tr>
|
|
632
|
+
<td class="memname">void SVF::BufOverflowCheckerAPI::initExtFunMap </td>
|
|
633
|
+
<td>(</td>
|
|
634
|
+
<td class="paramname"></td><td>)</td>
|
|
635
|
+
<td></td>
|
|
636
|
+
</tr>
|
|
637
|
+
</table>
|
|
638
|
+
</td>
|
|
639
|
+
<td class="mlabels-right">
|
|
640
|
+
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
641
|
+
</tr>
|
|
642
|
+
</table>
|
|
643
|
+
</div><div class="memdoc">
|
|
644
|
+
<p>the map of external function to its API type</p>
|
|
645
|
+
<p>it initialize the ext apis about buffer overflow checking </p>
|
|
646
|
+
|
|
647
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AEAPI.html#a243821a56807acf98be9d88f8947e01d">SVF::AEAPI</a>.</p>
|
|
648
|
+
|
|
649
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00133">133</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
650
|
+
<div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div>
|
|
651
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div>
|
|
652
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">auto</span> sse_scanf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
653
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
|
|
654
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">//scanf("%d", &data);</span></div>
|
|
655
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
656
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
657
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
658
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
659
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (!ae->_svfir2ExeState->inVarToAddrsTable(dst_id))</div>
|
|
660
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div>
|
|
661
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  BufOverflowException bug(<span class="stringliteral">"scanf may cause buffer overflow.\n"</span>, 0, 0, 0, 0, cs.getArgument(1));</div>
|
|
662
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  ae->addBugToRecoder(bug, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
663
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span>;</div>
|
|
664
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
|
|
665
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span></div>
|
|
666
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div>
|
|
667
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a> <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a> = ae->_svfir2ExeState->getAddrs(dst_id);</div>
|
|
668
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a>)</div>
|
|
669
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div>
|
|
670
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = ae->_svfir2ExeState-><a class="code" href="classSVF_1_1AddressValue.html#a3be7a2e3ec3215b67cd60f122d2cd10e">getInternalID</a>(vaddr);</div>
|
|
671
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  IntervalValue range = ae->_svfir2ExeState->getRangeLimitFromType(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(objId)-><a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>());</div>
|
|
672
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  es.store(vaddr, range);</div>
|
|
673
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div>
|
|
674
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div>
|
|
675
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  };</div>
|
|
676
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">auto</span> sse_fscanf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
677
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div>
|
|
678
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//fscanf(stdin, "%d", &data);</span></div>
|
|
679
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
680
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
681
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
682
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
683
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (!ae->_svfir2ExeState->inVarToAddrsTable(dst_id))</div>
|
|
684
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div>
|
|
685
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  BufOverflowException bug(<span class="stringliteral">"scanf may cause buffer overflow.\n"</span>, 0, 0, 0, 0, cs.getArgument(2));</div>
|
|
686
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ae->addBugToRecoder(bug, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
687
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span>;</div>
|
|
688
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div>
|
|
689
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">else</span></div>
|
|
690
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div>
|
|
691
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a> <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a> = ae->_svfir2ExeState->getAddrs(dst_id);</div>
|
|
692
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: <a class="code" href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">Addrs</a>)</div>
|
|
693
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div>
|
|
694
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = ae->_svfir2ExeState-><a class="code" href="classSVF_1_1AddressValue.html#a3be7a2e3ec3215b67cd60f122d2cd10e">getInternalID</a>(vaddr);</div>
|
|
695
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  IntervalValue range = ae->_svfir2ExeState->getRangeLimitFromType(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(objId)-><a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>());</div>
|
|
696
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  es.store(vaddr, range);</div>
|
|
697
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div>
|
|
698
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div>
|
|
699
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  };</div>
|
|
700
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div>
|
|
701
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__isoc99_fscanf"</span>] = sse_fscanf;</div>
|
|
702
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__isoc99_scanf"</span>] = sse_scanf;</div>
|
|
703
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__isoc99_vscanf"</span>] = sse_scanf;</div>
|
|
704
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"fscanf"</span>] = sse_fscanf;</div>
|
|
705
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"scanf"</span>] = sse_scanf;</div>
|
|
706
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"sscanf"</span>] = sse_scanf;</div>
|
|
707
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__isoc99_sscanf"</span>] = sse_scanf;</div>
|
|
708
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"vscanf"</span>] = sse_scanf;</div>
|
|
709
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div>
|
|
710
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> sse_fread = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
711
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div>
|
|
712
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
713
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
714
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
715
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> block_count_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
716
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> block_size_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
717
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  IntervalValue block_count = es[block_count_id];</div>
|
|
718
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  IntervalValue block_size = es[block_size_id];</div>
|
|
719
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  IntervalValue block_byte = block_count * block_size;</div>
|
|
720
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(0), block_byte, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
721
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  };</div>
|
|
722
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"fread"</span>] = sse_fread;</div>
|
|
723
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  </div>
|
|
724
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">auto</span> sse_sprintf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
725
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div>
|
|
726
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// printf is difficult to predict since it has no byte size arguments</span></div>
|
|
727
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  };</div>
|
|
728
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div>
|
|
729
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">auto</span> sse_snprintf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
730
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div>
|
|
731
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
732
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
733
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
734
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
735
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
|
|
736
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// get elem size of arg2</span></div>
|
|
737
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
|
|
738
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (cs.getArgument(2)->getType()->isArrayTy())</div>
|
|
739
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div>
|
|
740
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  elemSize = SVFUtil::dyn_cast<SVFArrayType>(cs.getArgument(2)->getType())->getTypeOfElement()->getByteSize();</div>
|
|
741
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div>
|
|
742
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cs.getArgument(2)->getType()->isPointerTy())</div>
|
|
743
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div>
|
|
744
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  elemSize = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2)))-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
745
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div>
|
|
746
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">else</span></div>
|
|
747
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div>
|
|
748
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span>;</div>
|
|
749
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// assert(false && "we cannot support this type");</span></div>
|
|
750
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div>
|
|
751
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  IntervalValue size = es[size_id] * IntervalValue(elemSize) - IntervalValue(1);</div>
|
|
752
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (!es.inVarToAddrsTable(dst_id))</div>
|
|
753
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div>
|
|
754
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#afbe432aabda95308e2c190a04d227a6d">Options::BufferOverflowCheck</a>())</div>
|
|
755
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div>
|
|
756
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  BufOverflowException bug(</div>
|
|
757
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="stringliteral">"snprintf dst_id or dst is not defined nor initializesd.\n"</span>,</div>
|
|
758
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  0, 0, 0, 0, cs.getArgument(0));</div>
|
|
759
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  ae->addBugToRecoder(bug, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
760
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span>;</div>
|
|
761
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div>
|
|
762
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div>
|
|
763
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(0), size, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
764
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  };</div>
|
|
765
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__snprintf_chk"</span>] = sse_snprintf;</div>
|
|
766
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__vsprintf_chk"</span>] = sse_sprintf;</div>
|
|
767
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__sprintf_chk"</span>] = sse_sprintf;</div>
|
|
768
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"snprintf"</span>] = sse_snprintf;</div>
|
|
769
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"sprintf"</span>] = sse_sprintf;</div>
|
|
770
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"vsprintf"</span>] = sse_sprintf;</div>
|
|
771
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"vsnprintf"</span>] = sse_snprintf;</div>
|
|
772
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__vsnprintf_chk"</span>] = sse_snprintf;</div>
|
|
773
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"swprintf"</span>] = sse_snprintf;</div>
|
|
774
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"_snwprintf"</span>] = sse_snprintf;</div>
|
|
775
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
|
|
776
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div>
|
|
777
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">auto</span> sse_itoa = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
778
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div>
|
|
779
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// itoa(num, ch, 10);</span></div>
|
|
780
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// num: int, ch: char*, 10 is decimal</span></div>
|
|
781
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
782
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
783
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
784
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
|
|
785
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div>
|
|
786
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) es[num_id].getNumeral();</div>
|
|
787
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> snum = std::to_string(num);</div>
|
|
788
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(1), IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)snum.size()), <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
789
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  };</div>
|
|
790
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"itoa"</span>] = sse_itoa;</div>
|
|
791
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div>
|
|
792
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  </div>
|
|
793
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">auto</span> sse_strlen = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
794
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div>
|
|
795
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// check the arg size</span></div>
|
|
796
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
797
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (cs.arg_size() < 1) <span class="keywordflow">return</span>;</div>
|
|
798
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> SVFValue* strValue = cs.getArgument(0);</div>
|
|
799
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
800
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  IntervalValue dst_size = <a class="code" href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">getStrlen</a>(strValue);</div>
|
|
801
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
|
|
802
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (strValue->getType()->isArrayTy())</div>
|
|
803
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div>
|
|
804
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  elemSize = SVFUtil::dyn_cast<SVFArrayType>(strValue->getType())->getTypeOfElement()->getByteSize();</div>
|
|
805
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div>
|
|
806
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue->getType()->isPointerTy())</div>
|
|
807
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div>
|
|
808
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  elemSize = <a class="code" href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">getPointeeElement</a>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue))-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
809
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div>
|
|
810
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getInstruction());</div>
|
|
811
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  es[lhsId] = dst_size / IntervalValue(elemSize);</div>
|
|
812
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  };</div>
|
|
813
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"strlen"</span>] = sse_strlen;</div>
|
|
814
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"wcslen"</span>] = sse_strlen;</div>
|
|
815
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  </div>
|
|
816
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">auto</span> sse_recv = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
817
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div>
|
|
818
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// recv(sockfd, buf, len, flags);</span></div>
|
|
819
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
820
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (cs.arg_size() < 4) <span class="keywordflow">return</span>;</div>
|
|
821
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
822
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
823
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  IntervalValue len = es[len_id] - IntervalValue(1);</div>
|
|
824
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getInstruction());</div>
|
|
825
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  es[lhsId] = len;</div>
|
|
826
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(1), len, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));;</div>
|
|
827
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  };</div>
|
|
828
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"recv"</span>] = sse_recv;</div>
|
|
829
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"__recv"</span>] = sse_recv;</div>
|
|
830
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">auto</span> safe_bufaccess = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
831
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div>
|
|
832
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
833
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="classSVF_1_1AEAPI.html#ad364ccca2d91efa83263fad7ed196361">_checkpoints</a>.erase(callNode);</div>
|
|
834
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">//void SAFE_BUFACCESS(void* data, int size);</span></div>
|
|
835
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
836
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
837
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
838
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
839
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  IntervalValue val = es[size_id];</div>
|
|
840
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
841
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div>
|
|
842
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  val = IntervalValue(0);</div>
|
|
843
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"SAFE_BUFACCESS size is bottom"</span>);</div>
|
|
844
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
|
|
845
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> isSafe = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(0), val, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
846
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (isSafe)</div>
|
|
847
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div>
|
|
848
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  std::cout << <span class="stringliteral">"safe buffer access success\n"</span>;</div>
|
|
849
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span>;</div>
|
|
850
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div>
|
|
851
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">else</span></div>
|
|
852
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div>
|
|
853
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> err_msg = <span class="stringliteral">"this SAFE_BUFACCESS should be a safe access but detected buffer overflow. Pos: "</span>;</div>
|
|
854
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  err_msg += cs.getInstruction()->getSourceLoc();</div>
|
|
855
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  std::cerr << err_msg << std::endl;</div>
|
|
856
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  assert(<span class="keyword">false</span>);</div>
|
|
857
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div>
|
|
858
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  };</div>
|
|
859
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"SAFE_BUFACCESS"</span>] = safe_bufaccess;</div>
|
|
860
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  </div>
|
|
861
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keyword">auto</span> unsafe_bufaccess = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
862
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div>
|
|
863
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
864
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1AEAPI.html#ad364ccca2d91efa83263fad7ed196361">_checkpoints</a>.erase(callNode);</div>
|
|
865
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">//void UNSAFE_BUFACCESS(void* data, int size);</span></div>
|
|
866
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">_ae</a>);</div>
|
|
867
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
868
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  IntervalExeState &es = ae->_svfir2ExeState->getEs();</div>
|
|
869
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
870
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  IntervalValue val = es[size_id];</div>
|
|
871
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
872
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div>
|
|
873
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"UNSAFE_BUFACCESS size is bottom"</span>);</div>
|
|
874
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div>
|
|
875
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">bool</span> isSafe = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.getArgument(0), val, <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
876
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span> (!isSafe)</div>
|
|
877
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div>
|
|
878
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::cout << <span class="stringliteral">"detect buffer overflow success\n"</span>;</div>
|
|
879
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span>;</div>
|
|
880
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div>
|
|
881
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">else</span></div>
|
|
882
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div>
|
|
883
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// if it is safe, it means it is wrongly labeled, assert false.</span></div>
|
|
884
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> err_msg = <span class="stringliteral">"this UNSAFE_BUFACCESS should be a buffer overflow but not detected. Pos: "</span>;</div>
|
|
885
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  err_msg += cs.getInstruction()->getSourceLoc();</div>
|
|
886
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  std::cerr << err_msg << std::endl;</div>
|
|
887
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  assert(<span class="keyword">false</span>);</div>
|
|
888
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div>
|
|
889
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  };</div>
|
|
890
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">_func_map</a>[<span class="stringliteral">"UNSAFE_BUFACCESS"</span>] = unsafe_bufaccess;</div>
|
|
891
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  </div>
|
|
892
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="comment">// init _checkpoint_names</span></div>
|
|
893
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1AEAPI.html#ace3e82bcfbb4495a765e01d75a58dc3f">_checkpoint_names</a>.insert(<span class="stringliteral">"SAFE_BUFACCESS"</span>);</div>
|
|
894
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="classSVF_1_1AEAPI.html#ace3e82bcfbb4495a765e01d75a58dc3f">_checkpoint_names</a>.insert(<span class="stringliteral">"UNSAFE_BUFACCESS"</span>);</div>
|
|
895
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> }</div>
|
|
896
|
+
</div><!-- fragment -->
|
|
897
|
+
</div>
|
|
898
|
+
</div>
|
|
899
|
+
<h2 class="groupheader">Member Data Documentation</h2>
|
|
900
|
+
<a id="a9bd2a222c9f63c589df5a8d2076ffe03"></a>
|
|
901
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a9bd2a222c9f63c589df5a8d2076ffe03">◆ </a></span>_addrToGep</h2>
|
|
902
|
+
|
|
903
|
+
<div class="memitem">
|
|
904
|
+
<div class="memproto">
|
|
905
|
+
<table class="memname">
|
|
906
|
+
<tr>
|
|
907
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>*> SVF::BufOverflowCheckerAPI::_addrToGep</td>
|
|
908
|
+
</tr>
|
|
909
|
+
</table>
|
|
910
|
+
</div><div class="memdoc">
|
|
911
|
+
|
|
912
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00166">166</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
913
|
+
|
|
914
|
+
</div>
|
|
915
|
+
</div>
|
|
916
|
+
<a id="adf5b059cb16c8f35146166269f9e1ebc"></a>
|
|
917
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adf5b059cb16c8f35146166269f9e1ebc">◆ </a></span>_extAPIBufOverflowCheckRules</h2>
|
|
918
|
+
|
|
919
|
+
<div class="memitem">
|
|
920
|
+
<div class="memproto">
|
|
921
|
+
<table class="memname">
|
|
922
|
+
<tr>
|
|
923
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, std::vector<std::pair<<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>> > > SVF::BufOverflowCheckerAPI::_extAPIBufOverflowCheckRules</td>
|
|
924
|
+
</tr>
|
|
925
|
+
</table>
|
|
926
|
+
</div><div class="memdoc">
|
|
927
|
+
|
|
928
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00167">167</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
929
|
+
|
|
930
|
+
</div>
|
|
931
|
+
</div>
|
|
932
|
+
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
933
|
+
<li>/home/runner/work/SVF/SVF/svf/include/AE/Svfexe/<a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a></li>
|
|
934
|
+
<li>/home/runner/work/SVF/SVF/svf/lib/AE/Svfexe/<a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a></li>
|
|
935
|
+
</ul>
|
|
936
|
+
</div><!-- contents -->
|
|
937
|
+
<div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00244">SVFType.h:244</a></div></div>
|
|
938
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a62a7eb3560c8ec158c2fe0c1fc95189d"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">SVF::BufOverflowCheckerAPI::canSafelyAccessMemory</a></div><div class="ttdeci">bool canSafelyAccessMemory(const SVFValue *value, const IntervalValue &len, const ICFGNode *curNode)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00595">BufOverflowChecker.cpp:595</a></div></div>
|
|
939
|
+
<div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
|
|
940
|
+
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00138">IRGraph.h:138</a></div></div>
|
|
941
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ad364ccca2d91efa83263fad7ed196361"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ad364ccca2d91efa83263fad7ed196361">SVF::AEAPI::_checkpoints</a></div><div class="ttdeci">Set< const CallICFGNode * > _checkpoints</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00431">AE.h:431</a></div></div>
|
|
942
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
943
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">SVF::AEAPI::STRCAT</a></div><div class="ttdeci">@ STRCAT</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
944
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ae983d887ccf66c7f21b4712b37ab5f60"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">SVF::AEAPI::_svfir</a></div><div class="ttdeci">SVFIR * _svfir</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00426">AE.h:426</a></div></div>
|
|
945
|
+
<div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">SVF::AEKind::BufOverflowChecker</a></div><div class="ttdeci">@ BufOverflowChecker</div></div>
|
|
946
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a6cd87d552b2bd81252ef62c624a56b36"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a6cd87d552b2bd81252ef62c624a56b36">SVF::AEAPI::_ae</a></div><div class="ttdeci">AE * _ae</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00424">AE.h:424</a></div></div>
|
|
947
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_adf5b059cb16c8f35146166269f9e1ebc"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">SVF::BufOverflowCheckerAPI::_extAPIBufOverflowCheckRules</a></div><div class="ttdeci">Map< std::string, std::vector< std::pair< u32_t, u32_t > > > _extAPIBufOverflowCheckRules</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8h_source.html#l00167">BufOverflowChecker.h:167</a></div></div>
|
|
948
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00241">SVFUtil.h:241</a></div></div>
|
|
949
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">SVF::AEAPI::MEMCPY</a></div><div class="ttdeci">@ MEMCPY</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
950
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ae0519df0b6927a2d077c3d46beeaa9f7"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ae0519df0b6927a2d077c3d46beeaa9f7">SVF::AEAPI::getStrlen</a></div><div class="ttdeci">IntervalValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AE_8cpp_source.html#l01526">AE.cpp:1526</a></div></div>
|
|
951
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a680ff8e8913aafa7bea9ceea4a262a72"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a680ff8e8913aafa7bea9ceea4a262a72">SVF::AEAPI::AEAPI</a></div><div class="ttdeci">AEAPI(AE *ae, AEStat *stat)</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00298">AE.h:298</a></div></div>
|
|
952
|
+
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
953
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a49a9ee0125f2af00cc55c3224611f28e"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a49a9ee0125f2af00cc55c3224611f28e">SVF::BufOverflowCheckerAPI::initExtFunMap</a></div><div class="ttdeci">virtual void initExtFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00133">BufOverflowChecker.cpp:133</a></div></div>
|
|
954
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">SVF::AEAPI::MEMSET</a></div><div class="ttdeci">@ MEMSET</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
955
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00088">ICFG.h:88</a></div></div>
|
|
956
|
+
<div class="ttc" id="aclassSVF_1_1AddressValue_html_a3be7a2e3ec3215b67cd60f122d2cd10e"><div class="ttname"><a href="classSVF_1_1AddressValue.html#a3be7a2e3ec3215b67cd60f122d2cd10e">SVF::AddressValue::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00217">AddressValue.h:217</a></div></div>
|
|
957
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04a2dc334d7904e139e2e2b5e9eb2a1bb0a"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a2dc334d7904e139e2e2b5e9eb2a1bb0a">SVF::AEAPI::UNCLASSIFIED</a></div><div class="ttdeci">@ UNCLASSIFIED</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
958
|
+
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
|
|
959
|
+
<div class="ttc" id="aclassSVF_1_1Options_html_afbe432aabda95308e2c190a04d227a6d"><div class="ttname"><a href="classSVF_1_1Options.html#afbe432aabda95308e2c190a04d227a6d">SVF::Options::BufferOverflowCheck</a></div><div class="ttdeci">static const Option< bool > BufferOverflowCheck</div><div class="ttdoc">open buffer overflow checker, Default: false</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00271">Options.h:271</a></div></div>
|
|
960
|
+
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
|
|
961
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00170">SVFIR.h:170</a></div></div>
|
|
962
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_af64d742317f2ddad87b87012225ddaaa"><div class="ttname"><a href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">SVF::AEAPI::handleExtAPI</a></div><div class="ttdeci">virtual void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AE_8cpp_source.html#l01247">AE.cpp:1247</a></div></div>
|
|
963
|
+
<div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
|
|
964
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a950ff9c290eef3ed8b4343aaa527946e"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a950ff9c290eef3ed8b4343aaa527946e">SVF::BufOverflowCheckerAPI::initExtAPIBufOverflowCheckRules</a></div><div class="ttdeci">void initExtAPIBufOverflowCheckRules()</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00076">BufOverflowChecker.cpp:76</a></div></div>
|
|
965
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ad4967592a9dcf19d84c85dd08e93137a"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ad4967592a9dcf19d84c85dd08e93137a">SVF::AEAPI::Addrs</a></div><div class="ttdeci">ExeState::Addrs Addrs</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00285">AE.h:285</a></div></div>
|
|
966
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">SVF::AEAPI::STRCPY</a></div><div class="ttdeci">@ STRCPY</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
967
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ab47136a3fee89fa6cad5ddb95306f27f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ab47136a3fee89fa6cad5ddb95306f27f">SVF::AEAPI::_func_map</a></div><div class="ttdeci">Map< std::string, std::function< void(const CallSite &)> > _func_map</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00429">AE.h:429</a></div></div>
|
|
968
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_ae88696790ca4f3392c7dc76c74619f46"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#ae88696790ca4f3392c7dc76c74619f46">SVF::BufOverflowCheckerAPI::detectStrcat</a></div><div class="ttdeci">bool detectStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00381">BufOverflowChecker.cpp:381</a></div></div>
|
|
969
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ace3e82bcfbb4495a765e01d75a58dc3f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ace3e82bcfbb4495a765e01d75a58dc3f">SVF::AEAPI::_checkpoint_names</a></div><div class="ttdeci">Set< std::string > _checkpoint_names</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00432">AE.h:432</a></div></div>
|
|
970
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a296a3ea0f8df72ce6480b5cb0f207945"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a296a3ea0f8df72ce6480b5cb0f207945">SVF::BufOverflowCheckerAPI::detectStrcpy</a></div><div class="ttdeci">bool detectStrcpy(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00123">BufOverflowChecker.cpp:123</a></div></div>
|
|
971
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html_ab6f95d3e7e099d75cfc9645ebc037047"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">SVF::SVFVar::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdoc">Return type of the value.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
|
|
972
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ac647ce8e5e4e14303a4c8c8fc6321492"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ac647ce8e5e4e14303a4c8c8fc6321492">SVF::AEAPI::_kind</a></div><div class="ttdeci">AEKind _kind</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00427">AE.h:427</a></div></div>
|
|
973
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a29ab312d273e6c9c32a40d61861afb04"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04">SVF::AEAPI::ExtAPIType</a></div><div class="ttdeci">ExtAPIType</div><div class="ttdef"><b>Definition:</b> <a href="AE_8h_source.html#l00286">AE.h:286</a></div></div>
|
|
974
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a112519b672206ac552273666949eeb3b"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a112519b672206ac552273666949eeb3b">SVF::AEAPI::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AE_8cpp_source.html#l01673">AE.cpp:1673</a></div></div>
|
|
975
|
+
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00046">GeneralType.h:46</a></div></div>
|
|
976
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
977
|
+
<!-- start footer part -->
|
|
978
|
+
<hr class="footer"/><address class="footer"><small>
|
|
979
|
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
980
|
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
981
|
+
</a> 1.8.17
|
|
982
|
+
</small></address>
|
|
983
|
+
</body>
|
|
984
|
+
</html>
|