svf-tools 1.0.905 → 1.0.907
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/AbstractInterpretation_8cpp.html +217 -0
- package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +2093 -0
- package/SVF-doxygen/html/AbstractInterpretation_8h.html +115 -0
- package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +459 -0
- package/SVF-doxygen/html/AbstractState_8cpp.html +84 -0
- package/SVF-doxygen/html/AbstractState_8cpp_source.html +461 -0
- package/SVF-doxygen/html/AbstractState_8h.html +105 -0
- package/SVF-doxygen/html/AbstractState_8h_source.html +891 -0
- package/SVF-doxygen/html/AbstractValue_8h.html +3 -3
- package/SVF-doxygen/html/AbstractValue_8h_source.html +652 -62
- package/SVF-doxygen/html/AddressValue_8h.html +4 -4
- package/SVF-doxygen/html/AddressValue_8h_source.html +180 -177
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +782 -776
- package/SVF-doxygen/html/BufOverflowChecker_8h.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +19 -19
- package/SVF-doxygen/html/CFLGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/CSC_8h_source.html +1 -1
- package/SVF-doxygen/html/ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ConsExeState_8h_source.html +2 -2
- package/SVF-doxygen/html/ExeState_8cpp.html +1 -1
- package/SVF-doxygen/html/ExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ExeState_8h_source.html +8 -8
- package/SVF-doxygen/html/ICFGSimplification_8h.html +2 -2
- package/SVF-doxygen/html/ICFGSimplification_8h_source.html +17 -18
- package/SVF-doxygen/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/IntervalValue_8h.html +2 -2
- package/SVF-doxygen/html/IntervalValue_8h_source.html +846 -864
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/RelExeState_8h_source.html +5 -5
- package/SVF-doxygen/html/RelationSolver_8cpp_source.html +67 -68
- package/SVF-doxygen/html/RelationSolver_8h.html +1 -1
- package/SVF-doxygen/html/RelationSolver_8h_source.html +17 -17
- package/SVF-doxygen/html/SVFIR2AbsState_8cpp.html +84 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8cpp_source.html +1348 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8h.html +100 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +378 -0
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +9 -8
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +920 -952
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h.html +2 -3
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +202 -207
- package/SVF-doxygen/html/SVFIR2Relation_8cpp.html +1 -1
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +76 -72
- package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
- package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/ae_8cpp.html +57 -57
- package/SVF-doxygen/html/ae_8cpp_source.html +462 -466
- package/SVF-doxygen/html/annotated.html +409 -418
- package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +184 -190
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +161 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +4325 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState-members.html +134 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState.html +2166 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AddressValue-members.html +15 -28
- package/SVF-doxygen/html/classSVF_1_1AddressValue.html +171 -230
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +0 -1
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +73 -73
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +578 -574
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1CFLNode-members.html +48 -49
- package/SVF-doxygen/html/classSVF_1_1CFLNode.html +25 -25
- package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ExeState.html +12 -14
- package/SVF-doxygen/html/classSVF_1_1ExeState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1FILOWorkList.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1GenericNode.html +22 -8
- package/SVF-doxygen/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +50 -64
- package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +349 -459
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RelExeState-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RelExeState.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +106 -107
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +141 -0
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +3137 -0
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +56 -57
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1128 -1178
- package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState-members.html +157 -0
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.html +1512 -0
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +0 -1
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.png +0 -0
- package/SVF-doxygen/html/classSymblicAbstractionTest-members.html +3 -3
- package/SVF-doxygen/html/classSymblicAbstractionTest.html +400 -404
- package/SVF-doxygen/html/classes.html +326 -336
- package/SVF-doxygen/html/dir_2c6fb801affc4b3efe6e1ed5974683f6.html +2 -10
- package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +2 -4
- package/SVF-doxygen/html/dir_9a8e7a56f4029a0d9f62b1c6d1f6e85b.html +2 -8
- package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +2 -4
- package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
- package/SVF-doxygen/html/files.html +18 -27
- package/SVF-doxygen/html/functions.html +33 -56
- package/SVF-doxygen/html/functions_a.html +29 -42
- package/SVF-doxygen/html/functions_b.html +14 -21
- package/SVF-doxygen/html/functions_c.html +42 -52
- package/SVF-doxygen/html/functions_d.html +7 -4
- package/SVF-doxygen/html/functions_e.html +7 -21
- package/SVF-doxygen/html/functions_enum.html +4 -7
- package/SVF-doxygen/html/functions_eval.html +2 -2
- package/SVF-doxygen/html/functions_eval_c.html +0 -3
- package/SVF-doxygen/html/functions_eval_i.html +2 -3
- package/SVF-doxygen/html/functions_eval_m.html +2 -2
- package/SVF-doxygen/html/functions_eval_s.html +2 -5
- package/SVF-doxygen/html/functions_eval_u.html +4 -1
- package/SVF-doxygen/html/functions_f.html +6 -6
- package/SVF-doxygen/html/functions_func.html +24 -31
- package/SVF-doxygen/html/functions_func_b.html +10 -16
- package/SVF-doxygen/html/functions_func_c.html +30 -39
- package/SVF-doxygen/html/functions_func_d.html +1 -1
- package/SVF-doxygen/html/functions_func_e.html +7 -17
- package/SVF-doxygen/html/functions_func_g.html +61 -115
- package/SVF-doxygen/html/functions_func_h.html +22 -24
- package/SVF-doxygen/html/functions_func_i.html +64 -94
- package/SVF-doxygen/html/functions_func_j.html +4 -6
- package/SVF-doxygen/html/functions_func_l.html +9 -23
- package/SVF-doxygen/html/functions_func_m.html +7 -8
- package/SVF-doxygen/html/functions_func_n.html +8 -13
- package/SVF-doxygen/html/functions_func_o.html +57 -48
- package/SVF-doxygen/html/functions_func_p.html +6 -11
- package/SVF-doxygen/html/functions_func_r.html +4 -4
- package/SVF-doxygen/html/functions_func_s.html +35 -50
- package/SVF-doxygen/html/functions_func_t.html +26 -40
- package/SVF-doxygen/html/functions_func_u.html +6 -5
- package/SVF-doxygen/html/functions_func_v.html +2 -9
- package/SVF-doxygen/html/functions_func_w.html +9 -8
- package/SVF-doxygen/html/functions_func_z.html +1 -2
- package/SVF-doxygen/html/functions_func_~.html +10 -22
- package/SVF-doxygen/html/functions_g.html +61 -118
- package/SVF-doxygen/html/functions_h.html +21 -23
- package/SVF-doxygen/html/functions_i.html +76 -106
- package/SVF-doxygen/html/functions_j.html +4 -6
- package/SVF-doxygen/html/functions_k.html +0 -6
- package/SVF-doxygen/html/functions_l.html +11 -25
- package/SVF-doxygen/html/functions_m.html +8 -9
- package/SVF-doxygen/html/functions_n.html +14 -17
- package/SVF-doxygen/html/functions_o.html +71 -90
- package/SVF-doxygen/html/functions_p.html +31 -30
- package/SVF-doxygen/html/functions_r.html +11 -15
- package/SVF-doxygen/html/functions_rela.html +2 -3
- package/SVF-doxygen/html/functions_rela_b.html +0 -1
- package/SVF-doxygen/html/functions_rela_e.html +0 -1
- package/SVF-doxygen/html/functions_rela_i.html +0 -2
- package/SVF-doxygen/html/functions_rela_l.html +0 -1
- package/SVF-doxygen/html/functions_rela_o.html +0 -18
- package/SVF-doxygen/html/functions_rela_r.html +2 -2
- package/SVF-doxygen/html/functions_rela_s.html +4 -9
- package/SVF-doxygen/html/functions_s.html +45 -70
- package/SVF-doxygen/html/functions_t.html +29 -45
- package/SVF-doxygen/html/functions_type.html +0 -5
- package/SVF-doxygen/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/functions_type_k.html +0 -6
- package/SVF-doxygen/html/functions_type_l.html +4 -3
- package/SVF-doxygen/html/functions_type_t.html +0 -3
- package/SVF-doxygen/html/functions_type_v.html +3 -5
- package/SVF-doxygen/html/functions_u.html +8 -4
- package/SVF-doxygen/html/functions_v.html +11 -20
- package/SVF-doxygen/html/functions_vars.html +33 -56
- package/SVF-doxygen/html/functions_vars_a.html +3 -0
- package/SVF-doxygen/html/functions_vars_g.html +2 -5
- package/SVF-doxygen/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/functions_vars_t.html +1 -0
- package/SVF-doxygen/html/functions_w.html +11 -10
- package/SVF-doxygen/html/functions_z.html +1 -2
- package/SVF-doxygen/html/functions_~.html +10 -22
- package/SVF-doxygen/html/globals.html +2 -2
- package/SVF-doxygen/html/globals_defs.html +1 -4
- package/SVF-doxygen/html/globals_n.html +2 -5
- package/SVF-doxygen/html/globals_s.html +1 -1
- package/SVF-doxygen/html/globals_vars.html +5 -5
- package/SVF-doxygen/html/globals_z.html +3 -3
- package/SVF-doxygen/html/hierarchy.html +622 -631
- package/SVF-doxygen/html/namespaceSVF.html +449 -458
- package/SVF-doxygen/html/search/all_0.js +155 -161
- package/SVF-doxygen/html/search/all_1.js +502 -503
- package/SVF-doxygen/html/search/all_10.js +325 -326
- package/SVF-doxygen/html/search/all_11.js +227 -227
- package/SVF-doxygen/html/search/all_12.js +563 -574
- package/SVF-doxygen/html/search/all_13.js +206 -208
- package/SVF-doxygen/html/search/all_14.js +74 -73
- package/SVF-doxygen/html/search/all_15.js +175 -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 +27 -27
- package/SVF-doxygen/html/search/all_1a.js +175 -179
- package/SVF-doxygen/html/search/all_2.js +180 -182
- package/SVF-doxygen/html/search/all_3.js +636 -642
- package/SVF-doxygen/html/search/all_4.js +237 -236
- package/SVF-doxygen/html/search/all_5.js +120 -126
- package/SVF-doxygen/html/search/all_6.js +236 -236
- package/SVF-doxygen/html/search/all_7.js +1040 -1056
- package/SVF-doxygen/html/search/all_8.js +211 -215
- package/SVF-doxygen/html/search/all_9.js +631 -638
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +24 -26
- package/SVF-doxygen/html/search/all_c.js +113 -115
- package/SVF-doxygen/html/search/all_d.js +205 -205
- package/SVF-doxygen/html/search/all_e.js +207 -209
- package/SVF-doxygen/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/search/classes_0.js +29 -28
- package/SVF-doxygen/html/search/classes_1.js +11 -11
- package/SVF-doxygen/html/search/classes_10.js +72 -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 +72 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +7 -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 +34 -38
- package/SVF-doxygen/html/search/classes_8.js +57 -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 +3 -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 +3 -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 +9 -9
- package/SVF-doxygen/html/search/enums_3.js +2 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -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 +16 -16
- package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_11.js +6 -5
- 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 +4 -4
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -37
- 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 +50 -50
- 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 +24 -24
- 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 +19 -19
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +48 -49
- package/SVF-doxygen/html/search/files_0.js +18 -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 +51 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +3 -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 +15 -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 +57 -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 +366 -368
- package/SVF-doxygen/html/search/functions_10.js +139 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -140
- package/SVF-doxygen/html/search/functions_12.js +294 -299
- package/SVF-doxygen/html/search/functions_13.js +72 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +70 -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 +175 -179
- package/SVF-doxygen/html/search/functions_2.js +92 -94
- package/SVF-doxygen/html/search/functions_3.js +258 -261
- package/SVF-doxygen/html/search/functions_4.js +85 -85
- package/SVF-doxygen/html/search/functions_5.js +54 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +857 -872
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +440 -446
- 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 +22 -25
- package/SVF-doxygen/html/search/functions_d.js +82 -82
- package/SVF-doxygen/html/search/functions_e.js +34 -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 +11 -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 +18 -19
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +65 -65
- package/SVF-doxygen/html/search/typedefs_11.js +12 -13
- package/SVF-doxygen/html/search/typedefs_12.js +13 -13
- 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 +4 -6
- package/SVF-doxygen/html/search/typedefs_a.js +30 -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 +171 -177
- package/SVF-doxygen/html/search/variables_1.js +78 -77
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +47 -47
- 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 +40 -40
- package/SVF-doxygen/html/search/variables_3.js +143 -143
- 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 +33 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +80 -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 +44 -44
- package/SVF-doxygen/html/search/variables_d.js +58 -58
- 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_1AbstractValue-members.html +164 -0
- package/SVF-doxygen/html/structSVF_1_1AbstractValue.html +2820 -0
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4-members.html +84 -0
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4.html +130 -0
- package/SVF-doxygen/html/svf-ex_8cpp.html +25 -25
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +26 -26
- package/package.json +1 -1
- package/svf/include/AE/Core/AbstractState.h +749 -0
- package/svf/include/AE/Core/AbstractValue.h +514 -39
- package/svf/include/AE/Core/AddressValue.h +32 -25
- package/svf/include/AE/Core/IntervalValue.h +10 -24
- package/svf/include/AE/Core/RelExeState.h +1 -1
- package/svf/include/AE/Core/RelationSolver.h +9 -9
- package/svf/include/AE/Svfexe/{AbstractExecution.h → AbstractInterpretation.h} +27 -26
- package/svf/include/AE/Svfexe/BufOverflowChecker.h +5 -5
- package/svf/include/AE/Svfexe/ICFGSimplification.h +1 -2
- package/svf/include/AE/Svfexe/{SVFIR2ItvExeState.h → SVFIR2AbsState.h} +30 -33
- package/svf/lib/AE/Core/AbstractState.cpp +357 -0
- package/svf/lib/AE/Core/RelationSolver.cpp +31 -31
- package/svf/lib/AE/Core/SVFIR2Relation.cpp +17 -16
- package/svf/lib/AE/Svfexe/{AbstractExecution.cpp → AbstractInterpretation.cpp} +166 -156
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +51 -47
- package/svf/lib/AE/Svfexe/{SVFIR2ItvExeState.cpp → SVFIR2AbsState.cpp} +211 -247
- package/svf-llvm/tools/AE/ae.cpp +105 -108
- package/svf-llvm/tools/Example/svf-ex.cpp +2 -2
- package/svf/include/AE/Core/ConsExeState.h +0 -453
- package/svf/include/AE/Core/ExeState.h +0 -304
- package/svf/include/AE/Core/IntervalExeState.h +0 -650
- package/svf/include/AE/Core/SingleAbsValue.h +0 -477
- package/svf/include/AE/Core/SymState.h +0 -221
- package/svf/include/AE/Svfexe/SVFIR2ConsExeState.h +0 -148
- package/svf/lib/AE/Core/ConsExeState.cpp +0 -603
- package/svf/lib/AE/Core/ExeState.cpp +0 -117
- package/svf/lib/AE/Core/IntervalExeState.cpp +0 -329
- package/svf/lib/AE/Core/SymState.cpp +0 -37
- package/svf/lib/AE/Svfexe/SVFIR2ConsExeState.cpp +0 -772
|
@@ -61,11 +61,12 @@ std::string IntervalToIntStr(const IntervalValue& inv)
|
|
|
61
61
|
|
|
62
62
|
void BufOverflowChecker::handleSVFStatement(const SVFStmt *stmt)
|
|
63
63
|
{
|
|
64
|
-
|
|
64
|
+
AbstractInterpretation::handleSVFStatement(stmt);
|
|
65
65
|
// for gep stmt, add the gep stmt to the addrToGep map
|
|
66
66
|
if (const GepStmt *gep = SVFUtil::dyn_cast<GepStmt>(stmt))
|
|
67
67
|
{
|
|
68
|
-
for (NodeID addrID:
|
|
68
|
+
for (NodeID addrID:
|
|
69
|
+
_svfir2ExeState->getAddrs(gep->getLHSVarID()).getAddrs())
|
|
69
70
|
{
|
|
70
71
|
NodeID objId = _svfir2ExeState->getInternalID(addrID);
|
|
71
72
|
_addrToGep[objId] = gep;
|
|
@@ -125,7 +126,7 @@ bool BufOverflowChecker::detectStrcpy(const CallICFGNode *call)
|
|
|
125
126
|
CallSite cs = SVFUtil::getSVFCallSite(call->getCallSite());
|
|
126
127
|
const SVFValue* arg0Val = cs.getArgument(0);
|
|
127
128
|
const SVFValue* arg1Val = cs.getArgument(1);
|
|
128
|
-
|
|
129
|
+
AbstractValue strLen = getStrlen(arg1Val);
|
|
129
130
|
// no need to -1, since it has \0 as the last byte
|
|
130
131
|
return canSafelyAccessMemory(arg0Val, strLen, call);
|
|
131
132
|
}
|
|
@@ -137,7 +138,7 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
137
138
|
{
|
|
138
139
|
//scanf("%d", &data);
|
|
139
140
|
if (cs.arg_size() < 2) return;
|
|
140
|
-
|
|
141
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
141
142
|
u32_t dst_id = _svfir->getValueNode(cs.getArgument(1));
|
|
142
143
|
if (!_svfir2ExeState->inVarToAddrsTable(dst_id))
|
|
143
144
|
{
|
|
@@ -147,11 +148,11 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
147
148
|
}
|
|
148
149
|
else
|
|
149
150
|
{
|
|
150
|
-
|
|
151
|
-
for (auto vaddr: Addrs)
|
|
151
|
+
AbstractValue Addrs = _svfir2ExeState->getAddrs(dst_id);
|
|
152
|
+
for (auto vaddr: Addrs.getAddrs())
|
|
152
153
|
{
|
|
153
154
|
u32_t objId = _svfir2ExeState->getInternalID(vaddr);
|
|
154
|
-
|
|
155
|
+
AbstractValue range = _svfir2ExeState->getRangeLimitFromType(_svfir->getGNode(objId)->getType());
|
|
155
156
|
es.store(vaddr, range);
|
|
156
157
|
}
|
|
157
158
|
}
|
|
@@ -160,7 +161,7 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
160
161
|
{
|
|
161
162
|
//fscanf(stdin, "%d", &data);
|
|
162
163
|
if (cs.arg_size() < 3) return;
|
|
163
|
-
|
|
164
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
164
165
|
u32_t dst_id = _svfir->getValueNode(cs.getArgument(2));
|
|
165
166
|
if (!_svfir2ExeState->inVarToAddrsTable(dst_id))
|
|
166
167
|
{
|
|
@@ -170,11 +171,11 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
170
171
|
}
|
|
171
172
|
else
|
|
172
173
|
{
|
|
173
|
-
|
|
174
|
-
for (auto vaddr: Addrs)
|
|
174
|
+
AbstractValue Addrs = _svfir2ExeState->getAddrs(dst_id);
|
|
175
|
+
for (auto vaddr: Addrs.getAddrs())
|
|
175
176
|
{
|
|
176
177
|
u32_t objId = _svfir2ExeState->getInternalID(vaddr);
|
|
177
|
-
|
|
178
|
+
AbstractValue range = _svfir2ExeState->getRangeLimitFromType(_svfir->getGNode(objId)->getType());
|
|
178
179
|
es.store(vaddr, range);
|
|
179
180
|
}
|
|
180
181
|
}
|
|
@@ -192,12 +193,12 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
192
193
|
auto sse_fread = [&](const CallSite &cs)
|
|
193
194
|
{
|
|
194
195
|
if (cs.arg_size() < 3) return;
|
|
195
|
-
|
|
196
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
196
197
|
u32_t block_count_id = _svfir->getValueNode(cs.getArgument(2));
|
|
197
198
|
u32_t block_size_id = _svfir->getValueNode(cs.getArgument(1));
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
AbstractValue block_count = es[block_count_id];
|
|
200
|
+
AbstractValue block_size = es[block_size_id];
|
|
201
|
+
AbstractValue block_byte = block_count * block_size;
|
|
201
202
|
canSafelyAccessMemory(cs.getArgument(0), block_byte, _svfir->getICFG()->getICFGNode(cs.getInstruction()));
|
|
202
203
|
};
|
|
203
204
|
_func_map["fread"] = sse_fread;
|
|
@@ -210,7 +211,7 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
210
211
|
auto sse_snprintf = [&](const CallSite &cs)
|
|
211
212
|
{
|
|
212
213
|
if (cs.arg_size() < 2) return;
|
|
213
|
-
|
|
214
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
214
215
|
u32_t size_id = _svfir->getValueNode(cs.getArgument(1));
|
|
215
216
|
u32_t dst_id = _svfir->getValueNode(cs.getArgument(0));
|
|
216
217
|
// get elem size of arg2
|
|
@@ -228,7 +229,7 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
228
229
|
return;
|
|
229
230
|
// assert(false && "we cannot support this type");
|
|
230
231
|
}
|
|
231
|
-
|
|
232
|
+
AbstractValue size = es[size_id] * IntervalValue(elemSize) - IntervalValue(1);
|
|
232
233
|
if (!es.inVarToAddrsTable(dst_id))
|
|
233
234
|
{
|
|
234
235
|
if (Options::BufferOverflowCheck())
|
|
@@ -259,12 +260,12 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
259
260
|
// itoa(num, ch, 10);
|
|
260
261
|
// num: int, ch: char*, 10 is decimal
|
|
261
262
|
if (cs.arg_size() < 3) return;
|
|
262
|
-
|
|
263
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
263
264
|
u32_t num_id = _svfir->getValueNode(cs.getArgument(0));
|
|
264
265
|
|
|
265
|
-
u32_t num = (u32_t) es[num_id].getNumeral();
|
|
266
|
+
u32_t num = (u32_t) es[num_id].getInterval().getNumeral();
|
|
266
267
|
std::string snum = std::to_string(num);
|
|
267
|
-
canSafelyAccessMemory(cs.getArgument(1),
|
|
268
|
+
canSafelyAccessMemory(cs.getArgument(1), AbstractValue((s32_t)snum.size()), _svfir->getICFG()->getICFGNode(cs.getInstruction()));
|
|
268
269
|
};
|
|
269
270
|
_func_map["itoa"] = sse_itoa;
|
|
270
271
|
|
|
@@ -274,8 +275,8 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
274
275
|
// check the arg size
|
|
275
276
|
if (cs.arg_size() < 1) return;
|
|
276
277
|
const SVFValue* strValue = cs.getArgument(0);
|
|
277
|
-
|
|
278
|
-
|
|
278
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
279
|
+
AbstractValue dst_size = getStrlen(strValue);
|
|
279
280
|
u32_t elemSize = 1;
|
|
280
281
|
if (strValue->getType()->isArrayTy())
|
|
281
282
|
{
|
|
@@ -283,7 +284,10 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
283
284
|
}
|
|
284
285
|
else if (strValue->getType()->isPointerTy())
|
|
285
286
|
{
|
|
286
|
-
|
|
287
|
+
if (const SVFType* pointee = getPointeeElement(_svfir->getValueNode(strValue)))
|
|
288
|
+
elemSize = pointee->getByteSize();
|
|
289
|
+
else
|
|
290
|
+
elemSize = 1;
|
|
287
291
|
}
|
|
288
292
|
u32_t lhsId = _svfir->getValueNode(cs.getInstruction());
|
|
289
293
|
es[lhsId] = dst_size / IntervalValue(elemSize);
|
|
@@ -295,9 +299,9 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
295
299
|
{
|
|
296
300
|
// recv(sockfd, buf, len, flags);
|
|
297
301
|
if (cs.arg_size() < 4) return;
|
|
298
|
-
|
|
302
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
299
303
|
u32_t len_id = _svfir->getValueNode(cs.getArgument(2));
|
|
300
|
-
|
|
304
|
+
AbstractValue len = es[len_id] - IntervalValue(1);
|
|
301
305
|
u32_t lhsId = _svfir->getValueNode(cs.getInstruction());
|
|
302
306
|
es[lhsId] = len;
|
|
303
307
|
canSafelyAccessMemory(cs.getArgument(1), len, _svfir->getICFG()->getICFGNode(cs.getInstruction()));;
|
|
@@ -310,9 +314,9 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
310
314
|
_checkpoints.erase(callNode);
|
|
311
315
|
//void SAFE_BUFACCESS(void* data, int size);
|
|
312
316
|
if (cs.arg_size() < 2) return;
|
|
313
|
-
|
|
317
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
314
318
|
u32_t size_id = _svfir->getValueNode(cs.getArgument(1));
|
|
315
|
-
|
|
319
|
+
AbstractValue val = es[size_id];
|
|
316
320
|
if (val.isBottom())
|
|
317
321
|
{
|
|
318
322
|
val = IntervalValue(0);
|
|
@@ -340,9 +344,9 @@ void BufOverflowChecker::initExtFunMap()
|
|
|
340
344
|
_checkpoints.erase(callNode);
|
|
341
345
|
//void UNSAFE_BUFACCESS(void* data, int size);
|
|
342
346
|
if (cs.arg_size() < 2) return;
|
|
343
|
-
|
|
347
|
+
SparseAbstractState&es = _svfir2ExeState->getEs();
|
|
344
348
|
u32_t size_id = _svfir->getValueNode(cs.getArgument(1));
|
|
345
|
-
|
|
349
|
+
AbstractValue val = es[size_id];
|
|
346
350
|
if (val.isBottom())
|
|
347
351
|
{
|
|
348
352
|
assert(false && "UNSAFE_BUFACCESS size is bottom");
|
|
@@ -385,9 +389,9 @@ bool BufOverflowChecker::detectStrcat(const CallICFGNode *call)
|
|
|
385
389
|
CallSite cs = SVFUtil::getSVFCallSite(call->getCallSite());
|
|
386
390
|
const SVFValue* arg0Val = cs.getArgument(0);
|
|
387
391
|
const SVFValue* arg1Val = cs.getArgument(1);
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
392
|
+
AbstractValue strLen0 = getStrlen(arg0Val);
|
|
393
|
+
AbstractValue strLen1 = getStrlen(arg1Val);
|
|
394
|
+
AbstractValue totalLen = strLen0 + strLen1;
|
|
391
395
|
return canSafelyAccessMemory(arg0Val, totalLen, call);
|
|
392
396
|
}
|
|
393
397
|
else if (std::find(strncatGroup.begin(), strncatGroup.end(), fun->getName()) != strncatGroup.end())
|
|
@@ -395,9 +399,9 @@ bool BufOverflowChecker::detectStrcat(const CallICFGNode *call)
|
|
|
395
399
|
CallSite cs = SVFUtil::getSVFCallSite(call->getCallSite());
|
|
396
400
|
const SVFValue* arg0Val = cs.getArgument(0);
|
|
397
401
|
const SVFValue* arg2Val = cs.getArgument(2);
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
402
|
+
AbstractValue arg2Num = _svfir2ExeState->getEs()[_svfir->getValueNode(arg2Val)];
|
|
403
|
+
AbstractValue strLen0 = getStrlen(arg0Val);
|
|
404
|
+
AbstractValue totalLen = strLen0 + arg2Num;
|
|
401
405
|
return canSafelyAccessMemory(arg0Val, totalLen, call);
|
|
402
406
|
}
|
|
403
407
|
else
|
|
@@ -409,7 +413,7 @@ bool BufOverflowChecker::detectStrcat(const CallICFGNode *call)
|
|
|
409
413
|
|
|
410
414
|
void BufOverflowChecker::handleExtAPI(const CallICFGNode *call)
|
|
411
415
|
{
|
|
412
|
-
|
|
416
|
+
AbstractInterpretation::handleExtAPI(call);
|
|
413
417
|
const SVFFunction *fun = SVFUtil::getCallee(call->getCallSite());
|
|
414
418
|
assert(fun && "SVFFunction* is nullptr");
|
|
415
419
|
CallSite cs = SVFUtil::getSVFCallSite(call->getCallSite());
|
|
@@ -446,7 +450,7 @@ void BufOverflowChecker::handleExtAPI(const CallICFGNode *call)
|
|
|
446
450
|
// loop the args and check the offset
|
|
447
451
|
for (auto arg: args)
|
|
448
452
|
{
|
|
449
|
-
|
|
453
|
+
AbstractValue offset = _svfir2ExeState->getEs()[_svfir->getValueNode(cs.getArgument(arg.second))] - IntervalValue(1);
|
|
450
454
|
canSafelyAccessMemory(cs.getArgument(arg.first), offset, call);
|
|
451
455
|
}
|
|
452
456
|
}
|
|
@@ -463,7 +467,7 @@ void BufOverflowChecker::handleExtAPI(const CallICFGNode *call)
|
|
|
463
467
|
// loop the args and check the offset
|
|
464
468
|
for (auto arg: args)
|
|
465
469
|
{
|
|
466
|
-
|
|
470
|
+
AbstractValue offset = _svfir2ExeState->getEs()[_svfir->getValueNode(cs.getArgument(arg.second))] - IntervalValue(1);
|
|
467
471
|
canSafelyAccessMemory(cs.getArgument(arg.first), offset, call);
|
|
468
472
|
}
|
|
469
473
|
}
|
|
@@ -482,7 +486,7 @@ void BufOverflowChecker::handleExtAPI(const CallICFGNode *call)
|
|
|
482
486
|
return;
|
|
483
487
|
}
|
|
484
488
|
|
|
485
|
-
bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const
|
|
489
|
+
bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const AbstractValue &len, const ICFGNode *curNode)
|
|
486
490
|
{
|
|
487
491
|
const SVFValue *firstValue = value;
|
|
488
492
|
/// Usually called by a GepStmt overflow check, or external API (like memcpy) overflow check
|
|
@@ -497,7 +501,7 @@ bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const Inte
|
|
|
497
501
|
Set<const SVFValue *> visited;
|
|
498
502
|
visited.insert(value);
|
|
499
503
|
Map<const ICFGNode *, IntervalValue> gep_offsets;
|
|
500
|
-
IntervalValue total_bytes = len;
|
|
504
|
+
IntervalValue total_bytes = len.getInterval();
|
|
501
505
|
worklist.push(value);
|
|
502
506
|
std::vector<const CallICFGNode *> callstack = _callSiteStack;
|
|
503
507
|
while (!worklist.empty())
|
|
@@ -551,7 +555,7 @@ bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const Inte
|
|
|
551
555
|
}
|
|
552
556
|
else
|
|
553
557
|
{
|
|
554
|
-
byteOffset = _svfir2ExeState->getByteOffset(gep);
|
|
558
|
+
byteOffset = _svfir2ExeState->getByteOffset(gep).getInterval();
|
|
555
559
|
}
|
|
556
560
|
// for variable offset, join with accumulate gep offset
|
|
557
561
|
gep_offsets[gep->getICFGNode()] = byteOffset;
|
|
@@ -580,7 +584,7 @@ bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const Inte
|
|
|
580
584
|
else
|
|
581
585
|
{
|
|
582
586
|
u32_t idx = _svfir->getValueNode(idxValue);
|
|
583
|
-
IntervalValue idxVal = _svfir2ExeState->getEs()[idx];
|
|
587
|
+
IntervalValue idxVal = _svfir2ExeState->getEs()[idx].getInterval();
|
|
584
588
|
if (idxVal.isBottom())
|
|
585
589
|
{
|
|
586
590
|
gepArrTotalByte = gepArrTotalByte + IntervalValue(0, 0);
|
|
@@ -729,7 +733,7 @@ bool BufOverflowChecker::canSafelyAccessMemory(const SVFValue *value, const Inte
|
|
|
729
733
|
|
|
730
734
|
void BufOverflowChecker::handleICFGNode(const SVF::ICFGNode *node)
|
|
731
735
|
{
|
|
732
|
-
|
|
736
|
+
AbstractInterpretation::handleICFGNode(node);
|
|
733
737
|
detectBufOverflow(node);
|
|
734
738
|
}
|
|
735
739
|
|
|
@@ -757,8 +761,8 @@ bool BufOverflowChecker::detectBufOverflow(const ICFGNode *node)
|
|
|
757
761
|
{
|
|
758
762
|
if (_svfir2ExeState->inVarToAddrsTable(load->getRHSVarID()))
|
|
759
763
|
{
|
|
760
|
-
|
|
761
|
-
for (auto vaddr: Addrs)
|
|
764
|
+
AbstractValue Addrs = _svfir2ExeState->getAddrs(load->getRHSVarID());
|
|
765
|
+
for (auto vaddr: Addrs.getAddrs())
|
|
762
766
|
{
|
|
763
767
|
u32_t objId = _svfir2ExeState->getInternalID(vaddr);
|
|
764
768
|
if (_addrToGep.find(objId) != _addrToGep.end())
|
|
@@ -773,8 +777,8 @@ bool BufOverflowChecker::detectBufOverflow(const ICFGNode *node)
|
|
|
773
777
|
{
|
|
774
778
|
if (_svfir2ExeState->inVarToAddrsTable(store->getLHSVarID()))
|
|
775
779
|
{
|
|
776
|
-
|
|
777
|
-
for (auto vaddr: Addrs)
|
|
780
|
+
AbstractValue Addrs = _svfir2ExeState->getAddrs(store->getLHSVarID());
|
|
781
|
+
for (auto vaddr: Addrs.getAddrs())
|
|
778
782
|
{
|
|
779
783
|
u32_t objId = _svfir2ExeState->getInternalID(vaddr);
|
|
780
784
|
if (_addrToGep.find(objId) != _addrToGep.end())
|