svf-tools 1.0.890 → 1.0.892
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/AbstractExecution_8cpp_source.html +451 -450
- package/SVF-doxygen/html/AbstractExecution_8h_source.html +11 -11
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +150 -147
- package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
- package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +426 -425
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CppUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +43 -44
- package/SVF-doxygen/html/ICFGWTO_8h_source.html +4 -4
- package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +556 -556
- package/SVF-doxygen/html/LLVMModule_8h_source.html +15 -15
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +552 -525
- package/SVF-doxygen/html/LLVMUtil_8h.html +2 -0
- package/SVF-doxygen/html/LLVMUtil_8h_source.html +55 -52
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +828 -827
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +20 -20
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/WTO_8h.html +1 -0
- package/SVF-doxygen/html/WTO_8h_source.html +812 -811
- package/SVF-doxygen/html/ae_8cpp.html +46 -47
- package/SVF-doxygen/html/ae_8cpp_source.html +46 -47
- package/SVF-doxygen/html/classSVF_1_1AEAPI.html +432 -431
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +136 -133
- package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +82 -81
- package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +43 -44
- package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +538 -538
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +792 -791
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1WTO.html +253 -253
- package/SVF-doxygen/html/classSVF_1_1WTOComponent.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1WTOComponentVisitor.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1WTOCycle.html +61 -61
- package/SVF-doxygen/html/classSVF_1_1WTOCycleDepth.html +115 -115
- package/SVF-doxygen/html/classSVF_1_1WTONode.html +31 -31
- package/SVF-doxygen/html/classSVF_1_1WTO_1_1WTOCycleDepthBuilder.html +31 -31
- package/SVF-doxygen/html/globals_vars.html +3 -3
- package/SVF-doxygen/html/globals_z.html +3 -3
- package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +529 -483
- package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
- package/SVF-doxygen/html/namespacemembers_func_r.html +3 -0
- package/SVF-doxygen/html/namespacemembers_r.html +3 -0
- package/SVF-doxygen/html/search/all_11.js +54 -53
- package/SVF-doxygen/html/search/all_12.js +570 -570
- package/SVF-doxygen/html/search/all_13.js +207 -207
- package/SVF-doxygen/html/search/all_14.js +70 -70
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +77 -77
- 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 +180 -180
- package/SVF-doxygen/html/search/classes_0.js +29 -29
- package/SVF-doxygen/html/search/classes_1.js +12 -12
- 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 +19 -19
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +73 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/search/classes_7.js +38 -38
- package/SVF-doxygen/html/search/classes_8.js +59 -59
- 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 -3
- 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 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -4
- 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 -4
- 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 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
- 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 -17
- 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 -47
- package/SVF-doxygen/html/search/files_0.js +16 -16
- package/SVF-doxygen/html/search/files_1.js +9 -9
- 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 +53 -53
- 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 -10
- package/SVF-doxygen/html/search/files_7.js +17 -17
- 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 +369 -369
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -139
- package/SVF-doxygen/html/search/functions_12.js +299 -299
- package/SVF-doxygen/html/search/functions_13.js +73 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +180 -180
- package/SVF-doxygen/html/search/functions_2.js +95 -95
- package/SVF-doxygen/html/search/functions_3.js +261 -261
- package/SVF-doxygen/html/search/functions_4.js +84 -84
- package/SVF-doxygen/html/search/functions_5.js +57 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +863 -863
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +439 -439
- 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 +82 -82
- package/SVF-doxygen/html/search/functions_e.js +36 -36
- 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 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- 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 +5 -5
- 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 +19 -19
- 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 +125 -125
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +54 -54
- 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 +15 -15
- 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 +177 -177
- 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 -46
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- 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 -11
- 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 -41
- 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 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +79 -79
- 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 -57
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__edgetype.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__edgetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1EdgeType_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__nodetype.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__nodetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1NodeType_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +12 -12
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +12 -12
- package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/package.json +1 -1
- package/svf/include/Graphs/WTO.h +1 -0
- package/svf/lib/AE/Svfexe/AbstractExecution.cpp +1 -0
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +1 -0
- package/svf/lib/AE/Svfexe/ICFGSimplification.cpp +1 -2
- package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +1 -0
- package/svf/lib/MemoryModel/AccessPath.cpp +4 -1
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +2 -0
- package/svf-llvm/lib/LLVMModule.cpp +3 -4
- package/svf-llvm/lib/LLVMUtil.cpp +29 -2
- package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
- package/svf-llvm/tools/AE/ae.cpp +1 -2
|
@@ -485,423 +485,424 @@ $(function() {
|
|
|
485
485
|
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div>
|
|
486
486
|
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div>
|
|
487
487
|
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown strcat function, please add it to strcatGroup or strncatGroup"</span>);</div>
|
|
488
|
-
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> 
|
|
489
|
-
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div>
|
|
490
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> 
|
|
491
|
-
<div class="line"><a name="l00420"></a><span class="lineno"
|
|
492
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> 
|
|
493
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
494
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="
|
|
495
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <
|
|
496
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
|
|
497
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> 
|
|
498
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <
|
|
499
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">//
|
|
500
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">//
|
|
501
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">//
|
|
502
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">//
|
|
503
|
-
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">//
|
|
504
|
-
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <
|
|
505
|
-
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <
|
|
506
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="
|
|
507
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> 
|
|
508
|
-
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> 
|
|
509
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
510
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
511
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> 
|
|
512
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
513
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
514
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
515
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> 
|
|
516
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
517
|
-
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> 
|
|
518
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="
|
|
519
|
-
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> 
|
|
520
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
521
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> 
|
|
522
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> 
|
|
523
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <
|
|
524
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="
|
|
525
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
526
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> 
|
|
527
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
528
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <
|
|
529
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="
|
|
530
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
531
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> 
|
|
532
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="
|
|
533
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> 
|
|
534
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
535
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
536
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="
|
|
537
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> 
|
|
538
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> 
|
|
539
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> 
|
|
540
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> 
|
|
541
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <
|
|
542
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="
|
|
543
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> 
|
|
544
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> 
|
|
545
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <
|
|
546
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="
|
|
547
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> 
|
|
548
|
-
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> 
|
|
549
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="
|
|
550
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> 
|
|
551
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
552
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> 
|
|
553
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
554
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
555
|
-
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> 
|
|
556
|
-
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> 
|
|
557
|
-
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> 
|
|
558
|
-
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> 
|
|
559
|
-
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> 
|
|
560
|
-
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> 
|
|
561
|
-
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> 
|
|
562
|
-
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> 
|
|
563
|
-
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> 
|
|
564
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> 
|
|
565
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> 
|
|
566
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> 
|
|
567
|
-
<div class="line"><a name="l00496"></a><span class="lineno"
|
|
568
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> 
|
|
569
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> 
|
|
570
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keyword">
|
|
571
|
-
<div class="line"><a name="
|
|
572
|
-
<div class="line"><a name="
|
|
573
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="
|
|
574
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> 
|
|
575
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> 
|
|
576
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="
|
|
577
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
578
|
-
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> 
|
|
579
|
-
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> 
|
|
580
|
-
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> 
|
|
581
|
-
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> 
|
|
582
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> 
|
|
583
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
584
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
585
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="
|
|
586
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
587
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> 
|
|
588
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
589
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
590
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
591
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> 
|
|
592
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
593
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
594
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> 
|
|
595
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> 
|
|
596
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> 
|
|
597
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> 
|
|
598
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> 
|
|
599
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> 
|
|
600
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
601
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> 
|
|
602
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">//
|
|
603
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">//
|
|
604
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="comment">//
|
|
605
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">//
|
|
606
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="comment">//
|
|
607
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="comment">//
|
|
608
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">//
|
|
609
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">//
|
|
610
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">//
|
|
611
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">//
|
|
612
|
-
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="comment">//
|
|
613
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  </div>
|
|
614
|
-
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> 
|
|
615
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="comment">//
|
|
616
|
-
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="comment">//
|
|
617
|
-
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">//
|
|
618
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  </div>
|
|
619
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> 
|
|
620
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">//
|
|
621
|
-
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">//
|
|
622
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">//
|
|
623
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <
|
|
624
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <
|
|
625
|
-
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> 
|
|
626
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> 
|
|
627
|
-
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> 
|
|
628
|
-
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> 
|
|
629
|
-
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> 
|
|
630
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> 
|
|
631
|
-
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> 
|
|
632
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> 
|
|
633
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> 
|
|
634
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> 
|
|
635
|
-
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> 
|
|
636
|
-
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> 
|
|
637
|
-
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> 
|
|
638
|
-
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> 
|
|
639
|
-
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> 
|
|
640
|
-
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> 
|
|
641
|
-
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> 
|
|
642
|
-
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">const</span> <a class="code" href="
|
|
643
|
-
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  </div>
|
|
644
|
-
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> 
|
|
645
|
-
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> 
|
|
646
|
-
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> 
|
|
647
|
-
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="
|
|
648
|
-
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <
|
|
649
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <
|
|
650
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <
|
|
651
|
-
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> 
|
|
652
|
-
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> 
|
|
653
|
-
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> 
|
|
654
|
-
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> 
|
|
655
|
-
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> 
|
|
656
|
-
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> 
|
|
657
|
-
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> 
|
|
658
|
-
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> 
|
|
659
|
-
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="
|
|
660
|
-
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <
|
|
661
|
-
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> 
|
|
662
|
-
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> 
|
|
663
|
-
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> 
|
|
664
|
-
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> 
|
|
665
|
-
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> 
|
|
666
|
-
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> 
|
|
667
|
-
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> 
|
|
668
|
-
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> 
|
|
669
|
-
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> 
|
|
670
|
-
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> 
|
|
671
|
-
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> 
|
|
672
|
-
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> 
|
|
673
|
-
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> 
|
|
674
|
-
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> 
|
|
675
|
-
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> 
|
|
676
|
-
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> 
|
|
677
|
-
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> 
|
|
678
|
-
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> 
|
|
679
|
-
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> 
|
|
680
|
-
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> 
|
|
681
|
-
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> 
|
|
682
|
-
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <
|
|
683
|
-
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <
|
|
684
|
-
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> 
|
|
685
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> 
|
|
686
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  msg += <span class="stringliteral">"
|
|
687
|
-
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> 
|
|
688
|
-
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span> 
|
|
689
|
-
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> 
|
|
690
|
-
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> 
|
|
691
|
-
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> 
|
|
692
|
-
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> 
|
|
693
|
-
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> 
|
|
694
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> 
|
|
695
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> 
|
|
696
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> 
|
|
697
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> 
|
|
698
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> 
|
|
699
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> 
|
|
700
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> 
|
|
701
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
702
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
703
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
704
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="
|
|
705
|
-
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> 
|
|
706
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
707
|
-
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> 
|
|
708
|
-
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> 
|
|
709
|
-
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> 
|
|
710
|
-
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> 
|
|
711
|
-
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> 
|
|
712
|
-
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> 
|
|
713
|
-
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> 
|
|
714
|
-
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> 
|
|
715
|
-
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> 
|
|
716
|
-
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> 
|
|
717
|
-
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> 
|
|
718
|
-
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> 
|
|
719
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
720
|
-
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> 
|
|
721
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
722
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <
|
|
723
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <
|
|
724
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
725
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
726
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
727
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
728
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="stringliteral">"
|
|
729
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> 
|
|
730
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  msg += <span class="stringliteral">"
|
|
731
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
732
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
733
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
734
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
735
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
736
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <
|
|
737
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
738
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
739
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
740
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> 
|
|
741
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
742
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
743
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
744
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
745
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
746
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
747
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
748
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
749
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
750
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
751
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
752
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
753
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <
|
|
754
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="
|
|
755
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> 
|
|
756
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> 
|
|
757
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
758
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> 
|
|
759
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
760
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
761
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> 
|
|
762
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
763
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
764
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  </div>
|
|
765
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
766
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
767
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
768
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> 
|
|
769
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> 
|
|
770
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  msg += <span class="stringliteral">"
|
|
771
|
-
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> 
|
|
772
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
773
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
774
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> 
|
|
775
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
776
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
777
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> 
|
|
778
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> 
|
|
779
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> 
|
|
780
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
781
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> 
|
|
782
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
783
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
784
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
785
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
786
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
787
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
788
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
789
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> 
|
|
790
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> 
|
|
791
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
792
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> 
|
|
793
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
794
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="comment">//
|
|
795
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="comment">//
|
|
796
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="
|
|
797
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> 
|
|
798
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> 
|
|
799
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
800
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">//
|
|
801
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="
|
|
802
|
-
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> 
|
|
803
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> 
|
|
488
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  abort();</div>
|
|
489
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div>
|
|
490
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> }</div>
|
|
491
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  </div>
|
|
492
|
+
<div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1BufOverflowCheckerAPI.html#a6a4afd9b4546d0a01dc869c6672f6dc6"> 421</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a6a4afd9b4546d0a01dc869c6672f6dc6">BufOverflowCheckerAPI::handleExtAPI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</div>
|
|
493
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> {</div>
|
|
494
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">AEAPI::handleExtAPI</a>(call);</div>
|
|
495
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html">BufOverflowChecker</a>* ae = SVFUtil::dyn_cast<BufOverflowChecker>(<a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>);</div>
|
|
496
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
497
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  assert(fun && <span class="stringliteral">"SVFFunction* is nullptr"</span>);</div>
|
|
498
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
499
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// check the type of mem api,</span></div>
|
|
500
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// MEMCPY: like memcpy, memcpy_chk, llvm.memcpy etc.</span></div>
|
|
501
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// MEMSET: like memset, memset_chk, llvm.memset etc.</span></div>
|
|
502
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// STRCPY: like strcpy, strcpy_chk, wcscpy etc.</span></div>
|
|
503
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// STRCAT: like strcat, strcat_chk, wcscat etc.</span></div>
|
|
504
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// for other ext api like printf, scanf, etc., they have their own handlers</span></div>
|
|
505
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</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>
|
|
506
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="comment">// get type of mem api</span></div>
|
|
507
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &annotation: fun-><a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
|
|
508
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div>
|
|
509
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMCPY"</span>) != std::string::npos)</div>
|
|
510
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">MEMCPY</a>;</div>
|
|
511
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMSET"</span>) != std::string::npos)</div>
|
|
512
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">MEMSET</a>;</div>
|
|
513
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCPY"</span>) != std::string::npos)</div>
|
|
514
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">STRCPY</a>;</div>
|
|
515
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCAT"</span>) != std::string::npos)</div>
|
|
516
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  extType = <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">STRCAT</a>;</div>
|
|
517
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div>
|
|
518
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</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>
|
|
519
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a9a492bae5e1779267055b83cf033da28">MEMCPY</a>)</div>
|
|
520
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div>
|
|
521
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.count(fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) == 0)</div>
|
|
522
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div>
|
|
523
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
524
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
525
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span>;</div>
|
|
526
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div>
|
|
527
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// call parseMemcpyBufferCheckArgs to parse the BUF_CHECK annotation</span></div>
|
|
528
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.at(fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>());</div>
|
|
529
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
530
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
531
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  {</div>
|
|
532
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = ae-><a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(arg.second))] - <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
|
|
533
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
534
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div>
|
|
535
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div>
|
|
536
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// 2. memset functions like memset, memset_chk, annotate("MEMSET"), annotate("BUF_CHECK:Arg0, Arg2")</span></div>
|
|
537
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04a68863d4626b3cde194a0fa6da74a3313">MEMSET</a>)</div>
|
|
538
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  {</div>
|
|
539
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.count(fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) == 0)</div>
|
|
540
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div>
|
|
541
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
542
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
543
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span>;</div>
|
|
544
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div>
|
|
545
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#adf5b059cb16c8f35146166269f9e1ebc">_extAPIBufOverflowCheckRules</a>.at(fun-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>());</div>
|
|
546
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
547
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
548
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div>
|
|
549
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = ae-><a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[<a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(arg.second))] - <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
|
|
550
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">canSafelyAccessMemory</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
551
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div>
|
|
552
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
|
|
553
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04aadccf4db29e170b4d669ef023866a28d">STRCPY</a>)</div>
|
|
554
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div>
|
|
555
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a296a3ea0f8df72ce6480b5cb0f207945">detectStrcpy</a>(call);</div>
|
|
556
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div>
|
|
557
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AEAPI.html#a29ab312d273e6c9c32a40d61861afb04ab8167323edeff68403cf4ceb7e8133d9">STRCAT</a>)</div>
|
|
558
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div>
|
|
559
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#ae88696790ca4f3392c7dc76c74619f46">detectStrcat</a>(call);</div>
|
|
560
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div>
|
|
561
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">else</span></div>
|
|
562
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  {</div>
|
|
563
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div>
|
|
564
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div>
|
|
565
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span>;</div>
|
|
566
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div>
|
|
567
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  </div>
|
|
568
|
+
<div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d"> 497</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BufOverflowCheckerAPI.html#a62a7eb3560c8ec158c2fe0c1fc95189d">BufOverflowCheckerAPI::canSafelyAccessMemory</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &len, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *curNode)</div>
|
|
569
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div>
|
|
570
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html">BufOverflowChecker</a>* ae = <span class="keyword">static_cast<</span><a class="code" href="classSVF_1_1BufOverflowChecker.html">BufOverflowChecker</a>*<span class="keyword">></span>(this-><a class="code" href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">_ae</a>);</div>
|
|
571
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *firstValue = value;</div>
|
|
572
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  </div>
|
|
573
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList<const SVFValue *></a> worklist;</div>
|
|
574
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFValue *></a> visited;</div>
|
|
575
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  visited.insert(value);</div>
|
|
576
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const ICFGNode *, IntervalValue></a> gep_offsets;</div>
|
|
577
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> total_bytes = len;</div>
|
|
578
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(value);</div>
|
|
579
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  std::vector<const CallICFGNode *> callstack = ae-><a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>;</div>
|
|
580
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
|
|
581
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div>
|
|
582
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  value = worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
|
|
583
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a> *ins = SVFUtil::dyn_cast<SVFInstruction>(value))</div>
|
|
584
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  {</div>
|
|
585
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node = <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>(ins);</div>
|
|
586
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callnode = SVFUtil::dyn_cast<CallICFGNode>(node))</div>
|
|
587
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div>
|
|
588
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">AccessMemoryViaRetNode</a>(callnode, worklist, visited);</div>
|
|
589
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  }</div>
|
|
590
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
|
|
591
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div>
|
|
592
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast<CopyStmt>(stmt))</div>
|
|
593
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div>
|
|
594
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">AccessMemoryViaCopyStmt</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, worklist, visited);</div>
|
|
595
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div>
|
|
596
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast<LoadStmt>(stmt))</div>
|
|
597
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div>
|
|
598
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">AccessMemoryViaLoadStmt</a>(load, worklist, visited);</div>
|
|
599
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div>
|
|
600
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast<GepStmt>(stmt))</div>
|
|
601
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  {</div>
|
|
602
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// there are 3 type of gepStmt</span></div>
|
|
603
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">// 1. ptr get offset</span></div>
|
|
604
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="comment">// 2. struct get field</span></div>
|
|
605
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// 3. array get element</span></div>
|
|
606
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="comment">// for array gep, there are two kind of overflow checking</span></div>
|
|
607
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="comment">// Arr [Struct.C * 10] arr, Struct.C {i32 a, i32 b}</span></div>
|
|
608
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// arr[11].a = **, it is "lhs = gep *arr, 0 (ptr), 11 (arrIdx), 0 (ptr), 0(struct field)"</span></div>
|
|
609
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">// 1) in this case arrIdx 11 is overflow.</span></div>
|
|
610
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">// Other case,</span></div>
|
|
611
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// Struct.C {i32 a, [i32*10] b, i32 c}, C.b[11] = 1</span></div>
|
|
612
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="comment">// it is "lhs - gep *C, 0(ptr), 1(struct field), 0(ptr), 11(arrIdx)"</span></div>
|
|
613
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">// 2) in this case arrIdx 11 is larger than its getOffsetVar.Type Array([i32*10])</span></div>
|
|
614
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  </div>
|
|
615
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="comment">// therefore, if last getOffsetVar.Type is not the Array, just check the overall offset and its</span></div>
|
|
616
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="comment">// gep source type size (together with totalOffset along the value flow).</span></div>
|
|
617
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// so if curgepOffset + totalOffset >= gepSrc (overflow)</span></div>
|
|
618
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// else totalOffset += curgepOffset</span></div>
|
|
619
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  </div>
|
|
620
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">// otherwise, if last getOffsetVar.Type is the Array, check the last idx and array. (just offset,</span></div>
|
|
621
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// not with totalOffset during check)</span></div>
|
|
622
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// so if getOffsetVarVal > getOffsetVar.TypeSize (overflow)</span></div>
|
|
623
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// else safe and return.</span></div>
|
|
624
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset;</div>
|
|
625
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span> (gep->isConstantOffset())</div>
|
|
626
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div>
|
|
627
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  byteOffset = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep->accumulateConstantByteOffset());</div>
|
|
628
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div>
|
|
629
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">else</span></div>
|
|
630
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  {</div>
|
|
631
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  byteOffset = ae-><a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">getByteOffset</a>(gep);</div>
|
|
632
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div>
|
|
633
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// for variable offset, join with accumulate gep offset</span></div>
|
|
634
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  gep_offsets[gep->getICFGNode()] = byteOffset;</div>
|
|
635
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span> (byteOffset.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() >= <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() && <a class="code" href="classSVF_1_1Options.html#a6450b984f67d3cfa3f44892e8eea555e">Options::GepUnknownIdx</a>())</div>
|
|
636
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div>
|
|
637
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
638
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div>
|
|
639
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  </div>
|
|
640
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">if</span> (gep->getOffsetVarAndGepTypePairVec().size() > 0)</div>
|
|
641
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div>
|
|
642
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *gepVal = gep->getOffsetVarAndGepTypePairVec().back().first;</div>
|
|
643
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a> *gepType = gep->getOffsetVarAndGepTypePairVec().back().second;</div>
|
|
644
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  </div>
|
|
645
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span> (gepType-><a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
|
|
646
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  {</div>
|
|
647
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a> *gepArrType = SVFUtil::dyn_cast<SVFArrayType>(gepType);</div>
|
|
648
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> gepArrTotalByte(0);</div>
|
|
649
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *idxValue = gepVal-><a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>();</div>
|
|
650
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> arrElemSize = gepArrType-><a class="code" href="classSVF_1_1SVFArrayType.html#a28da1169748e38b891133b76568a2759">getTypeOfElement</a>()-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
651
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast<SVFConstantInt>(idxValue))</div>
|
|
652
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  {</div>
|
|
653
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lb = (double) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / arrElemSize >= op->getSExtValue() ?</div>
|
|
654
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  op->getSExtValue() * arrElemSize : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
|
|
655
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  gepArrTotalByte = gepArrTotalByte + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</div>
|
|
656
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  }</div>
|
|
657
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">else</span></div>
|
|
658
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  {</div>
|
|
659
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = <a class="code" href="classSVF_1_1AEAPI.html#ae983d887ccf66c7f21b4712b37ab5f60">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(idxValue);</div>
|
|
660
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = ae-><a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[idx];</div>
|
|
661
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
|
|
662
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div>
|
|
663
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  gepArrTotalByte = gepArrTotalByte + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
|
|
664
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div>
|
|
665
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">else</span></div>
|
|
666
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div>
|
|
667
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> ub = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() < 0) ? 0 :</div>
|
|
668
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  (<span class="keywordtype">double</span>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / arrElemSize >=</div>
|
|
669
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() ?</div>
|
|
670
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  arrElemSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
|
|
671
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lb = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() < 0) ? 0 :</div>
|
|
672
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  ((<span class="keywordtype">double</span>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / arrElemSize >=</div>
|
|
673
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>()) ?</div>
|
|
674
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  arrElemSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
|
|
675
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  gepArrTotalByte = gepArrTotalByte + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
|
|
676
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div>
|
|
677
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div>
|
|
678
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  total_bytes = total_bytes + gepArrTotalByte;</div>
|
|
679
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">if</span> (total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() >= gepArrType-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>())</div>
|
|
680
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div>
|
|
681
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg =</div>
|
|
682
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="stringliteral">"Buffer overflow!! Accessing buffer range: "</span> +</div>
|
|
683
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(total_bytes) +</div>
|
|
684
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="stringliteral">"\nAllocated Gep buffer size: "</span> +</div>
|
|
685
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  std::to_string(gepArrType-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>()) + <span class="stringliteral">"\n"</span>;</div>
|
|
686
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  msg += <span class="stringliteral">"Position: "</span> + firstValue-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() + <span class="stringliteral">"\n"</span>;</div>
|
|
687
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  msg += <span class="stringliteral">" The following is the value flow. [[\n"</span>;</div>
|
|
688
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = gep_offsets.begin(); it != gep_offsets.end(); ++it)</div>
|
|
689
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div>
|
|
690
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  msg += it->first->toString() + <span class="stringliteral">", Offset: "</span> + <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(it->second) +</div>
|
|
691
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="stringliteral">"\n"</span>;</div>
|
|
692
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div>
|
|
693
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  msg += <span class="stringliteral">"]].\nAlloc Site: "</span> + gep->toString() + <span class="stringliteral">"\n"</span>;</div>
|
|
694
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  </div>
|
|
695
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <a class="code" href="structSVF_1_1BufOverflowException.html">BufOverflowException</a> bug(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a7655b13bbfe720ca2b8a25e0a72528e6">SVFUtil::errMsg</a>(msg), gepArrType-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>(),</div>
|
|
696
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  gepArrType-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>(),</div>
|
|
697
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(), total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(),</div>
|
|
698
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  firstValue);</div>
|
|
699
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  ae-><a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, curNode);</div>
|
|
700
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
701
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div>
|
|
702
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">else</span></div>
|
|
703
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  {</div>
|
|
704
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="comment">// for gep last index's type is arr, stop here.</span></div>
|
|
705
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
706
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  }</div>
|
|
707
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div>
|
|
708
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">else</span></div>
|
|
709
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div>
|
|
710
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  total_bytes = total_bytes + byteOffset;</div>
|
|
711
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  }</div>
|
|
712
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  </div>
|
|
713
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div>
|
|
714
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">if</span> (!visited.count(gep->getRHSVar()->getValue()))</div>
|
|
715
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {</div>
|
|
716
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  visited.insert(gep->getRHSVar()->getValue());</div>
|
|
717
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(gep->getRHSVar()->getValue());</div>
|
|
718
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  }</div>
|
|
719
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  }</div>
|
|
720
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast<AddrStmt>(stmt))</div>
|
|
721
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  {</div>
|
|
722
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="comment">// addrStmt is source node.</span></div>
|
|
723
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> arr_type_size = <a class="code" href="classSVF_1_1AEAPI.html#afe6d49fd36a96bda165654eb393be6f2">getAllocaInstByteSize</a>(addr);</div>
|
|
724
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() >= arr_type_size ||</div>
|
|
725
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() < 0)</div>
|
|
726
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  {</div>
|
|
727
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg =</div>
|
|
728
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="stringliteral">"Buffer overflow!! Accessing buffer range: "</span> + <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(total_bytes) +</div>
|
|
729
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="stringliteral">"\nAllocated buffer size: "</span> + std::to_string(arr_type_size) + <span class="stringliteral">"\n"</span>;</div>
|
|
730
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  msg += <span class="stringliteral">"Position: "</span> + firstValue-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() + <span class="stringliteral">"\n"</span>;</div>
|
|
731
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  msg += <span class="stringliteral">" The following is the value flow. [[\n"</span>;</div>
|
|
732
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = gep_offsets.begin(); it != gep_offsets.end(); ++it)</div>
|
|
733
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div>
|
|
734
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  msg += it->first->toString() + <span class="stringliteral">", Offset: "</span> + <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(it->second) + <span class="stringliteral">"\n"</span>;</div>
|
|
735
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div>
|
|
736
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  msg += <span class="stringliteral">"]].\n Alloc Site: "</span> + addr->toString() + <span class="stringliteral">"\n"</span>;</div>
|
|
737
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <a class="code" href="structSVF_1_1BufOverflowException.html">BufOverflowException</a> bug(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ac71522e8c55f84cfc6c13a0ddff18436">SVFUtil::wrnMsg</a>(msg), arr_type_size, arr_type_size,</div>
|
|
738
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(), total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(),</div>
|
|
739
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  firstValue);</div>
|
|
740
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  ae-><a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, curNode);</div>
|
|
741
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
742
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div>
|
|
743
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">else</span></div>
|
|
744
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div>
|
|
745
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  </div>
|
|
746
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
747
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  }</div>
|
|
748
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  }</div>
|
|
749
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div>
|
|
750
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div>
|
|
751
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a> *gvalue = SVFUtil::dyn_cast<SVF::SVFGlobalValue>(value))</div>
|
|
752
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  {</div>
|
|
753
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> arr_type_size = 0;</div>
|
|
754
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a> *svftype = gvalue->getType();</div>
|
|
755
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">if</span> (SVFUtil::isa<SVFPointerType>(svftype))</div>
|
|
756
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  {</div>
|
|
757
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a> *ptrArrType = SVFUtil::dyn_cast<SVFArrayType>(</div>
|
|
758
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <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>(gvalue))))</div>
|
|
759
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  arr_type_size = ptrArrType-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
760
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">else</span></div>
|
|
761
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  arr_type_size = svftype-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
762
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  }</div>
|
|
763
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">else</span></div>
|
|
764
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  arr_type_size = svftype-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
765
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  </div>
|
|
766
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">if</span> (total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() >= arr_type_size || total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() < 0)</div>
|
|
767
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  {</div>
|
|
768
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg = <span class="stringliteral">"Buffer overflow!! Accessing buffer range: "</span> + <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(total_bytes) +</div>
|
|
769
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="stringliteral">"\nAllocated buffer size: "</span> + std::to_string(arr_type_size) + <span class="stringliteral">"\n"</span>;</div>
|
|
770
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  msg += <span class="stringliteral">"Position: "</span> + firstValue-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() + <span class="stringliteral">"\n"</span>;</div>
|
|
771
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  msg += <span class="stringliteral">" The following is the value flow.\n[["</span>;</div>
|
|
772
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = gep_offsets.begin(); it != gep_offsets.end(); ++it)</div>
|
|
773
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div>
|
|
774
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  msg += it->first->toString() + <span class="stringliteral">", Offset: "</span> + <a class="code" href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">IntervalToIntStr</a>(it->second) + <span class="stringliteral">"\n"</span>;</div>
|
|
775
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div>
|
|
776
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  msg += <span class="stringliteral">"]]. \nAlloc Site: "</span> + gvalue->toString() + <span class="stringliteral">"\n"</span>;</div>
|
|
777
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  </div>
|
|
778
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <a class="code" href="structSVF_1_1BufOverflowException.html">BufOverflowException</a> bug(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ac71522e8c55f84cfc6c13a0ddff18436">SVFUtil::wrnMsg</a>(msg), arr_type_size, arr_type_size,</div>
|
|
779
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(), total_bytes.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(), firstValue);</div>
|
|
780
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  ae-><a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, curNode);</div>
|
|
781
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
782
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  }</div>
|
|
783
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">else</span></div>
|
|
784
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  {</div>
|
|
785
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
786
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  }</div>
|
|
787
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div>
|
|
788
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a> *arg = SVFUtil::dyn_cast<SVF::SVFArgument>(value))</div>
|
|
789
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div>
|
|
790
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <a class="code" href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">AccessMemoryViaCallArgs</a>(arg, worklist, visited);</div>
|
|
791
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div>
|
|
792
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">else</span></div>
|
|
793
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div>
|
|
794
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="comment">// maybe SVFConstant</span></div>
|
|
795
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="comment">// it may be cannot find the source, maybe we start from non-main function,</span></div>
|
|
796
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="comment">// therefore it loses the value flow track</span></div>
|
|
797
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
798
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  }</div>
|
|
799
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div>
|
|
800
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">// it may be cannot find the source, maybe we start from non-main function,</span></div>
|
|
801
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="comment">// therefore it loses the value flow track</span></div>
|
|
802
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
803
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> }</div>
|
|
804
804
|
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  </div>
|
|
805
805
|
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  </div>
|
|
806
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> 
|
|
807
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> 
|
|
808
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> 
|
|
809
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="
|
|
810
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> 
|
|
811
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> 
|
|
812
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
813
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="
|
|
814
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
815
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
816
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
817
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="
|
|
818
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
819
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> 
|
|
820
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> 
|
|
821
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> 
|
|
822
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="
|
|
823
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> 
|
|
824
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> 
|
|
825
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="
|
|
826
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> 
|
|
827
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> 
|
|
828
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> 
|
|
829
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> 
|
|
830
|
-
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> 
|
|
831
|
-
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> 
|
|
832
|
-
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> 
|
|
833
|
-
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> 
|
|
834
|
-
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> 
|
|
835
|
-
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> 
|
|
836
|
-
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> 
|
|
837
|
-
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> 
|
|
838
|
-
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> 
|
|
839
|
-
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <
|
|
840
|
-
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> 
|
|
841
|
-
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> 
|
|
842
|
-
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <
|
|
843
|
-
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> 
|
|
844
|
-
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> 
|
|
845
|
-
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="
|
|
846
|
-
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> 
|
|
847
|
-
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> 
|
|
848
|
-
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> 
|
|
849
|
-
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> 
|
|
850
|
-
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> 
|
|
851
|
-
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> 
|
|
852
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> 
|
|
853
|
-
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> 
|
|
854
|
-
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> 
|
|
855
|
-
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <
|
|
856
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> 
|
|
857
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> 
|
|
858
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <
|
|
859
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> 
|
|
860
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> 
|
|
861
|
-
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="
|
|
862
|
-
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> 
|
|
863
|
-
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> 
|
|
864
|
-
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> 
|
|
865
|
-
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> 
|
|
866
|
-
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> 
|
|
867
|
-
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> 
|
|
868
|
-
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> 
|
|
869
|
-
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> 
|
|
870
|
-
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> 
|
|
871
|
-
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> 
|
|
872
|
-
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> 
|
|
873
|
-
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="
|
|
874
|
-
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> 
|
|
875
|
-
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> 
|
|
876
|
-
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> 
|
|
877
|
-
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> 
|
|
878
|
-
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> 
|
|
879
|
-
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> 
|
|
880
|
-
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> 
|
|
881
|
-
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> 
|
|
882
|
-
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span> 
|
|
883
|
-
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> 
|
|
884
|
-
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> 
|
|
885
|
-
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> 
|
|
886
|
-
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> 
|
|
887
|
-
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> 
|
|
888
|
-
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> 
|
|
889
|
-
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> 
|
|
890
|
-
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <
|
|
891
|
-
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <
|
|
892
|
-
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> 
|
|
893
|
-
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> 
|
|
894
|
-
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> 
|
|
895
|
-
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> 
|
|
896
|
-
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> 
|
|
897
|
-
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> 
|
|
898
|
-
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> 
|
|
899
|
-
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> 
|
|
900
|
-
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> 
|
|
901
|
-
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> 
|
|
902
|
-
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> 
|
|
903
|
-
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> 
|
|
904
|
-
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> 
|
|
806
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  </div>
|
|
807
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#afa6b30220b0b3261205a909def9ca44e">BufOverflowChecker::handleICFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a> *node)</div>
|
|
808
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> {</div>
|
|
809
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a714fa1f4794008f630de415414cf8bfd">AbstractExecution::handleICFGNode</a>(node);</div>
|
|
810
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#a52de7d619e8746a70718719306d7c5a1">detectBufOverflow</a>(node);</div>
|
|
811
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> }</div>
|
|
812
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  </div>
|
|
813
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="comment">//</span></div>
|
|
814
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#a52de7d619e8746a70718719306d7c5a1">BufOverflowChecker::detectBufOverflow</a>(<span class="keyword">const</span> ICFGNode *node)</div>
|
|
815
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> {</div>
|
|
816
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  </div>
|
|
817
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keyword">auto</span> *extapi = SVFUtil::dyn_cast<BufOverflowCheckerAPI>(<a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>);</div>
|
|
818
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>* stmt: node->getSVFStmts())</div>
|
|
819
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  {</div>
|
|
820
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> GepStmt *gep = SVFUtil::dyn_cast<GepStmt>(stmt))</div>
|
|
821
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div>
|
|
822
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keyword">const</span> SVFVar* gepRhs = gep->getRHSVar();</div>
|
|
823
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> SVFInstruction* inst = SVFUtil::dyn_cast<SVFInstruction>(gepRhs->getValue()))</div>
|
|
824
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div>
|
|
825
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keyword">const</span> ICFGNode* icfgNode = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
|
|
826
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> SVFStmt* stmt2: icfgNode->getSVFStmts())</div>
|
|
827
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  {</div>
|
|
828
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> GepStmt *gep2 = SVFUtil::dyn_cast<GepStmt>(stmt2))</div>
|
|
829
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  {</div>
|
|
830
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> extapi->canSafelyAccessMemory(gep2->getLHSVar()->getValue(), IntervalValue(0, 0), node);</div>
|
|
831
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div>
|
|
832
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  }</div>
|
|
833
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  }</div>
|
|
834
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div>
|
|
835
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(stmt))</div>
|
|
836
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  {</div>
|
|
837
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(load->getRHSVarID()))</div>
|
|
838
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  {</div>
|
|
839
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="classSVF_1_1ExeState.html#a78038dd4884a501cfc94f073021eac96">ExeState::Addrs</a> Addrs = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(load->getRHSVarID());</div>
|
|
840
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs)</div>
|
|
841
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  {</div>
|
|
842
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(vaddr);</div>
|
|
843
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">if</span> (extapi->_addrToGep.find(objId) != extapi->_addrToGep.end())</div>
|
|
844
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  {</div>
|
|
845
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keyword">const</span> GepStmt* gep = extapi->_addrToGep.at(objId);</div>
|
|
846
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">return</span> extapi->canSafelyAccessMemory(gep->getLHSVar()->getValue(), IntervalValue(0, 0), node);</div>
|
|
847
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  }</div>
|
|
848
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div>
|
|
849
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  }</div>
|
|
850
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  }</div>
|
|
851
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(stmt))</div>
|
|
852
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div>
|
|
853
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">inVarToAddrsTable</a>(store->getLHSVarID()))</div>
|
|
854
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  {</div>
|
|
855
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="classSVF_1_1ExeState.html#a78038dd4884a501cfc94f073021eac96">ExeState::Addrs</a> Addrs = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(store->getLHSVarID());</div>
|
|
856
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs)</div>
|
|
857
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  {</div>
|
|
858
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(vaddr);</div>
|
|
859
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (extapi->_addrToGep.find(objId) != extapi->_addrToGep.end())</div>
|
|
860
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div>
|
|
861
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keyword">const</span> GepStmt* gep = extapi->_addrToGep.at(objId);</div>
|
|
862
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">return</span> extapi->canSafelyAccessMemory(gep->getLHSVar()->getValue(), IntervalValue(0, 0), node);</div>
|
|
863
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div>
|
|
864
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div>
|
|
865
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div>
|
|
866
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div>
|
|
867
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div>
|
|
868
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
869
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> }</div>
|
|
870
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  </div>
|
|
871
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">BufOverflowChecker::addBugToRecoder</a>(<span class="keyword">const</span> BufOverflowException& e, <span class="keyword">const</span> ICFGNode* node)</div>
|
|
872
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> {</div>
|
|
873
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">const</span> SVFInstruction* inst = <span class="keyword">nullptr</span>;</div>
|
|
874
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> CallICFGNode* call = SVFUtil::dyn_cast<CallICFGNode>(node))</div>
|
|
875
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  {</div>
|
|
876
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  inst = call->getCallSite();</div>
|
|
877
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div>
|
|
878
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">else</span></div>
|
|
879
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  {</div>
|
|
880
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  inst = node->getSVFStmts().back()->getInst();</div>
|
|
881
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div>
|
|
882
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="classSVF_1_1GenericBug.html#acc65b033bfd61257d5b6fdbf932dfafe">GenericBug::EventStack</a> eventStack;</div>
|
|
883
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  SVFBugEvent sourceInstEvent(SVFBugEvent::EventType::SourceInst, inst);</div>
|
|
884
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &callsite: <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>)</div>
|
|
885
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  {</div>
|
|
886
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  SVFBugEvent callSiteEvent(SVFBugEvent::EventType::CallSite, callsite->getCallSite());</div>
|
|
887
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  eventStack.push_back(callSiteEvent);</div>
|
|
888
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div>
|
|
889
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  eventStack.push_back(sourceInstEvent);</div>
|
|
890
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span> (eventStack.size() == 0) <span class="keywordflow">return</span>;</div>
|
|
891
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> loc = eventStack.back().getEventLoc();</div>
|
|
892
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a790c178f8c29eecfc256a5dfd97d1637">_bugLoc</a>.find(loc) != <a class="code" href="classSVF_1_1AbstractExecution.html#a790c178f8c29eecfc256a5dfd97d1637">_bugLoc</a>.end())</div>
|
|
893
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  {</div>
|
|
894
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">return</span>;</div>
|
|
895
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div>
|
|
896
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">else</span></div>
|
|
897
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div>
|
|
898
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a790c178f8c29eecfc256a5dfd97d1637">_bugLoc</a>.insert(loc);</div>
|
|
899
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  }</div>
|
|
900
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5ed683d635bd05f0bee10436d20deb31">_recoder</a>.<a class="code" href="classSVF_1_1SVFBugReport.html#a05f395eff23619ed10c31c0acda949e2">addAbsExecBug</a>(<a class="code" href="classSVF_1_1GenericBug.html#a7aeeb33097bca5f7fe6747f90f5cecacac88ddac03bb8ae09a72058e4ad7af747">GenericBug::FULLBUFOVERFLOW</a>, eventStack, e.getAllocLb(), e.getAllocUb(), e.getAccessLb(),</div>
|
|
901
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  e.getAccessUb());</div>
|
|
902
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a55737f5c82afce29a816eb21070a2bc1">_nodeToBugInfo</a>[node] = e.what();</div>
|
|
903
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> }</div>
|
|
904
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  </div>
|
|
905
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div>
|
|
905
906
|
</div><!-- fragment --></div><!-- contents -->
|
|
906
907
|
<div class="ttc" id="aclassSVF_1_1SVFBugReport_html_a05f395eff23619ed10c31c0acda949e2"><div class="ttname"><a href="classSVF_1_1SVFBugReport.html#a05f395eff23619ed10c31c0acda949e2">SVF::SVFBugReport::addAbsExecBug</a></div><div class="ttdeci">void addAbsExecBug(GenericBug::BugType bugType, const GenericBug::EventStack &eventStack, s64_t allocLowerBound, s64_t allocUpperBound, s64_t accessLowerBound, s64_t accessUpperBound)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00367">SVFBugReport.h:367</a></div></div>
|
|
907
908
|
<div class="ttc" id="aclassSVF_1_1AEAPI_html_afe6d49fd36a96bda165654eb393be6f2"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afe6d49fd36a96bda165654eb393be6f2">SVF::AEAPI::getAllocaInstByteSize</a></div><div class="ttdeci">u32_t getAllocaInstByteSize(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01356">AbstractExecution.cpp:1356</a></div></div>
|
|
@@ -910,7 +911,7 @@ $(function() {
|
|
|
910
911
|
<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>
|
|
911
912
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_afbb9ff1f2c47d2afda117bf63a80a1a7"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#afbb9ff1f2c47d2afda117bf63a80a1a7">SVF::SVFIR2ItvExeState::getRangeLimitFromType</a></div><div class="ttdeci">IntervalValue getRangeLimitFromType(const SVFType *type)</div><div class="ttdoc">Return the value range of Integer SVF Type, e.g. unsigned i8 Type->[0, 255], signed i8 Type->[-128,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00050">SVFIR2ItvExeState.cpp:50</a></div></div>
|
|
912
913
|
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a33b63d79de59e0015097c43978162ded"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a33b63d79de59e0015097c43978162ded">SVF::AEAPI::_ae</a></div><div class="ttdeci">AbstractExecution * _ae</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00427">AbstractExecution.h:427</a></div></div>
|
|
913
|
-
<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#
|
|
914
|
+
<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#l00497">BufOverflowChecker.cpp:497</a></div></div>
|
|
914
915
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a7655b13bbfe720ca2b8a25e0a72528e6"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7655b13bbfe720ca2b8a25e0a72528e6">SVF::SVFUtil::errMsg</a></div><div class="ttdeci">std::string errMsg(const std::string &msg)</div><div class="ttdoc">Print error message by converting a string into red string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00076">SVFUtil.cpp:76</a></div></div>
|
|
915
916
|
<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>
|
|
916
917
|
<div class="ttc" id="aclassSVF_1_1ExeState_html_a78038dd4884a501cfc94f073021eac96"><div class="ttname"><a href="classSVF_1_1ExeState.html#a78038dd4884a501cfc94f073021eac96">SVF::ExeState::Addrs</a></div><div class="ttdeci">AddressValue Addrs</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00053">ExeState.h:53</a></div></div>
|
|
@@ -939,12 +940,12 @@ $(function() {
|
|
|
939
940
|
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a5ed683d635bd05f0bee10436d20deb31"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a5ed683d635bd05f0bee10436d20deb31">SVF::AbstractExecution::_recoder</a></div><div class="ttdeci">SVFBugReport _recoder</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00252">AbstractExecution.h:252</a></div></div>
|
|
940
941
|
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_a5d73cc2aa0a6ed49e8301fa7b0cd5045"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a5d73cc2aa0a6ed49e8301fa7b0cd5045">SVF::IntervalValue::toString</a></div><div class="ttdeci">const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00441">IntervalValue.h:441</a></div></div>
|
|
941
942
|
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_af8be90fc1b61103187908dce4ba68001"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">SVF::IntervalValue::isBottom</a></div><div class="ttdeci">bool isBottom() const override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00060">IntervalValue.h:60</a></div></div>
|
|
942
|
-
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ac49859a7848fbef0e29492e95b031f1f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">SVF::AEAPI::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#
|
|
943
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_ac49859a7848fbef0e29492e95b031f1f"><div class="ttname"><a href="classSVF_1_1AEAPI.html#ac49859a7848fbef0e29492e95b031f1f">SVF::AEAPI::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01794">AbstractExecution.cpp:1794</a></div></div>
|
|
943
944
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a48fec38aad1c2a9a140ee94e9fdd7e9b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">SVF::SVFIR2ItvExeState::getAddrs</a></div><div class="ttdeci">Addrs & getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00107">SVFIR2ItvExeState.h:107</a></div></div>
|
|
944
945
|
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_a3dba35c84607bd3ed4e62a90ae2799cf"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a3dba35c84607bd3ed4e62a90ae2799cf">SVF::IntervalValue::is_infinite</a></div><div class="ttdeci">static bool is_infinite(const NumericLiteral &e)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00077">IntervalValue.h:77</a></div></div>
|
|
945
946
|
<div class="ttc" id="aclassSVF_1_1Options_html_a6450b984f67d3cfa3f44892e8eea555e"><div class="ttname"><a href="classSVF_1_1Options.html#a6450b984f67d3cfa3f44892e8eea555e">SVF::Options::GepUnknownIdx</a></div><div class="ttdeci">static const Option< bool > GepUnknownIdx</div><div class="ttdoc">if the access index of gepstmt is unknown, skip it, Default: false</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00273">Options.h:273</a></div></div>
|
|
946
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#l00170">BufOverflowChecker.h:170</a></div></div>
|
|
947
|
-
<div class="ttc" id="aclassSVF_1_1AEAPI_html_afa34cb2ee3fc1ca5aa04a2afe7c2d6e8"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">SVF::AEAPI::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#
|
|
948
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_afa34cb2ee3fc1ca5aa04a2afe7c2d6e8"><div class="ttname"><a href="classSVF_1_1AEAPI.html#afa34cb2ee3fc1ca5aa04a2afe7c2d6e8">SVF::AEAPI::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01774">AbstractExecution.cpp:1774</a></div></div>
|
|
948
949
|
<div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
949
950
|
<div class="ttc" id="aclassSVF_1_1GenericBug_html_a7aeeb33097bca5f7fe6747f90f5cecacac88ddac03bb8ae09a72058e4ad7af747"><div class="ttname"><a href="classSVF_1_1GenericBug.html#a7aeeb33097bca5f7fe6747f90f5cecacac88ddac03bb8ae09a72058e4ad7af747">SVF::GenericBug::FULLBUFOVERFLOW</a></div><div class="ttdeci">@ FULLBUFOVERFLOW</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00086">SVFBugReport.h:86</a></div></div>
|
|
950
951
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector< std::string > & getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
|
|
@@ -956,18 +957,18 @@ $(function() {
|
|
|
956
957
|
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a1d725fe50a7084bfa18bd47b941af885"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a1d725fe50a7084bfa18bd47b941af885">SVF::AbstractExecution::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00892">AbstractExecution.cpp:892</a></div></div>
|
|
957
958
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a66c426719f583653cb70189f01d6fda5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">SVF::SVFIR2ItvExeState::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="SVFIR2ItvExeState_8h_source.html#l00166">SVFIR2ItvExeState.h:166</a></div></div>
|
|
958
959
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
959
|
-
<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="AbstractExecution_8cpp_source.html#
|
|
960
|
+
<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="AbstractExecution_8cpp_source.html#l01521">AbstractExecution.cpp:1521</a></div></div>
|
|
960
961
|
<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>
|
|
961
962
|
<div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00377">SVFType.h:377</a></div></div>
|
|
962
963
|
<div class="ttc" id="anamespaceSVF_html_a5d28d0818391747924478e86b9033431"><div class="ttname"><a href="namespaceSVF.html#a5d28d0818391747924478e86b9033431">SVF::IntervalToIntStr</a></div><div class="ttdeci">std::string IntervalToIntStr(const IntervalValue &inv)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00037">BufOverflowChecker.cpp:37</a></div></div>
|
|
963
964
|
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00385">ICFGNode.h:385</a></div></div>
|
|
964
965
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00156">SVFType.h:156</a></div></div>
|
|
965
966
|
<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#l00134">BufOverflowChecker.cpp:134</a></div></div>
|
|
966
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#
|
|
967
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00275">SVFIR2ItvExeState.cpp:275</a></div></div>
|
|
967
968
|
<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="AbstractExecution_8h_source.html#l00289">AbstractExecution.h:289</a></div></div>
|
|
968
969
|
<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#l00092">ICFG.h:92</a></div></div>
|
|
969
970
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
970
|
-
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a7be3da80bedb1077a99d67daa124afde"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">SVF::AEAPI::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#
|
|
971
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a7be3da80bedb1077a99d67daa124afde"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a7be3da80bedb1077a99d67daa124afde">SVF::AEAPI::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01740">AbstractExecution.cpp:1740</a></div></div>
|
|
971
972
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
|
|
972
973
|
<div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00966">SVFValue.h:966</a></div></div>
|
|
973
974
|
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_adac2dc2c9f744a071ad3f0175ed40cd9"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">SVF::IntervalValue::ub</a></div><div class="ttdeci">const NumericLiteral & ub() const</div><div class="ttdoc">Return the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00225">IntervalValue.h:225</a></div></div>
|
|
@@ -991,13 +992,13 @@ $(function() {
|
|
|
991
992
|
<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="AbstractExecution_8cpp_source.html#l01240">AbstractExecution.cpp:1240</a></div></div>
|
|
992
993
|
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_a0b79c3694a08100d2d8d1b8109998131"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#a0b79c3694a08100d2d8d1b8109998131">SVF::BufOverflowChecker::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt) override</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00062">BufOverflowChecker.cpp:62</a></div></div>
|
|
993
994
|
<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>
|
|
994
|
-
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a6a4afd9b4546d0a01dc869c6672f6dc6"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a6a4afd9b4546d0a01dc869c6672f6dc6">SVF::BufOverflowCheckerAPI::handleExtAPI</a></div><div class="ttdeci">void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#
|
|
995
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowCheckerAPI_html_a6a4afd9b4546d0a01dc869c6672f6dc6"><div class="ttname"><a href="classSVF_1_1BufOverflowCheckerAPI.html#a6a4afd9b4546d0a01dc869c6672f6dc6">SVF::BufOverflowCheckerAPI::handleExtAPI</a></div><div class="ttdeci">void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00421">BufOverflowChecker.cpp:421</a></div></div>
|
|
995
996
|
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a49742e8c3a8fe598a0945a8d8ff394d0"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">SVF::AbstractExecution::_svfir</a></div><div class="ttdeci">SVFIR * _svfir</div><div class="ttdoc">protected data members, also used in subclasses</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00241">AbstractExecution.h:241</a></div></div>
|
|
996
997
|
<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#l00077">BufOverflowChecker.cpp:77</a></div></div>
|
|
997
998
|
<div class="ttc" id="aclassSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01113">SVFValue.h:1113</a></div></div>
|
|
998
999
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a56434326130c8127c823097ad764947b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">SVF::SVFIR2ItvExeState::getEs</a></div><div class="ttdeci">IntervalExeState & getEs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00057">SVFIR2ItvExeState.h:57</a></div></div>
|
|
999
1000
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a071a624c91def82a4bbbf3806c7b7eea"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">SVF::FILOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00238">WorkList.h:238</a></div></div>
|
|
1000
|
-
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1001
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00931">LLVMUtil.cpp:931</a></div></div>
|
|
1001
1002
|
<div class="ttc" id="aclassSVF_1_1AddressValue_html"><div class="ttname"><a href="classSVF_1_1AddressValue.html">SVF::AddressValue</a></div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00043">AddressValue.h:43</a></div></div>
|
|
1002
1003
|
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ab9d6ebcf67ec473ce7ad5910c74eddc1"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">SVF::AbstractExecution::_callSiteStack</a></div><div class="ttdeci">std::vector< const CallICFGNode * > _callSiteStack</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00253">AbstractExecution.h:253</a></div></div>
|
|
1003
1004
|
<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="AbstractExecution_8h_source.html#l00289">AbstractExecution.h:289</a></div></div>
|
|
@@ -1020,10 +1021,10 @@ $(function() {
|
|
|
1020
1021
|
<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="AbstractExecution_8h_source.html#l00289">AbstractExecution.h:289</a></div></div>
|
|
1021
1022
|
<div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00097">GeneralType.h:97</a></div></div>
|
|
1022
1023
|
<div class="ttc" id="aclassSVF_1_1CallSite_html_a9e7c94ee7f689466111487e03b2cebcc"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">SVF::CallSite::getArgument</a></div><div class="ttdeci">const SVFValue * getArgument(u32_t ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01132">SVFValue.h:1132</a></div></div>
|
|
1023
|
-
<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="AbstractExecution_8cpp_source.html#
|
|
1024
|
+
<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="AbstractExecution_8cpp_source.html#l01668">AbstractExecution.cpp:1668</a></div></div>
|
|
1024
1025
|
<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>
|
|
1025
1026
|
<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>
|
|
1026
|
-
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a3665513f6e8f8b93ef3f9d273d03ee70"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">SVF::AEAPI::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#
|
|
1027
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a3665513f6e8f8b93ef3f9d273d03ee70"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a3665513f6e8f8b93ef3f9d273d03ee70">SVF::AEAPI::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList< const SVFValue * > &worklist, Set< const SVFValue * > &visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01765">AbstractExecution.cpp:1765</a></div></div>
|
|
1027
1028
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a999c358b80dd07591b0432eaa41c20c9"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a999c358b80dd07591b0432eaa41c20c9">SVF::SVFIR2ItvExeState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00123">SVFIR2ItvExeState.h:123</a></div></div>
|
|
1028
1029
|
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_a7c11b81809cb087317cbea654a589f75"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">SVF::BufOverflowChecker::addBugToRecoder</a></div><div class="ttdeci">void addBugToRecoder(const BufOverflowException &e, const ICFGNode *node)</div></div>
|
|
1029
1030
|
<!-- start footer part -->
|