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
|
@@ -84,7 +84,7 @@ Inheritance diagram for SVF::BufOverflowChecker:</div>
|
|
|
84
84
|
<div class="center">
|
|
85
85
|
<img src="classSVF_1_1BufOverflowChecker.png" usemap="#SVF::BufOverflowChecker_map" alt=""/>
|
|
86
86
|
<map id="SVF::BufOverflowChecker_map" name="SVF::BufOverflowChecker_map">
|
|
87
|
-
<area href="
|
|
87
|
+
<area href="classSVF_1_1AbstractInterpretation.html" title="AbstractInterpretation is same as Abstract Execution." alt="SVF::AbstractInterpretation" shape="rect" coords="0,0,164,24"/>
|
|
88
88
|
</map>
|
|
89
89
|
</div></div>
|
|
90
90
|
<table class="memberdecls">
|
|
@@ -92,28 +92,28 @@ Inheritance diagram for SVF::BufOverflowChecker:</div>
|
|
|
92
92
|
Public Member Functions</h2></td></tr>
|
|
93
93
|
<tr class="memitem:adcfa49d892daef07e7d4274ab8d34b6f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowChecker.html#adcfa49d892daef07e7d4274ab8d34b6f">BufOverflowChecker</a> ()</td></tr>
|
|
94
94
|
<tr class="separator:adcfa49d892daef07e7d4274ab8d34b6f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
95
|
-
<tr class="inherit_header
|
|
96
|
-
<tr class="memitem:
|
|
97
|
-
<tr class="memdesc:
|
|
98
|
-
<tr class="separator:
|
|
99
|
-
<tr class="memitem:
|
|
100
|
-
<tr class="separator:
|
|
101
|
-
<tr class="memitem:
|
|
102
|
-
<tr class="memdesc:
|
|
103
|
-
<tr class="separator:
|
|
104
|
-
<tr class="memitem:
|
|
105
|
-
<tr class="memdesc:
|
|
106
|
-
<tr class="separator:
|
|
107
|
-
<tr class="memitem:
|
|
108
|
-
<tr class="separator:
|
|
95
|
+
<tr class="inherit_header pub_methods_classSVF_1_1AbstractInterpretation"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1AbstractInterpretation')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classSVF_1_1AbstractInterpretation.html">SVF::AbstractInterpretation</a></td></tr>
|
|
96
|
+
<tr class="memitem:a4080994b793d9510c00cb3a0260e0a61 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a4080994b793d9510c00cb3a0260e0a61">AbstractInterpretation</a> ()</td></tr>
|
|
97
|
+
<tr class="memdesc:a4080994b793d9510c00cb3a0260e0a61 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="classSVF_1_1AbstractInterpretation.html#a4080994b793d9510c00cb3a0260e0a61">More...</a><br /></td></tr>
|
|
98
|
+
<tr class="separator:a4080994b793d9510c00cb3a0260e0a61 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
99
|
+
<tr class="memitem:a971a676fb15da74d37de14725bab40b0 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a971a676fb15da74d37de14725bab40b0">runOnModule</a> (<a class="el" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</td></tr>
|
|
100
|
+
<tr class="separator:a971a676fb15da74d37de14725bab40b0 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
101
|
+
<tr class="memitem:aae29a8da31fddd069cb0e19cc2f78d46 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#aae29a8da31fddd069cb0e19cc2f78d46">~AbstractInterpretation</a> ()</td></tr>
|
|
102
|
+
<tr class="memdesc:aae29a8da31fddd069cb0e19cc2f78d46 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="classSVF_1_1AbstractInterpretation.html#aae29a8da31fddd069cb0e19cc2f78d46">More...</a><br /></td></tr>
|
|
103
|
+
<tr class="separator:aae29a8da31fddd069cb0e19cc2f78d46 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
104
|
+
<tr class="memitem:a2670b663d2c5afa974dfc0f316a273d1 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2670b663d2c5afa974dfc0f316a273d1">analyse</a> ()</td></tr>
|
|
105
|
+
<tr class="memdesc:a2670b663d2c5afa974dfc0f316a273d1 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">Program entry. <a href="classSVF_1_1AbstractInterpretation.html#a2670b663d2c5afa974dfc0f316a273d1">More...</a><br /></td></tr>
|
|
106
|
+
<tr class="separator:a2670b663d2c5afa974dfc0f316a273d1 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
107
|
+
<tr class="memitem:a5a17c9de696332a712879d1a7bc77fb5 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a5a17c9de696332a712879d1a7bc77fb5">getKind</a> () const</td></tr>
|
|
108
|
+
<tr class="separator:a5a17c9de696332a712879d1a7bc77fb5 inherit pub_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
109
109
|
</table><table class="memberdecls">
|
|
110
110
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
|
|
111
111
|
Static Public Member Functions</h2></td></tr>
|
|
112
|
-
<tr class="memitem:
|
|
113
|
-
<tr class="separator:
|
|
114
|
-
<tr class="inherit_header
|
|
115
|
-
<tr class="memitem:
|
|
116
|
-
<tr class="separator:
|
|
112
|
+
<tr class="memitem:aecc0ded0645b8a8c43a3d466b642ce08"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowChecker.html#aecc0ded0645b8a8c43a3d466b642ce08">classof</a> (const <a class="el" href="classSVF_1_1AbstractInterpretation.html">AbstractInterpretation</a> *ae)</td></tr>
|
|
113
|
+
<tr class="separator:aecc0ded0645b8a8c43a3d466b642ce08"><td class="memSeparator" colspan="2"> </td></tr>
|
|
114
|
+
<tr class="inherit_header pub_static_methods_classSVF_1_1AbstractInterpretation"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classSVF_1_1AbstractInterpretation')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classSVF_1_1AbstractInterpretation.html">SVF::AbstractInterpretation</a></td></tr>
|
|
115
|
+
<tr class="memitem:aa2d9b63cb2d303e6a1d4fe84a0df265f inherit pub_static_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#aa2d9b63cb2d303e6a1d4fe84a0df265f">classof</a> (const <a class="el" href="classSVF_1_1AbstractInterpretation.html">AbstractInterpretation</a> *ae)</td></tr>
|
|
116
|
+
<tr class="separator:aa2d9b63cb2d303e6a1d4fe84a0df265f inherit pub_static_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
117
117
|
</table><table class="memberdecls">
|
|
118
118
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
|
|
119
119
|
Protected Member Functions</h2></td></tr>
|
|
@@ -127,68 +127,68 @@ Protected Member Functions</h2></td></tr>
|
|
|
127
127
|
<tr class="separator:ad8b2f2fa6f22b9d1655135c819cbad8a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
128
128
|
<tr class="memitem:aa68f8aef09481d7c07dc59d7dfb83822"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowChecker.html#aa68f8aef09481d7c07dc59d7dfb83822">detectStrcat</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
129
129
|
<tr class="separator:aa68f8aef09481d7c07dc59d7dfb83822"><td class="memSeparator" colspan="2"> </td></tr>
|
|
130
|
-
<tr class="memitem:
|
|
131
|
-
<tr class="separator:
|
|
132
|
-
<tr class="inherit_header
|
|
133
|
-
<tr class="memitem:
|
|
134
|
-
<tr class="memdesc:
|
|
135
|
-
<tr class="separator:
|
|
136
|
-
<tr class="memitem:
|
|
137
|
-
<tr class="memdesc:
|
|
138
|
-
<tr class="separator:
|
|
139
|
-
<tr class="memitem:
|
|
140
|
-
<tr class="separator:
|
|
141
|
-
<tr class="memitem:
|
|
142
|
-
<tr class="separator:
|
|
143
|
-
<tr class="memitem:
|
|
144
|
-
<tr class="memdesc:
|
|
145
|
-
<tr class="separator:
|
|
146
|
-
<tr class="memitem:
|
|
147
|
-
<tr class="separator:
|
|
148
|
-
<tr class="memitem:
|
|
149
|
-
<tr class="memdesc:
|
|
150
|
-
<tr class="separator:
|
|
151
|
-
<tr class="memitem:
|
|
152
|
-
<tr class="memdesc:
|
|
153
|
-
<tr class="separator:
|
|
154
|
-
<tr class="memitem:
|
|
155
|
-
<tr class="separator:
|
|
156
|
-
<tr class="memitem:
|
|
157
|
-
<tr class="separator:
|
|
158
|
-
<tr class="memitem:
|
|
159
|
-
<tr class="separator:
|
|
160
|
-
<tr class="memitem:
|
|
161
|
-
<tr class="separator:
|
|
162
|
-
<tr class="memitem:
|
|
163
|
-
<tr class="separator:
|
|
164
|
-
<tr class="memitem:
|
|
165
|
-
<tr class="separator:
|
|
166
|
-
<tr class="memitem:
|
|
167
|
-
<tr class="separator:
|
|
168
|
-
<tr class="memitem:
|
|
169
|
-
<tr class="separator:
|
|
170
|
-
<tr class="memitem:
|
|
171
|
-
<tr class="separator:
|
|
172
|
-
<tr class="memitem:
|
|
173
|
-
<tr class="separator:
|
|
174
|
-
<tr class="memitem:
|
|
175
|
-
<tr class="separator:
|
|
176
|
-
<tr class="memitem:
|
|
177
|
-
<tr class="separator:
|
|
178
|
-
<tr class="memitem:
|
|
179
|
-
<tr class="separator:
|
|
180
|
-
<tr class="memitem:
|
|
181
|
-
<tr class="separator:
|
|
182
|
-
<tr class="memitem:
|
|
183
|
-
<tr class="separator:
|
|
184
|
-
<tr class="memitem:
|
|
185
|
-
<tr class="separator:
|
|
186
|
-
<tr class="memitem:
|
|
187
|
-
<tr class="separator:
|
|
188
|
-
<tr class="memitem:
|
|
189
|
-
<tr class="separator:
|
|
190
|
-
<tr class="memitem:
|
|
191
|
-
<tr class="separator:
|
|
130
|
+
<tr class="memitem:ad68fa02efad8b628e4542dc9ab6c58bf"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *value, const <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &len, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *curNode)</td></tr>
|
|
131
|
+
<tr class="separator:ad68fa02efad8b628e4542dc9ab6c58bf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
132
|
+
<tr class="inherit_header pro_methods_classSVF_1_1AbstractInterpretation"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classSVF_1_1AbstractInterpretation')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="classSVF_1_1AbstractInterpretation.html">SVF::AbstractInterpretation</a></td></tr>
|
|
133
|
+
<tr class="memitem:a276182afcfe95235ebd2d452424e87e7 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a276182afcfe95235ebd2d452424e87e7">handleGlobalNode</a> ()</td></tr>
|
|
134
|
+
<tr class="memdesc:a276182afcfe95235ebd2d452424e87e7 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">Global <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> is handled at the entry of the program,. <a href="classSVF_1_1AbstractInterpretation.html#a276182afcfe95235ebd2d452424e87e7">More...</a><br /></td></tr>
|
|
135
|
+
<tr class="separator:a276182afcfe95235ebd2d452424e87e7 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
136
|
+
<tr class="memitem:a738d1768c632f86d04599ec1aa53952a inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a738d1768c632f86d04599ec1aa53952a">markRecursiveFuns</a> ()</td></tr>
|
|
137
|
+
<tr class="memdesc:a738d1768c632f86d04599ec1aa53952a inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">mark recursive functions by detecting SCC in callgraph <a href="classSVF_1_1AbstractInterpretation.html#a738d1768c632f86d04599ec1aa53952a">More...</a><br /></td></tr>
|
|
138
|
+
<tr class="separator:a738d1768c632f86d04599ec1aa53952a inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
139
|
+
<tr class="memitem:adb96deda4bbb81956a6cfa5740503cb7 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#adb96deda4bbb81956a6cfa5740503cb7">hasInEdgesES</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
140
|
+
<tr class="separator:adb96deda4bbb81956a6cfa5740503cb7 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
141
|
+
<tr class="memitem:a8095a9c37c9ca4b96f2279df6f59bbf9 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a8095a9c37c9ca4b96f2279df6f59bbf9">hasBranchES</a> (const <a class="el" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a> *intraEdge, <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &es)</td></tr>
|
|
142
|
+
<tr class="separator:a8095a9c37c9ca4b96f2279df6f59bbf9 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
143
|
+
<tr class="memitem:a80d663262a8d909ef5756391cdd82246 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
144
|
+
<tr class="memdesc:a80d663262a8d909ef5756391cdd82246 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">handle instructions in svf basic blocks <a href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">More...</a><br /></td></tr>
|
|
145
|
+
<tr class="separator:a80d663262a8d909ef5756391cdd82246 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
146
|
+
<tr class="memitem:abbb4e49644121f6b038fd8fb4d7b0034 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#abbb4e49644121f6b038fd8fb4d7b0034">handleCallSite</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
147
|
+
<tr class="separator:abbb4e49644121f6b038fd8fb4d7b0034 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
148
|
+
<tr class="memitem:a71dff5d6a5b291014c0a65d3a6d7c8c1 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">handleCycle</a> (const <a class="el" href="namespaceSVF.html#a9c6abc711b0dcf5831d2cf175afc2414">ICFGWTOCycle</a> *cycle)</td></tr>
|
|
149
|
+
<tr class="memdesc:a71dff5d6a5b291014c0a65d3a6d7c8c1 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">handle wto cycle (loop) <a href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">More...</a><br /></td></tr>
|
|
150
|
+
<tr class="separator:a71dff5d6a5b291014c0a65d3a6d7c8c1 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
151
|
+
<tr class="memitem:a2e2253149e2bf114825a4e838118e012 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">handleFunc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *func)</td></tr>
|
|
152
|
+
<tr class="memdesc:a2e2253149e2bf114825a4e838118e012 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">handle user defined function, ext function is not included. <a href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">More...</a><br /></td></tr>
|
|
153
|
+
<tr class="separator:a2e2253149e2bf114825a4e838118e012 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
154
|
+
<tr class="memitem:af966130d5cb8d7db786c3ec056cc2dd4 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#af966130d5cb8d7db786c3ec056cc2dd4">SkipRecursiveCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callnode)</td></tr>
|
|
155
|
+
<tr class="separator:af966130d5cb8d7db786c3ec056cc2dd4 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
156
|
+
<tr class="memitem:a2b0a2f7a662909d999634d0ec08cb29c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2b0a2f7a662909d999634d0ec08cb29c">SkipRecursiveFunc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *func)</td></tr>
|
|
157
|
+
<tr class="separator:a2b0a2f7a662909d999634d0ec08cb29c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
158
|
+
<tr class="memitem:ae0c0148baf6f7510bf8e70ee3ad626bf inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ae0c0148baf6f7510bf8e70ee3ad626bf">hasCmpBranchES</a> (const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmpStmt, <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> succ, <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &es)</td></tr>
|
|
159
|
+
<tr class="separator:ae0c0148baf6f7510bf8e70ee3ad626bf inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
160
|
+
<tr class="memitem:ad5e8e749aec9d1c040c6be7eb26748e2 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ad5e8e749aec9d1c040c6be7eb26748e2">hasSwitchBranchES</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var, <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> succ, <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &es)</td></tr>
|
|
161
|
+
<tr class="separator:ad5e8e749aec9d1c040c6be7eb26748e2 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
162
|
+
<tr class="memitem:a0e8b546f608417e218c2fab5a5893135 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a0e8b546f608417e218c2fab5a5893135">getAllocaInstByteSize</a> (const <a class="el" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr)</td></tr>
|
|
163
|
+
<tr class="separator:a0e8b546f608417e218c2fab5a5893135 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
164
|
+
<tr class="memitem:a7dfd11b987d9ff9528277e23191ed95d inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a7dfd11b987d9ff9528277e23191ed95d">strRead</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *rhs)</td></tr>
|
|
165
|
+
<tr class="separator:a7dfd11b987d9ff9528277e23191ed95d inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
166
|
+
<tr class="memitem:a5bba3c0570d73acc743742a30af1b0b4 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVF::SVFValue</a> *strValue)</td></tr>
|
|
167
|
+
<tr class="separator:a5bba3c0570d73acc743742a30af1b0b4 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
168
|
+
<tr class="memitem:ac9e8bc430cd530e47811e28f5a9fe963 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ac9e8bc430cd530e47811e28f5a9fe963">traceMemoryAllocationSize</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *value)</td></tr>
|
|
169
|
+
<tr class="separator:ac9e8bc430cd530e47811e28f5a9fe963 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
170
|
+
<tr class="memitem:ac941d1eb9b1216c8334d0685a471b774 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ac941d1eb9b1216c8334d0685a471b774">handleStrcpy</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
171
|
+
<tr class="separator:ac941d1eb9b1216c8334d0685a471b774 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
172
|
+
<tr class="memitem:acba90e968cebacca3da78ac765df33ef inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#acba90e968cebacca3da78ac765df33ef">handleStrcat</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call)</td></tr>
|
|
173
|
+
<tr class="separator:acba90e968cebacca3da78ac765df33ef inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
174
|
+
<tr class="memitem:adf02c5bf1b86f00163b114a78e03120c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *dst, const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *src, <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> start_idx)</td></tr>
|
|
175
|
+
<tr class="separator:adf02c5bf1b86f00163b114a78e03120c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
176
|
+
<tr class="memitem:a568e2247536de76694dabfc5a5052b57 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a568e2247536de76694dabfc5a5052b57">handleMemset</a> (const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *dst, <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> elem, <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len)</td></tr>
|
|
177
|
+
<tr class="separator:a568e2247536de76694dabfc5a5052b57 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
178
|
+
<tr class="memitem:a2057e8e1c0aaf39e74f0a8fb2a1b580c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id)</td></tr>
|
|
179
|
+
<tr class="separator:a2057e8e1c0aaf39e74f0a8fb2a1b580c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
180
|
+
<tr class="memitem:aae7c67e9c423599442be721b55cd7279 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#aae7c67e9c423599442be721b55cd7279">collectCheckPoint</a> ()</td></tr>
|
|
181
|
+
<tr class="separator:aae7c67e9c423599442be721b55cd7279 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
182
|
+
<tr class="memitem:acea2c82e5b463db6f097e9a9641f601b inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#acea2c82e5b463db6f097e9a9641f601b">checkPointAllSet</a> ()</td></tr>
|
|
183
|
+
<tr class="separator:acea2c82e5b463db6f097e9a9641f601b inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
184
|
+
<tr class="memitem:a29fe7c63c61a7aec8ae1477a061f5bf2 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a29fe7c63c61a7aec8ae1477a061f5bf2">AccessMemoryViaRetNode</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callnode, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
185
|
+
<tr class="separator:a29fe7c63c61a7aec8ae1477a061f5bf2 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
186
|
+
<tr class="memitem:a550c12360c2149ba0e55bdf4cf7b8dd0 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a550c12360c2149ba0e55bdf4cf7b8dd0">AccessMemoryViaCopyStmt</a> (const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="el" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
187
|
+
<tr class="separator:a550c12360c2149ba0e55bdf4cf7b8dd0 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
188
|
+
<tr class="memitem:ac60581a57407fa4c65b1975f5be687b8 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ac60581a57407fa4c65b1975f5be687b8">AccessMemoryViaLoadStmt</a> (const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
189
|
+
<tr class="separator:ac60581a57407fa4c65b1975f5be687b8 inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
190
|
+
<tr class="memitem:a048e203517ac727e6fe0653e1f24052c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a048e203517ac727e6fe0653e1f24052c">AccessMemoryViaCallArgs</a> (const <a class="el" href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a> *arg, <a class="el" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &worklist, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> * > &visited)</td></tr>
|
|
191
|
+
<tr class="separator:a048e203517ac727e6fe0653e1f24052c inherit pro_methods_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
192
192
|
</table><table class="memberdecls">
|
|
193
193
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
|
|
194
194
|
Private Member Functions</h2></td></tr>
|
|
@@ -210,56 +210,56 @@ Private Attributes</h2></td></tr>
|
|
|
210
210
|
</table><table class="memberdecls">
|
|
211
211
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
|
212
212
|
Additional Inherited Members</h2></td></tr>
|
|
213
|
-
<tr class="inherit_header
|
|
214
|
-
<tr class="memitem:
|
|
215
|
-
  <a class="el" href="
|
|
216
|
-
<a class="el" href="
|
|
217
|
-
<a class="el" href="
|
|
218
|
-
<a class="el" href="
|
|
213
|
+
<tr class="inherit_header pub_types_classSVF_1_1AbstractInterpretation"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classSVF_1_1AbstractInterpretation')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="classSVF_1_1AbstractInterpretation.html">SVF::AbstractInterpretation</a></td></tr>
|
|
214
|
+
<tr class="memitem:a13fdb4a6a6d09e3504fdad16b88616da inherit pub_types_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">ExtAPIType</a> { <br />
|
|
215
|
+
  <a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>,
|
|
216
|
+
<a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>,
|
|
217
|
+
<a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>,
|
|
218
|
+
<a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>,
|
|
219
219
|
<br />
|
|
220
|
-
  <a class="el" href="
|
|
220
|
+
  <a class="el" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>
|
|
221
221
|
<br />
|
|
222
222
|
}</td></tr>
|
|
223
|
-
<tr class="separator:
|
|
224
|
-
<tr class="memitem:
|
|
225
|
-
<tr class="separator:
|
|
226
|
-
<tr class="inherit_header
|
|
227
|
-
<tr class="memitem:
|
|
228
|
-
<tr class="memdesc:
|
|
229
|
-
<tr class="separator:
|
|
230
|
-
<tr class="memitem:
|
|
231
|
-
<tr class="separator:
|
|
232
|
-
<tr class="memitem:
|
|
233
|
-
<tr class="memdesc:
|
|
234
|
-
<tr class="separator:
|
|
235
|
-
<tr class="memitem:
|
|
236
|
-
<tr class="separator:
|
|
237
|
-
<tr class="memitem:
|
|
238
|
-
<tr class="separator:
|
|
239
|
-
<tr class="memitem:
|
|
240
|
-
<tr class="separator:
|
|
241
|
-
<tr class="memitem:
|
|
242
|
-
<tr class="separator:
|
|
243
|
-
<tr class="memitem:
|
|
244
|
-
<tr class="separator:
|
|
245
|
-
<tr class="memitem:
|
|
246
|
-
<tr class="separator:
|
|
247
|
-
<tr class="memitem:
|
|
248
|
-
<tr class="separator:
|
|
249
|
-
<tr class="memitem:
|
|
250
|
-
<tr class="separator:
|
|
251
|
-
<tr class="memitem:
|
|
252
|
-
<tr class="separator:
|
|
253
|
-
<tr class="memitem:
|
|
254
|
-
<tr class="separator:
|
|
255
|
-
<tr class="memitem:
|
|
256
|
-
<tr class="separator:
|
|
257
|
-
<tr class="memitem:
|
|
258
|
-
<tr class="separator:
|
|
259
|
-
<tr class="memitem:
|
|
260
|
-
<tr class="separator:
|
|
261
|
-
<tr class="memitem:
|
|
262
|
-
<tr class="separator:
|
|
223
|
+
<tr class="separator:a13fdb4a6a6d09e3504fdad16b88616da inherit pub_types_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
224
|
+
<tr class="memitem:a3c1b3407928ab39c68300e9d8f225d46 inherit pub_types_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SCCDetection.html">SCCDetection</a>< <a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a3c1b3407928ab39c68300e9d8f225d46">CallGraphSCC</a></td></tr>
|
|
225
|
+
<tr class="separator:a3c1b3407928ab39c68300e9d8f225d46 inherit pub_types_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
226
|
+
<tr class="inherit_header pro_attribs_classSVF_1_1AbstractInterpretation"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classSVF_1_1AbstractInterpretation')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classSVF_1_1AbstractInterpretation.html">SVF::AbstractInterpretation</a></td></tr>
|
|
227
|
+
<tr class="memitem:a618fc324a6c205d7e1b471bd850377a9 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a></td></tr>
|
|
228
|
+
<tr class="memdesc:a618fc324a6c205d7e1b471bd850377a9 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">protected data members, also used in subclasses <a href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">More...</a><br /></td></tr>
|
|
229
|
+
<tr class="separator:a618fc324a6c205d7e1b471bd850377a9 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
230
|
+
<tr class="memitem:adf3fad75a4f96aefe5c25e3405509fbe inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#adf3fad75a4f96aefe5c25e3405509fbe">_callgraph</a></td></tr>
|
|
231
|
+
<tr class="separator:adf3fad75a4f96aefe5c25e3405509fbe inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
232
|
+
<tr class="memitem:af78f068a373ebb6a2f14dcde980a9dae inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a></td></tr>
|
|
233
|
+
<tr class="memdesc:af78f068a373ebb6a2f14dcde980a9dae inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="mdescLeft"> </td><td class="mdescRight">Execution State, used to store the Interval Value of every <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> variable. <a href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">More...</a><br /></td></tr>
|
|
234
|
+
<tr class="separator:af78f068a373ebb6a2f14dcde980a9dae inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
235
|
+
<tr class="memitem:a00154ebaceda1be070b38803c1a82535 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ac0bcb586dffbfadeb33f501cafbaa1c9">AEAPI</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a00154ebaceda1be070b38803c1a82535">_api</a> {nullptr}</td></tr>
|
|
236
|
+
<tr class="separator:a00154ebaceda1be070b38803c1a82535 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
237
|
+
<tr class="memitem:ab988e460fe92f0ba3c4cbee8e0c480a0 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ab988e460fe92f0ba3c4cbee8e0c480a0">_icfg</a></td></tr>
|
|
238
|
+
<tr class="separator:ab988e460fe92f0ba3c4cbee8e0c480a0 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
239
|
+
<tr class="memitem:a75e493e6b9db3e29428794432d293bc2 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AEStat.html">AEStat</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a></td></tr>
|
|
240
|
+
<tr class="separator:a75e493e6b9db3e29428794432d293bc2 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
241
|
+
<tr class="memitem:a5d3b15c3cdb9c8e91b942924bf8aee21 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a5d3b15c3cdb9c8e91b942924bf8aee21">_kind</a></td></tr>
|
|
242
|
+
<tr class="separator:a5d3b15c3cdb9c8e91b942924bf8aee21 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
243
|
+
<tr class="memitem:a2a5e0a88ebef4ae740983726e7f1b5eb inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2a5e0a88ebef4ae740983726e7f1b5eb">_bugLoc</a></td></tr>
|
|
244
|
+
<tr class="separator:a2a5e0a88ebef4ae740983726e7f1b5eb inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
245
|
+
<tr class="memitem:a8e4f0c5f527e321369a19a0b37124079 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFBugReport.html">SVFBugReport</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a8e4f0c5f527e321369a19a0b37124079">_recoder</a></td></tr>
|
|
246
|
+
<tr class="separator:a8e4f0c5f527e321369a19a0b37124079 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
247
|
+
<tr class="memitem:a9885b50cf28b65bebb488442085fab26 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top">std::vector< const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a></td></tr>
|
|
248
|
+
<tr class="separator:a9885b50cf28b65bebb488442085fab26 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
249
|
+
<tr class="memitem:a09aa739395388f64fcb3d539d58d2041 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *, <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a09aa739395388f64fcb3d539d58d2041">_nodeToBugInfo</a></td></tr>
|
|
250
|
+
<tr class="separator:a09aa739395388f64fcb3d539d58d2041 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
251
|
+
<tr class="memitem:abc0d4715611b8f4a61e1da82658ef95f inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#abc0d4715611b8f4a61e1da82658ef95f">_ander</a></td></tr>
|
|
252
|
+
<tr class="separator:abc0d4715611b8f4a61e1da82658ef95f inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
253
|
+
<tr class="memitem:af41aa555a5b607ae7700263ac72f8dbb inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *, <a class="el" href="classSVF_1_1ICFGWTO.html">ICFGWTO</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#af41aa555a5b607ae7700263ac72f8dbb">_funcToWTO</a></td></tr>
|
|
254
|
+
<tr class="separator:af41aa555a5b607ae7700263ac72f8dbb inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
255
|
+
<tr class="memitem:a9b5e58476c372570551da971d22c5c02 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a9b5e58476c372570551da971d22c5c02">_recursiveFuns</a></td></tr>
|
|
256
|
+
<tr class="separator:a9b5e58476c372570551da971d22c5c02 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
257
|
+
<tr class="memitem:aa27d0ef684deec1f5385fdb0d4c64827 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, std::function< void(const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a> &)> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a></td></tr>
|
|
258
|
+
<tr class="separator:aa27d0ef684deec1f5385fdb0d4c64827 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
259
|
+
<tr class="memitem:a219313e979d779221116c1bc45becc1b inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a></td></tr>
|
|
260
|
+
<tr class="separator:a219313e979d779221116c1bc45becc1b inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
261
|
+
<tr class="memitem:a2a1e1b72ed740cef4c3e57e3e32c3f75 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a></td></tr>
|
|
262
|
+
<tr class="separator:a2a1e1b72ed740cef4c3e57e3e32c3f75 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
263
263
|
</table>
|
|
264
264
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
265
265
|
<div class="textblock">
|
|
@@ -289,10 +289,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
289
289
|
</div><div class="memdoc">
|
|
290
290
|
|
|
291
291
|
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8h_source.html#l00106">106</a> of file <a class="el" href="BufOverflowChecker_8h_source.html">BufOverflowChecker.h</a>.</p>
|
|
292
|
-
<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  : <a class="code" href="
|
|
292
|
+
<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  : <a class="code" href="classSVF_1_1AbstractInterpretation.html#a4080994b793d9510c00cb3a0260e0a61">AbstractInterpretation</a>()</div>
|
|
293
293
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div>
|
|
294
294
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af0e2276001df7d51c45b22d5d11ca09b">initExtFunMap</a>();</div>
|
|
295
|
-
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="
|
|
295
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5d3b15c3cdb9c8e91b942924bf8aee21">_kind</a> = <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">AEKind::BufOverflowChecker</a>;</div>
|
|
296
296
|
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#aed959fce840cbea32d3567ee1ac01e82">initExtAPIBufOverflowCheckRules</a>();</div>
|
|
297
297
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
|
|
298
298
|
</div><!-- fragment -->
|
|
@@ -343,8 +343,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
343
343
|
|
|
344
344
|
</div>
|
|
345
345
|
</div>
|
|
346
|
-
<a id="
|
|
347
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
346
|
+
<a id="ad68fa02efad8b628e4542dc9ab6c58bf"></a>
|
|
347
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad68fa02efad8b628e4542dc9ab6c58bf">◆ </a></span>canSafelyAccessMemory()</h2>
|
|
348
348
|
|
|
349
349
|
<div class="memitem">
|
|
350
350
|
<div class="memproto">
|
|
@@ -361,7 +361,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
361
361
|
<tr>
|
|
362
362
|
<td class="paramkey"></td>
|
|
363
363
|
<td></td>
|
|
364
|
-
<td class="paramtype">const <a class="el" href="
|
|
364
|
+
<td class="paramtype">const <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> & </td>
|
|
365
365
|
<td class="paramname"><em>len</em>, </td>
|
|
366
366
|
</tr>
|
|
367
367
|
<tr>
|
|
@@ -394,12 +394,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
394
394
|
<p>Usually called by a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> overflow check, or external API (like memcpy) overflow check Defitions of Terms: source node: malloc or gepStmt(array), sink node: gepStmt or external API (like memcpy) e.g. 1) a = malloc(10), a[11] = 10, a[11] is the sink node, a is the source node (malloc) 2) A = struct {int a[10];}, A.a[11] = 10, A.a[11] is the sink, A.a is the source node (gepStmt(array))</p>
|
|
395
395
|
<p>it tracks the value flow from sink to source, and accumulates offset then compare the accumulated offset and malloc size (or gepStmt array size)</p>
|
|
396
396
|
|
|
397
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
397
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00489">489</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
398
398
|
|
|
399
399
|
</div>
|
|
400
400
|
</div>
|
|
401
|
-
<a id="
|
|
402
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
401
|
+
<a id="aecc0ded0645b8a8c43a3d466b642ce08"></a>
|
|
402
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aecc0ded0645b8a8c43a3d466b642ce08">◆ </a></span>classof()</h2>
|
|
403
403
|
|
|
404
404
|
<div class="memitem">
|
|
405
405
|
<div class="memproto">
|
|
@@ -410,7 +410,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
410
410
|
<tr>
|
|
411
411
|
<td class="memname">static bool SVF::BufOverflowChecker::classof </td>
|
|
412
412
|
<td>(</td>
|
|
413
|
-
<td class="paramtype">const <a class="el" href="
|
|
413
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1AbstractInterpretation.html">AbstractInterpretation</a> * </td>
|
|
414
414
|
<td class="paramname"><em>ae</em></td><td>)</td>
|
|
415
415
|
<td></td>
|
|
416
416
|
</tr>
|
|
@@ -495,43 +495,43 @@ Additional Inherited Members</h2></td></tr>
|
|
|
495
495
|
</dl>
|
|
496
496
|
<dl class="section return"><dt>Returns</dt><dd>true if the buffer overflow is detected </dd></dl>
|
|
497
497
|
|
|
498
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
499
|
-
<div class="fragment"><div class="line"><a name="
|
|
500
|
-
<div class="line"><a name="
|
|
501
|
-
<div class="line"><a name="
|
|
502
|
-
<div class="line"><a name="
|
|
503
|
-
<div class="line"><a name="
|
|
504
|
-
<div class="line"><a name="
|
|
505
|
-
<div class="line"><a name="
|
|
506
|
-
<div class="line"><a name="
|
|
507
|
-
<div class="line"><a name="
|
|
508
|
-
<div class="line"><a name="
|
|
509
|
-
<div class="line"><a name="
|
|
510
|
-
<div class="line"><a name="
|
|
511
|
-
<div class="line"><a name="
|
|
512
|
-
<div class="line"><a name="
|
|
513
|
-
<div class="line"><a name="
|
|
514
|
-
<div class="line"><a name="
|
|
515
|
-
<div class="line"><a name="
|
|
516
|
-
<div class="line"><a name="
|
|
517
|
-
<div class="line"><a name="
|
|
518
|
-
<div class="line"><a name="
|
|
519
|
-
<div class="line"><a name="
|
|
520
|
-
<div class="line"><a name="
|
|
521
|
-
<div class="line"><a name="
|
|
522
|
-
<div class="line"><a name="
|
|
523
|
-
<div class="line"><a name="
|
|
524
|
-
<div class="line"><a name="
|
|
525
|
-
<div class="line"><a name="
|
|
526
|
-
<div class="line"><a name="
|
|
527
|
-
<div class="line"><a name="
|
|
528
|
-
<div class="line"><a name="
|
|
529
|
-
<div class="line"><a name="
|
|
530
|
-
<div class="line"><a name="
|
|
531
|
-
<div class="line"><a name="
|
|
532
|
-
<div class="line"><a name="
|
|
533
|
-
<div class="line"><a name="
|
|
534
|
-
<div class="line"><a name="
|
|
498
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00376">376</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
499
|
+
<div class="fragment"><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div>
|
|
500
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> SVFFunction *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call->getCallSite());</div>
|
|
501
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="comment">// check the arg size</span></div>
|
|
502
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// if it is strcat group, we need to check the length of string,</span></div>
|
|
503
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="comment">// e.g. strcat(str1, str2); which checks AllocSize(str1) >= Strlen(str1) + Strlen(str2);</span></div>
|
|
504
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">// if it is strncat group, we do not need to check the length of string,</span></div>
|
|
505
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// e.g. strncat(str1, str2, n); which checks AllocSize(str1) >= Strlen(str1) + n;</span></div>
|
|
506
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  </div>
|
|
507
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> std::vector<std::string> strcatGroup = {<span class="stringliteral">"__strcat_chk"</span>, <span class="stringliteral">"strcat"</span>, <span class="stringliteral">"__wcscat_chk"</span>, <span class="stringliteral">"wcscat"</span>};</div>
|
|
508
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">const</span> std::vector<std::string> strncatGroup = {<span class="stringliteral">"__strncat_chk"</span>, <span class="stringliteral">"strncat"</span>, <span class="stringliteral">"__wcsncat_chk"</span>, <span class="stringliteral">"wcsncat"</span>};</div>
|
|
509
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun->getName()) != strcatGroup.end())</div>
|
|
510
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div>
|
|
511
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
512
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
513
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">const</span> SVFValue* arg1Val = cs.getArgument(1);</div>
|
|
514
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  AbstractValue strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
|
|
515
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  AbstractValue strLen1 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
|
|
516
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  AbstractValue totalLen = strLen0 + strLen1;</div>
|
|
517
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(arg0Val, totalLen, call);</div>
|
|
518
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div>
|
|
519
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun->getName()) != strncatGroup.end())</div>
|
|
520
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div>
|
|
521
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
522
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
523
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">const</span> SVFValue* arg2Val = cs.getArgument(2);</div>
|
|
524
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  AbstractValue arg2Num = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
|
|
525
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  AbstractValue strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
|
|
526
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  AbstractValue totalLen = strLen0 + arg2Num;</div>
|
|
527
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(arg0Val, totalLen, call);</div>
|
|
528
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div>
|
|
529
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">else</span></div>
|
|
530
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div>
|
|
531
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown strcat function, please add it to strcatGroup or strncatGroup"</span>);</div>
|
|
532
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  abort();</div>
|
|
533
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div>
|
|
534
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div>
|
|
535
535
|
</div><!-- fragment -->
|
|
536
536
|
</div>
|
|
537
537
|
</div>
|
|
@@ -567,15 +567,15 @@ Additional Inherited Members</h2></td></tr>
|
|
|
567
567
|
</dl>
|
|
568
568
|
<dl class="section return"><dt>Returns</dt><dd>true if the buffer overflow is detected </dd></dl>
|
|
569
569
|
|
|
570
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
571
|
-
<div class="fragment"><div class="line"><a name="
|
|
572
|
-
<div class="line"><a name="
|
|
573
|
-
<div class="line"><a name="
|
|
574
|
-
<div class="line"><a name="
|
|
575
|
-
<div class="line"><a name="
|
|
576
|
-
<div class="line"><a name="
|
|
577
|
-
<div class="line"><a name="
|
|
578
|
-
<div class="line"><a name="
|
|
570
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00124">124</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
571
|
+
<div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div>
|
|
572
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
573
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
574
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> SVFValue* arg1Val = cs.getArgument(1);</div>
|
|
575
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  AbstractValue strLen = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
|
|
576
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// no need to -1, since it has \0 as the last byte</span></div>
|
|
577
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(arg0Val, strLen, call);</div>
|
|
578
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div>
|
|
579
579
|
</div><!-- fragment -->
|
|
580
580
|
</div>
|
|
581
581
|
</div>
|
|
@@ -610,82 +610,82 @@ Additional Inherited Members</h2></td></tr>
|
|
|
610
610
|
</dd>
|
|
611
611
|
</dl>
|
|
612
612
|
|
|
613
|
-
<p>Reimplemented from <a class="el" href="
|
|
613
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">SVF::AbstractInterpretation</a>.</p>
|
|
614
614
|
|
|
615
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
616
|
-
<div class="fragment"><div class="line"><a name="
|
|
617
|
-
<div class="line"><a name="
|
|
618
|
-
<div class="line"><a name="
|
|
619
|
-
<div class="line"><a name="
|
|
620
|
-
<div class="line"><a name="
|
|
621
|
-
<div class="line"><a name="
|
|
622
|
-
<div class="line"><a name="
|
|
623
|
-
<div class="line"><a name="
|
|
624
|
-
<div class="line"><a name="
|
|
625
|
-
<div class="line"><a name="
|
|
626
|
-
<div class="line"><a name="
|
|
627
|
-
<div class="line"><a name="
|
|
628
|
-
<div class="line"><a name="
|
|
629
|
-
<div class="line"><a name="
|
|
630
|
-
<div class="line"><a name="
|
|
631
|
-
<div class="line"><a name="
|
|
632
|
-
<div class="line"><a name="
|
|
633
|
-
<div class="line"><a name="
|
|
634
|
-
<div class="line"><a name="
|
|
635
|
-
<div class="line"><a name="
|
|
636
|
-
<div class="line"><a name="
|
|
637
|
-
<div class="line"><a name="
|
|
638
|
-
<div class="line"><a name="
|
|
639
|
-
<div class="line"><a name="
|
|
640
|
-
<div class="line"><a name="
|
|
641
|
-
<div class="line"><a name="
|
|
642
|
-
<div class="line"><a name="
|
|
643
|
-
<div class="line"><a name="
|
|
644
|
-
<div class="line"><a name="
|
|
645
|
-
<div class="line"><a name="
|
|
646
|
-
<div class="line"><a name="
|
|
647
|
-
<div class="line"><a name="
|
|
648
|
-
<div class="line"><a name="
|
|
649
|
-
<div class="line"><a name="
|
|
650
|
-
<div class="line"><a name="
|
|
651
|
-
<div class="line"><a name="
|
|
652
|
-
<div class="line"><a name="
|
|
653
|
-
<div class="line"><a name="
|
|
654
|
-
<div class="line"><a name="
|
|
655
|
-
<div class="line"><a name="
|
|
656
|
-
<div class="line"><a name="
|
|
657
|
-
<div class="line"><a name="
|
|
658
|
-
<div class="line"><a name="
|
|
659
|
-
<div class="line"><a name="
|
|
660
|
-
<div class="line"><a name="
|
|
661
|
-
<div class="line"><a name="
|
|
662
|
-
<div class="line"><a name="
|
|
663
|
-
<div class="line"><a name="
|
|
664
|
-
<div class="line"><a name="
|
|
665
|
-
<div class="line"><a name="
|
|
666
|
-
<div class="line"><a name="
|
|
667
|
-
<div class="line"><a name="
|
|
668
|
-
<div class="line"><a name="
|
|
669
|
-
<div class="line"><a name="
|
|
670
|
-
<div class="line"><a name="
|
|
671
|
-
<div class="line"><a name="
|
|
672
|
-
<div class="line"><a name="
|
|
673
|
-
<div class="line"><a name="
|
|
674
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div>
|
|
675
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractExecution.html#a442fb8eda087f72aa61816213dea43afac9539311eec734c966b719990e869b12">STRCPY</a>)</div>
|
|
676
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div>
|
|
677
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad8b2f2fa6f22b9d1655135c819cbad8a">detectStrcpy</a>(call);</div>
|
|
615
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00414">414</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
616
|
+
<div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> {</div>
|
|
617
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">AbstractInterpretation::handleExtAPI</a>(call);</div>
|
|
618
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> SVFFunction *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call->getCallSite());</div>
|
|
619
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  assert(fun && <span class="stringliteral">"SVFFunction* is nullptr"</span>);</div>
|
|
620
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
621
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// check the type of mem api,</span></div>
|
|
622
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// MEMCPY: like memcpy, memcpy_chk, llvm.memcpy etc.</span></div>
|
|
623
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// MEMSET: like memset, memset_chk, llvm.memset etc.</span></div>
|
|
624
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">// STRCPY: like strcpy, strcpy_chk, wcscpy etc.</span></div>
|
|
625
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// STRCAT: like strcat, strcat_chk, wcscat etc.</span></div>
|
|
626
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// for other ext api like printf, scanf, etc., they have their own handlers</span></div>
|
|
627
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">ExtAPIType</a> extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>;</div>
|
|
628
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// get type of mem api</span></div>
|
|
629
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &annotation: fun->getAnnotations())</div>
|
|
630
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div>
|
|
631
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMCPY"</span>) != std::string::npos)</div>
|
|
632
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>;</div>
|
|
633
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMSET"</span>) != std::string::npos)</div>
|
|
634
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>;</div>
|
|
635
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCPY"</span>) != std::string::npos)</div>
|
|
636
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>;</div>
|
|
637
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCAT"</span>) != std::string::npos)</div>
|
|
638
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>;</div>
|
|
639
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div>
|
|
640
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</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>
|
|
641
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>)</div>
|
|
642
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div>
|
|
643
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
644
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  {</div>
|
|
645
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
646
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun->getName() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
647
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span>;</div>
|
|
648
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div>
|
|
649
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// call parseMemcpyBufferCheckArgs to parse the BUF_CHECK annotation</span></div>
|
|
650
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.at(fun->getName());</div>
|
|
651
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
652
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
653
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  {</div>
|
|
654
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  AbstractValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(arg.second))] - IntervalValue(1);</div>
|
|
655
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
656
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div>
|
|
657
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div>
|
|
658
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// 2. memset functions like memset, memset_chk, annotate("MEMSET"), annotate("BUF_CHECK:Arg0, Arg2")</span></div>
|
|
659
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>)</div>
|
|
660
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div>
|
|
661
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
662
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div>
|
|
663
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
664
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"Warning: "</span> << fun->getName() << <span class="stringliteral">" is not in the rules, please implement it\n"</span>;</div>
|
|
665
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span>;</div>
|
|
666
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div>
|
|
667
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  std::vector<std::pair<u32_t, u32_t>> args = <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.at(fun->getName());</div>
|
|
668
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
669
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
670
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div>
|
|
671
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  AbstractValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(arg.second))] - IntervalValue(1);</div>
|
|
672
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(arg.first), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, call);</div>
|
|
673
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div>
|
|
678
674
|
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div>
|
|
679
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="
|
|
675
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>)</div>
|
|
680
676
|
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div>
|
|
681
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#
|
|
677
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad8b2f2fa6f22b9d1655135c819cbad8a">detectStrcpy</a>(call);</div>
|
|
682
678
|
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div>
|
|
683
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">else</span
|
|
679
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>)</div>
|
|
684
680
|
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div>
|
|
685
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  </div>
|
|
681
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#aa68f8aef09481d7c07dc59d7dfb83822">detectStrcat</a>(call);</div>
|
|
686
682
|
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
|
|
687
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">
|
|
688
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
683
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span></div>
|
|
684
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div>
|
|
685
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  </div>
|
|
686
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div>
|
|
687
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span>;</div>
|
|
688
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> }</div>
|
|
689
689
|
</div><!-- fragment -->
|
|
690
690
|
</div>
|
|
691
691
|
</div>
|
|
@@ -720,7 +720,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
720
720
|
</dd>
|
|
721
721
|
</dl>
|
|
722
722
|
|
|
723
|
-
<p>Reimplemented from <a class="el" href="
|
|
723
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AbstractInterpretation.html#a9b179466955023f275b6692b59048846">SVF::AbstractInterpretation</a>.</p>
|
|
724
724
|
|
|
725
725
|
</div>
|
|
726
726
|
</div>
|
|
@@ -755,21 +755,22 @@ Additional Inherited Members</h2></td></tr>
|
|
|
755
755
|
</dd>
|
|
756
756
|
</dl>
|
|
757
757
|
|
|
758
|
-
<p>Reimplemented from <a class="el" href="
|
|
758
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">SVF::AbstractInterpretation</a>.</p>
|
|
759
759
|
|
|
760
760
|
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00062">62</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
761
761
|
<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div>
|
|
762
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="
|
|
762
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">AbstractInterpretation::handleSVFStatement</a>(stmt);</div>
|
|
763
763
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// for gep stmt, add the gep stmt to the addrToGep map</span></div>
|
|
764
764
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> GepStmt *gep = SVFUtil::dyn_cast<GepStmt>(stmt))</div>
|
|
765
765
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div>
|
|
766
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addrID
|
|
767
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
768
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
769
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="
|
|
770
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
|
|
771
|
-
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> 
|
|
772
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div>
|
|
766
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addrID:</div>
|
|
767
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(gep->getLHSVarID()).<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
|
|
768
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div>
|
|
769
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addrID);</div>
|
|
770
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#a0088456e712c555cbfba6203aec38037">_addrToGep</a>[objId] = gep;</div>
|
|
771
|
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div>
|
|
772
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div>
|
|
773
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div>
|
|
773
774
|
</div><!-- fragment -->
|
|
774
775
|
</div>
|
|
775
776
|
</div>
|
|
@@ -798,51 +799,51 @@ Additional Inherited Members</h2></td></tr>
|
|
|
798
799
|
<p>the map of ext apis of buffer overflow checking rules</p>
|
|
799
800
|
<p>it initialize the rules of extapis about buffer overflow checking e.g. memcpy(dst, src, sz) -> we check allocSize(dst)>=sz and allocSize(src)>=sz </p>
|
|
800
801
|
|
|
801
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
802
|
-
<div class="fragment"><div class="line"><a name="
|
|
803
|
-
<div class="line"><a name="
|
|
804
|
-
<div class="line"><a name="
|
|
805
|
-
<div class="line"><a name="
|
|
806
|
-
<div class="line"><a name="
|
|
807
|
-
<div class="line"><a name="
|
|
808
|
-
<div class="line"><a name="
|
|
809
|
-
<div class="line"><a name="
|
|
810
|
-
<div class="line"><a name="
|
|
811
|
-
<div class="line"><a name="
|
|
812
|
-
<div class="line"><a name="
|
|
813
|
-
<div class="line"><a name="
|
|
814
|
-
<div class="line"><a name="
|
|
815
|
-
<div class="line"><a name="
|
|
816
|
-
<div class="line"><a name="
|
|
817
|
-
<div class="line"><a name="
|
|
818
|
-
<div class="line"><a name="
|
|
819
|
-
<div class="line"><a name="
|
|
820
|
-
<div class="line"><a name="
|
|
821
|
-
<div class="line"><a name="
|
|
822
|
-
<div class="line"><a name="
|
|
823
|
-
<div class="line"><a name="
|
|
824
|
-
<div class="line"><a name="
|
|
825
|
-
<div class="line"><a name="
|
|
826
|
-
<div class="line"><a name="
|
|
827
|
-
<div class="line"><a name="
|
|
828
|
-
<div class="line"><a name="
|
|
829
|
-
<div class="line"><a name="
|
|
830
|
-
<div class="line"><a name="
|
|
831
|
-
<div class="line"><a name="
|
|
832
|
-
<div class="line"><a name="
|
|
833
|
-
<div class="line"><a name="
|
|
834
|
-
<div class="line"><a name="
|
|
835
|
-
<div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
840
|
-
<div class="line"><a name="
|
|
841
|
-
<div class="line"><a name="
|
|
842
|
-
<div class="line"><a name="
|
|
843
|
-
<div class="line"><a name="
|
|
844
|
-
<div class="line"><a name="
|
|
845
|
-
<div class="line"><a name="
|
|
802
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00077">77</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
803
|
+
<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div>
|
|
804
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">//void llvm_memcpy_p0i8_p0i8_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
805
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0i8_p0i8_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
806
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">//void llvm_memcpy_p0_p0_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
807
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0_p0_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
808
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">//void llvm_memcpy_p0i8_p0i8_i32(char* dst, char* src, int sz, int flag){}</span></div>
|
|
809
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy_p0i8_p0i8_i32"</span>] = {{0, 2}, {1,2}};</div>
|
|
810
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">//void llvm_memcpy(char* dst, char* src, int sz, int flag){}</span></div>
|
|
811
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memcpy"</span>] = {{0, 2}, {1,2}};</div>
|
|
812
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//void llvm_memmove(char* dst, char* src, int sz, int flag){}</span></div>
|
|
813
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove"</span>] = {{0, 2}, {1,2}};</div>
|
|
814
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">//void llvm_memmove_p0i8_p0i8_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
815
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0i8_p0i8_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
816
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">//void llvm_memmove_p0_p0_i64(char* dst, char* src, int sz, int flag){}</span></div>
|
|
817
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0_p0_i64"</span>] = {{0, 2}, {1,2}};</div>
|
|
818
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">//void llvm_memmove_p0i8_p0i8_i32(char* dst, char* src, int sz, int flag){}</span></div>
|
|
819
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memmove_p0i8_p0i8_i32"</span>] = {{0, 2}, {1,2}};</div>
|
|
820
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">//void __memcpy_chk(char* dst, char* src, int sz, int flag){}</span></div>
|
|
821
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memcpy_chk"</span>] = {{0, 2}, {1,2}};</div>
|
|
822
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">//void *memmove(void *str1, const void *str2, unsigned long n)</span></div>
|
|
823
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"memmove"</span>] = {{0, 2}, {1,2}};</div>
|
|
824
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">//void bcopy(const void *s1, void *s2, unsigned long n){}</span></div>
|
|
825
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"bcopy"</span>] = {{0, 2}, {1,2}};</div>
|
|
826
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">//void *memccpy( void * restrict dest, const void * restrict src, int c, unsigned long count)</span></div>
|
|
827
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"memccpy"</span>] = {{0, 3}, {1,3}};</div>
|
|
828
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">//void __memmove_chk(char* dst, char* src, int sz){}</span></div>
|
|
829
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memmove_chk"</span>] = {{0, 2}, {1,2}};</div>
|
|
830
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">//void llvm_memset(char* dst, char elem, int sz, int flag){}</span></div>
|
|
831
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset"</span>] = {{0, 2}};</div>
|
|
832
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">//void llvm_memset_p0i8_i32(char* dst, char elem, int sz, int flag){}</span></div>
|
|
833
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0i8_i32"</span>] = {{0, 2}};</div>
|
|
834
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">//void llvm_memset_p0i8_i64(char* dst, char elem, int sz, int flag){}</span></div>
|
|
835
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0i8_i64"</span>] = {{0, 2}};</div>
|
|
836
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">//void llvm_memset_p0_i64(char* dst, char elem, int sz, int flag){}</span></div>
|
|
837
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"llvm_memset_p0_i64"</span>] = {{0, 2}};</div>
|
|
838
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">//char *__memset_chk(char * dest, int c, unsigned long destlen, int flag)</span></div>
|
|
839
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"__memset_chk"</span>] = {{0, 2}};</div>
|
|
840
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">//char *wmemset(wchar_t * dst, wchar_t elem, int sz, int flag) {</span></div>
|
|
841
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"wmemset"</span>] = {{0, 2}};</div>
|
|
842
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">//char *strncpy(char *dest, const char *src, unsigned long n)</span></div>
|
|
843
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"strncpy"</span>] = {{0, 2}, {1,2}};</div>
|
|
844
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">//unsigned long iconv(void* cd, char **restrict inbuf, unsigned long *restrict inbytesleft, char **restrict outbuf, unsigned long *restrict outbytesleft)</span></div>
|
|
845
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>[<span class="stringliteral">"iconv"</span>] = {{1, 2}, {3, 4}};</div>
|
|
846
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div>
|
|
846
847
|
</div><!-- fragment -->
|
|
847
848
|
</div>
|
|
848
849
|
</div>
|
|
@@ -871,246 +872,249 @@ Additional Inherited Members</h2></td></tr>
|
|
|
871
872
|
<p>the map of external function to its API type</p>
|
|
872
873
|
<p>it initialize the ext apis about buffer overflow checking </p>
|
|
873
874
|
|
|
874
|
-
<p>Reimplemented from <a class="el" href="
|
|
875
|
+
<p>Reimplemented from <a class="el" href="classSVF_1_1AbstractInterpretation.html#ab18fe64117c1692d94ce0e0ee44e940b">SVF::AbstractInterpretation</a>.</p>
|
|
875
876
|
|
|
876
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
877
|
-
<div class="fragment"><div class="line"><a name="
|
|
878
|
-
<div class="line"><a name="
|
|
879
|
-
<div class="line"><a name="
|
|
880
|
-
<div class="line"><a name="
|
|
881
|
-
<div class="line"><a name="
|
|
882
|
-
<div class="line"><a name="
|
|
883
|
-
<div class="line"><a name="
|
|
884
|
-
<div class="line"><a name="
|
|
885
|
-
<div class="line"><a name="
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="
|
|
888
|
-
<div class="line"><a name="
|
|
889
|
-
<div class="line"><a name="
|
|
890
|
-
<div class="line"><a name="
|
|
891
|
-
<div class="line"><a name="
|
|
892
|
-
<div class="line"><a name="
|
|
893
|
-
<div class="line"><a name="
|
|
894
|
-
<div class="line"><a name="
|
|
895
|
-
<div class="line"><a name="
|
|
896
|
-
<div class="line"><a name="
|
|
897
|
-
<div class="line"><a name="
|
|
898
|
-
<div class="line"><a name="
|
|
899
|
-
<div class="line"><a name="
|
|
900
|
-
<div class="line"><a name="
|
|
901
|
-
<div class="line"><a name="
|
|
902
|
-
<div class="line"><a name="
|
|
903
|
-
<div class="line"><a name="
|
|
904
|
-
<div class="line"><a name="
|
|
905
|
-
<div class="line"><a name="
|
|
906
|
-
<div class="line"><a name="
|
|
907
|
-
<div class="line"><a name="
|
|
908
|
-
<div class="line"><a name="
|
|
909
|
-
<div class="line"><a name="
|
|
910
|
-
<div class="line"><a name="
|
|
911
|
-
<div class="line"><a name="
|
|
912
|
-
<div class="line"><a name="
|
|
913
|
-
<div class="line"><a name="
|
|
914
|
-
<div class="line"><a name="
|
|
915
|
-
<div class="line"><a name="
|
|
916
|
-
<div class="line"><a name="
|
|
917
|
-
<div class="line"><a name="
|
|
918
|
-
<div class="line"><a name="
|
|
919
|
-
<div class="line"><a name="
|
|
920
|
-
<div class="line"><a name="
|
|
921
|
-
<div class="line"><a name="
|
|
922
|
-
<div class="line"><a name="
|
|
923
|
-
<div class="line"><a name="
|
|
924
|
-
<div class="line"><a name="
|
|
925
|
-
<div class="line"><a name="
|
|
926
|
-
<div class="line"><a name="
|
|
927
|
-
<div class="line"><a name="
|
|
928
|
-
<div class="line"><a name="
|
|
929
|
-
<div class="line"><a name="
|
|
930
|
-
<div class="line"><a name="
|
|
931
|
-
<div class="line"><a name="
|
|
932
|
-
<div class="line"><a name="
|
|
933
|
-
<div class="line"><a name="
|
|
934
|
-
<div class="line"><a name="
|
|
935
|
-
<div class="line"><a name="
|
|
936
|
-
<div class="line"><a name="
|
|
937
|
-
<div class="line"><a name="
|
|
938
|
-
<div class="line"><a name="
|
|
939
|
-
<div class="line"><a name="
|
|
940
|
-
<div class="line"><a name="
|
|
941
|
-
<div class="line"><a name="
|
|
942
|
-
<div class="line"><a name="
|
|
943
|
-
<div class="line"><a name="
|
|
944
|
-
<div class="line"><a name="
|
|
945
|
-
<div class="line"><a name="
|
|
946
|
-
<div class="line"><a name="
|
|
947
|
-
<div class="line"><a name="
|
|
948
|
-
<div class="line"><a name="
|
|
949
|
-
<div class="line"><a name="
|
|
950
|
-
<div class="line"><a name="
|
|
951
|
-
<div class="line"><a name="
|
|
952
|
-
<div class="line"><a name="
|
|
953
|
-
<div class="line"><a name="
|
|
954
|
-
<div class="line"><a name="
|
|
955
|
-
<div class="line"><a name="
|
|
956
|
-
<div class="line"><a name="
|
|
957
|
-
<div class="line"><a name="
|
|
958
|
-
<div class="line"><a name="
|
|
959
|
-
<div class="line"><a name="
|
|
960
|
-
<div class="line"><a name="
|
|
961
|
-
<div class="line"><a name="
|
|
962
|
-
<div class="line"><a name="
|
|
963
|
-
<div class="line"><a name="
|
|
964
|
-
<div class="line"><a name="
|
|
965
|
-
<div class="line"><a name="
|
|
966
|
-
<div class="line"><a name="
|
|
967
|
-
<div class="line"><a name="
|
|
968
|
-
<div class="line"><a name="
|
|
969
|
-
<div class="line"><a name="
|
|
970
|
-
<div class="line"><a name="
|
|
971
|
-
<div class="line"><a name="
|
|
972
|
-
<div class="line"><a name="
|
|
973
|
-
<div class="line"><a name="
|
|
974
|
-
<div class="line"><a name="
|
|
975
|
-
<div class="line"><a name="
|
|
976
|
-
<div class="line"><a name="
|
|
977
|
-
<div class="line"><a name="
|
|
978
|
-
<div class="line"><a name="
|
|
979
|
-
<div class="line"><a name="
|
|
980
|
-
<div class="line"><a name="
|
|
981
|
-
<div class="line"><a name="
|
|
982
|
-
<div class="line"><a name="
|
|
983
|
-
<div class="line"><a name="
|
|
984
|
-
<div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="
|
|
986
|
-
<div class="line"><a name="
|
|
987
|
-
<div class="line"><a name="
|
|
988
|
-
<div class="line"><a name="
|
|
989
|
-
<div class="line"><a name="
|
|
990
|
-
<div class="line"><a name="
|
|
991
|
-
<div class="line"><a name="
|
|
992
|
-
<div class="line"><a name="
|
|
993
|
-
<div class="line"><a name="
|
|
994
|
-
<div class="line"><a name="
|
|
995
|
-
<div class="line"><a name="
|
|
996
|
-
<div class="line"><a name="
|
|
997
|
-
<div class="line"><a name="
|
|
998
|
-
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div>
|
|
877
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00134">134</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
878
|
+
<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div>
|
|
879
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
|
|
880
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">auto</span> sse_scanf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
881
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div>
|
|
882
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">//scanf("%d", &data);</span></div>
|
|
883
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
884
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
885
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
886
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dst_id))</div>
|
|
887
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div>
|
|
888
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  BufOverflowException bug(<span class="stringliteral">"scanf may cause buffer overflow.\n"</span>, 0, 0, 0, 0, cs.getArgument(1));</div>
|
|
889
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
890
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span>;</div>
|
|
891
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
|
|
892
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span></div>
|
|
893
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div>
|
|
894
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(dst_id);</div>
|
|
895
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs.getAddrs())</div>
|
|
896
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div>
|
|
897
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
|
|
898
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">getRangeLimitFromType</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(objId)-><a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>());</div>
|
|
899
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  es.store(vaddr, range);</div>
|
|
900
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div>
|
|
901
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div>
|
|
902
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  };</div>
|
|
903
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">auto</span> sse_fscanf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
904
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div>
|
|
905
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//fscanf(stdin, "%d", &data);</span></div>
|
|
906
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
907
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
908
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
909
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dst_id))</div>
|
|
910
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div>
|
|
911
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  BufOverflowException bug(<span class="stringliteral">"scanf may cause buffer overflow.\n"</span>, 0, 0, 0, 0, cs.getArgument(2));</div>
|
|
912
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
913
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span>;</div>
|
|
914
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div>
|
|
915
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">else</span></div>
|
|
916
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div>
|
|
917
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(dst_id);</div>
|
|
918
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs.getAddrs())</div>
|
|
919
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div>
|
|
920
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
|
|
921
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">getRangeLimitFromType</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(objId)-><a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>());</div>
|
|
922
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  es.store(vaddr, range);</div>
|
|
923
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div>
|
|
924
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div>
|
|
925
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  };</div>
|
|
926
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div>
|
|
927
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__isoc99_fscanf"</span>] = sse_fscanf;</div>
|
|
928
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__isoc99_scanf"</span>] = sse_scanf;</div>
|
|
929
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__isoc99_vscanf"</span>] = sse_scanf;</div>
|
|
930
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"fscanf"</span>] = sse_fscanf;</div>
|
|
931
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"scanf"</span>] = sse_scanf;</div>
|
|
932
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"sscanf"</span>] = sse_scanf;</div>
|
|
933
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__isoc99_sscanf"</span>] = sse_scanf;</div>
|
|
934
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"vscanf"</span>] = sse_scanf;</div>
|
|
935
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div>
|
|
936
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">auto</span> sse_fread = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
937
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div>
|
|
938
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
939
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
940
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> block_count_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
941
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> block_size_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
942
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  AbstractValue block_count = es[block_count_id];</div>
|
|
943
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  AbstractValue block_size = es[block_size_id];</div>
|
|
944
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  AbstractValue block_byte = block_count * block_size;</div>
|
|
945
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(0), block_byte, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
946
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  };</div>
|
|
947
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"fread"</span>] = sse_fread;</div>
|
|
948
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div>
|
|
949
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">auto</span> sse_sprintf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
950
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div>
|
|
951
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// printf is difficult to predict since it has no byte size arguments</span></div>
|
|
952
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  };</div>
|
|
953
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div>
|
|
954
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">auto</span> sse_snprintf = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
955
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div>
|
|
956
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
957
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
958
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
959
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
|
|
960
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// get elem size of arg2</span></div>
|
|
961
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
|
|
962
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (cs.getArgument(2)->getType()->isArrayTy())</div>
|
|
963
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div>
|
|
964
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  elemSize = SVFUtil::dyn_cast<SVFArrayType>(cs.getArgument(2)->getType())->getTypeOfElement()->getByteSize();</div>
|
|
965
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div>
|
|
966
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cs.getArgument(2)->getType()->isPointerTy())</div>
|
|
967
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div>
|
|
968
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  elemSize = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2)))-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
969
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div>
|
|
970
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">else</span></div>
|
|
971
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div>
|
|
972
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span>;</div>
|
|
973
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// assert(false && "we cannot support this type");</span></div>
|
|
974
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div>
|
|
975
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  AbstractValue size = es[size_id] * IntervalValue(elemSize) - IntervalValue(1);</div>
|
|
976
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (!es.inVarToAddrsTable(dst_id))</div>
|
|
977
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div>
|
|
978
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#afbe432aabda95308e2c190a04d227a6d">Options::BufferOverflowCheck</a>())</div>
|
|
979
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div>
|
|
980
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  BufOverflowException bug(</div>
|
|
981
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="stringliteral">"snprintf dst_id or dst is not defined nor initializesd.\n"</span>,</div>
|
|
982
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  0, 0, 0, 0, cs.getArgument(0));</div>
|
|
983
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#a7c11b81809cb087317cbea654a589f75">addBugToRecoder</a>(bug, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
984
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span>;</div>
|
|
985
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div>
|
|
986
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div>
|
|
987
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(0), size, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
988
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  };</div>
|
|
989
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__snprintf_chk"</span>] = sse_snprintf;</div>
|
|
990
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__vsprintf_chk"</span>] = sse_sprintf;</div>
|
|
991
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__sprintf_chk"</span>] = sse_sprintf;</div>
|
|
992
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"snprintf"</span>] = sse_snprintf;</div>
|
|
993
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"sprintf"</span>] = sse_sprintf;</div>
|
|
994
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"vsprintf"</span>] = sse_sprintf;</div>
|
|
995
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"vsnprintf"</span>] = sse_snprintf;</div>
|
|
996
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__vsnprintf_chk"</span>] = sse_snprintf;</div>
|
|
997
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"swprintf"</span>] = sse_snprintf;</div>
|
|
998
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"_snwprintf"</span>] = sse_snprintf;</div>
|
|
999
999
|
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  </div>
|
|
1000
|
-
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> 
|
|
1001
|
-
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> 
|
|
1002
|
-
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> 
|
|
1003
|
-
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// num
|
|
1004
|
-
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="
|
|
1005
|
-
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> 
|
|
1006
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> 
|
|
1007
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
|
|
1008
|
-
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> 
|
|
1009
|
-
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="
|
|
1010
|
-
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="
|
|
1011
|
-
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> 
|
|
1012
|
-
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> 
|
|
1013
|
-
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  </div>
|
|
1000
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div>
|
|
1001
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">auto</span> sse_itoa = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
1002
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div>
|
|
1003
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// itoa(num, ch, 10);</span></div>
|
|
1004
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// num: int, ch: char*, 10 is decimal</span></div>
|
|
1005
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (cs.arg_size() < 3) <span class="keywordflow">return</span>;</div>
|
|
1006
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
1007
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
|
|
1008
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  </div>
|
|
1009
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) es[num_id].getInterval().getNumeral();</div>
|
|
1010
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> snum = std::to_string(num);</div>
|
|
1011
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(1), AbstractValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)snum.size()), <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
1012
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  };</div>
|
|
1013
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"itoa"</span>] = sse_itoa;</div>
|
|
1014
1014
|
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div>
|
|
1015
|
-
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> 
|
|
1016
|
-
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> 
|
|
1017
|
-
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> 
|
|
1018
|
-
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="
|
|
1019
|
-
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="
|
|
1020
|
-
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> 
|
|
1021
|
-
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> 
|
|
1022
|
-
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="
|
|
1023
|
-
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <
|
|
1024
|
-
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> 
|
|
1025
|
-
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> 
|
|
1026
|
-
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> 
|
|
1027
|
-
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> 
|
|
1028
|
-
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> 
|
|
1029
|
-
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> 
|
|
1030
|
-
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> 
|
|
1031
|
-
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> 
|
|
1032
|
-
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> 
|
|
1033
|
-
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> 
|
|
1034
|
-
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> 
|
|
1035
|
-
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> 
|
|
1036
|
-
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> 
|
|
1037
|
-
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> 
|
|
1038
|
-
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> 
|
|
1039
|
-
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> 
|
|
1040
|
-
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> 
|
|
1041
|
-
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> 
|
|
1042
|
-
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> 
|
|
1043
|
-
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> 
|
|
1044
|
-
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <
|
|
1045
|
-
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  es
|
|
1046
|
-
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="
|
|
1047
|
-
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> 
|
|
1048
|
-
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> 
|
|
1049
|
-
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> 
|
|
1050
|
-
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> 
|
|
1051
|
-
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> 
|
|
1052
|
-
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> 
|
|
1053
|
-
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> 
|
|
1054
|
-
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> 
|
|
1055
|
-
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> 
|
|
1056
|
-
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> 
|
|
1057
|
-
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="
|
|
1058
|
-
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> 
|
|
1059
|
-
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (
|
|
1060
|
-
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> 
|
|
1061
|
-
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> 
|
|
1062
|
-
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> 
|
|
1063
|
-
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> 
|
|
1064
|
-
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> 
|
|
1065
|
-
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> 
|
|
1066
|
-
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> 
|
|
1067
|
-
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> 
|
|
1068
|
-
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> 
|
|
1069
|
-
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> 
|
|
1070
|
-
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> 
|
|
1071
|
-
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> 
|
|
1072
|
-
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <
|
|
1073
|
-
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> 
|
|
1074
|
-
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> 
|
|
1075
|
-
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> 
|
|
1076
|
-
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> 
|
|
1077
|
-
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> 
|
|
1078
|
-
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> 
|
|
1079
|
-
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  </div>
|
|
1080
|
-
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> 
|
|
1081
|
-
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> 
|
|
1082
|
-
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> 
|
|
1083
|
-
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> 
|
|
1084
|
-
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> 
|
|
1085
|
-
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> 
|
|
1086
|
-
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> 
|
|
1087
|
-
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="
|
|
1088
|
-
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> 
|
|
1089
|
-
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (
|
|
1090
|
-
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> 
|
|
1091
|
-
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> 
|
|
1092
|
-
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> 
|
|
1093
|
-
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="
|
|
1094
|
-
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> 
|
|
1095
|
-
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> 
|
|
1096
|
-
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> 
|
|
1097
|
-
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> 
|
|
1098
|
-
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> 
|
|
1099
|
-
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> 
|
|
1100
|
-
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> 
|
|
1101
|
-
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="
|
|
1102
|
-
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> 
|
|
1103
|
-
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> 
|
|
1104
|
-
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> 
|
|
1105
|
-
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> 
|
|
1106
|
-
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> 
|
|
1107
|
-
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> 
|
|
1108
|
-
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> 
|
|
1109
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div>
|
|
1110
|
-
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> 
|
|
1111
|
-
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> 
|
|
1112
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="
|
|
1113
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
1015
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
|
|
1016
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">auto</span> sse_strlen = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
1017
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div>
|
|
1018
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// check the arg size</span></div>
|
|
1019
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (cs.arg_size() < 1) <span class="keywordflow">return</span>;</div>
|
|
1020
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> SVFValue* strValue = cs.getArgument(0);</div>
|
|
1021
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
1022
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  AbstractValue dst_size = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(strValue);</div>
|
|
1023
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
|
|
1024
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (strValue->getType()->isArrayTy())</div>
|
|
1025
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div>
|
|
1026
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  elemSize = SVFUtil::dyn_cast<SVFArrayType>(strValue->getType())->getTypeOfElement()->getByteSize();</div>
|
|
1027
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div>
|
|
1028
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue->getType()->isPointerTy())</div>
|
|
1029
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div>
|
|
1030
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> SVFType* pointee = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue)))</div>
|
|
1031
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  elemSize = pointee->getByteSize();</div>
|
|
1032
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">else</span></div>
|
|
1033
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  elemSize = 1;</div>
|
|
1034
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div>
|
|
1035
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getInstruction());</div>
|
|
1036
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  es[lhsId] = dst_size / IntervalValue(elemSize);</div>
|
|
1037
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  };</div>
|
|
1038
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"strlen"</span>] = sse_strlen;</div>
|
|
1039
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"wcslen"</span>] = sse_strlen;</div>
|
|
1040
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  </div>
|
|
1041
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">auto</span> sse_recv = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
1042
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div>
|
|
1043
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// recv(sockfd, buf, len, flags);</span></div>
|
|
1044
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (cs.arg_size() < 4) <span class="keywordflow">return</span>;</div>
|
|
1045
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
1046
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(2));</div>
|
|
1047
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  AbstractValue len = es[len_id] - IntervalValue(1);</div>
|
|
1048
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getInstruction());</div>
|
|
1049
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  es[lhsId] = len;</div>
|
|
1050
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(1), len, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));;</div>
|
|
1051
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  };</div>
|
|
1052
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"recv"</span>] = sse_recv;</div>
|
|
1053
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"__recv"</span>] = sse_recv;</div>
|
|
1054
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">auto</span> safe_bufaccess = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
1055
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div>
|
|
1056
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">const</span> CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
1057
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.erase(callNode);</div>
|
|
1058
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">//void SAFE_BUFACCESS(void* data, int size);</span></div>
|
|
1059
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
1060
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
1061
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
1062
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  AbstractValue val = es[size_id];</div>
|
|
1063
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
1064
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  {</div>
|
|
1065
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  val = IntervalValue(0);</div>
|
|
1066
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"SAFE_BUFACCESS size is bottom"</span>);</div>
|
|
1067
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div>
|
|
1068
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordtype">bool</span> isSafe = <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(0), val, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
1069
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (isSafe)</div>
|
|
1070
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div>
|
|
1071
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  std::cout << <span class="stringliteral">"safe buffer access success\n"</span>;</div>
|
|
1072
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span>;</div>
|
|
1073
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div>
|
|
1074
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span></div>
|
|
1075
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div>
|
|
1076
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> err_msg = <span class="stringliteral">"this SAFE_BUFACCESS should be a safe access but detected buffer overflow. Pos: "</span>;</div>
|
|
1077
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  err_msg += cs.getInstruction()->getSourceLoc();</div>
|
|
1078
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  std::cerr << err_msg << std::endl;</div>
|
|
1079
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  assert(<span class="keyword">false</span>);</div>
|
|
1080
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div>
|
|
1081
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  };</div>
|
|
1082
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"SAFE_BUFACCESS"</span>] = safe_bufaccess;</div>
|
|
1083
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  </div>
|
|
1084
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> unsafe_bufaccess = [&](<span class="keyword">const</span> CallSite &cs)</div>
|
|
1085
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div>
|
|
1086
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">const</span> CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
1087
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.erase(callNode);</div>
|
|
1088
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">//void UNSAFE_BUFACCESS(void* data, int size);</span></div>
|
|
1089
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (cs.arg_size() < 2) <span class="keywordflow">return</span>;</div>
|
|
1090
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  SparseAbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a>();</div>
|
|
1091
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(1));</div>
|
|
1092
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  AbstractValue val = es[size_id];</div>
|
|
1093
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
1094
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div>
|
|
1095
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"UNSAFE_BUFACCESS size is bottom"</span>);</div>
|
|
1096
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div>
|
|
1097
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">bool</span> isSafe = <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(cs.getArgument(0), val, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
|
|
1098
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (!isSafe)</div>
|
|
1099
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div>
|
|
1100
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  std::cout << <span class="stringliteral">"detect buffer overflow success\n"</span>;</div>
|
|
1101
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span>;</div>
|
|
1102
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
|
|
1103
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">else</span></div>
|
|
1104
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div>
|
|
1105
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="comment">// if it is safe, it means it is wrongly labeled, assert false.</span></div>
|
|
1106
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> err_msg = <span class="stringliteral">"this UNSAFE_BUFACCESS should be a buffer overflow but not detected. Pos: "</span>;</div>
|
|
1107
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  err_msg += cs.getInstruction()->getSourceLoc();</div>
|
|
1108
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  std::cerr << err_msg << std::endl;</div>
|
|
1109
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  assert(<span class="keyword">false</span>);</div>
|
|
1110
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div>
|
|
1111
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  };</div>
|
|
1112
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">"UNSAFE_BUFACCESS"</span>] = unsafe_bufaccess;</div>
|
|
1113
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  </div>
|
|
1114
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// init _checkpoint_names</span></div>
|
|
1115
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.insert(<span class="stringliteral">"SAFE_BUFACCESS"</span>);</div>
|
|
1116
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.insert(<span class="stringliteral">"UNSAFE_BUFACCESS"</span>);</div>
|
|
1117
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div>
|
|
1114
1118
|
</div><!-- fragment -->
|
|
1115
1119
|
</div>
|
|
1116
1120
|
</div>
|
|
@@ -1169,53 +1173,53 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1169
1173
|
</ul>
|
|
1170
1174
|
</div><!-- contents -->
|
|
1171
1175
|
<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>
|
|
1172
|
-
<div class="ttc" id="
|
|
1173
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ad36d48c0ef82de915d9339c4f47cbd70"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ad36d48c0ef82de915d9339c4f47cbd70">SVF::AbstractExecution::_kind</a></div><div class="ttdeci">AEKind _kind</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00349">AbstractExecution.h:349</a></div></div>
|
|
1174
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a99be86146ad4ddbdb900cdb6b324f943"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a99be86146ad4ddbdb900cdb6b324f943">SVF::AbstractExecution::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#l01495">AbstractExecution.cpp:1495</a></div></div>
|
|
1176
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a62baa9403069a9b1e010eaeb2f6b9b34"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">SVF::SVFIR2AbsState::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="SVFIR2AbsState_8h_source.html#l00129">SVFIR2AbsState.h:129</a></div></div>
|
|
1175
1177
|
<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>
|
|
1176
|
-
<div class="ttc" id="
|
|
1178
|
+
<div class="ttc" id="astructSVF_1_1AbstractValue_html_ab1fe6a57f784971b3bc603dbfda746e8"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">SVF::AbstractValue::getAddrs</a></div><div class="ttdeci">AddressValue & getAddrs()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00171">AbstractValue.h:171</a></div></div>
|
|
1179
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_ad68fa02efad8b628e4542dc9ab6c58bf"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">SVF::BufOverflowChecker::canSafelyAccessMemory</a></div><div class="ttdeci">bool canSafelyAccessMemory(const SVFValue *value, const AbstractValue &len, const ICFGNode *curNode)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00489">BufOverflowChecker.cpp:489</a></div></div>
|
|
1177
1180
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00137">IRGraph.h:137</a></div></div>
|
|
1178
|
-
<div class="ttc" id="
|
|
1181
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a5bba3c0570d73acc743742a30af1b0b4"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">SVF::AbstractInterpretation::getStrlen</a></div><div class="ttdeci">AbstractValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01498">AbstractInterpretation.cpp:1498</a></div></div>
|
|
1179
1182
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
1180
|
-
<div class="ttc" id="
|
|
1181
|
-
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_ad8b2f2fa6f22b9d1655135c819cbad8a"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#ad8b2f2fa6f22b9d1655135c819cbad8a">SVF::BufOverflowChecker::detectStrcpy</a></div><div class="ttdeci">bool detectStrcpy(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#
|
|
1183
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a5d3b15c3cdb9c8e91b942924bf8aee21"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a5d3b15c3cdb9c8e91b942924bf8aee21">SVF::AbstractInterpretation::_kind</a></div><div class="ttdeci">AEKind _kind</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00350">AbstractInterpretation.h:350</a></div></div>
|
|
1184
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_ad8b2f2fa6f22b9d1655135c819cbad8a"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#ad8b2f2fa6f22b9d1655135c819cbad8a">SVF::BufOverflowChecker::detectStrcpy</a></div><div class="ttdeci">bool detectStrcpy(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00124">BufOverflowChecker.cpp:124</a></div></div>
|
|
1185
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_af78f068a373ebb6a2f14dcde980a9dae"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">SVF::AbstractInterpretation::_svfir2ExeState</a></div><div class="ttdeci">SVFIR2AbsState * _svfir2ExeState</div><div class="ttdoc">Execution State, used to store the Interval Value of every SVF variable.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00345">AbstractInterpretation.h:345</a></div></div>
|
|
1186
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">SVF::AbstractInterpretation::UNCLASSIFIED</a></div><div class="ttdeci">@ UNCLASSIFIED</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1182
1187
|
<div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">SVF::AEKind::BufOverflowChecker</a></div><div class="ttdeci">@ BufOverflowChecker</div></div>
|
|
1183
|
-
<div class="ttc" id="
|
|
1184
|
-
<div class="ttc" id="
|
|
1185
|
-
<div class="ttc" id="
|
|
1186
|
-
<div class="ttc" id="
|
|
1188
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">SVF::AbstractInterpretation::STRCPY</a></div><div class="ttdeci">@ STRCPY</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1189
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a4e032a5e0898f0e349927d5a86c8477c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">SVF::SVFIR2AbsState::getRangeLimitFromType</a></div><div class="ttdeci">AbstractValue 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="SVFIR2AbsState_8cpp_source.html#l00049">SVFIR2AbsState.cpp:49</a></div></div>
|
|
1190
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a618fc324a6c205d7e1b471bd850377a9"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">SVF::AbstractInterpretation::_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="AbstractInterpretation_8h_source.html#l00342">AbstractInterpretation.h:342</a></div></div>
|
|
1191
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2a1e1b72ed740cef4c3e57e3e32c3f75"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">SVF::AbstractInterpretation::_checkpoint_names</a></div><div class="ttdeci">Set< std::string > _checkpoint_names</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00385">AbstractInterpretation.h:385</a></div></div>
|
|
1192
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_aed959fce840cbea32d3567ee1ac01e82"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#aed959fce840cbea32d3567ee1ac01e82">SVF::BufOverflowChecker::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>
|
|
1193
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_aa68f8aef09481d7c07dc59d7dfb83822"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#aa68f8aef09481d7c07dc59d7dfb83822">SVF::BufOverflowChecker::detectStrcat</a></div><div class="ttdeci">bool detectStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00376">BufOverflowChecker.cpp:376</a></div></div>
|
|
1194
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a4080994b793d9510c00cb3a0260e0a61"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a4080994b793d9510c00cb3a0260e0a61">SVF::AbstractInterpretation::AbstractInterpretation</a></div><div class="ttdeci">AbstractInterpretation()</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00123">AbstractInterpretation.cpp:123</a></div></div>
|
|
1187
1195
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00241">SVFUtil.h:241</a></div></div>
|
|
1188
|
-
<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#l00866">AbstractExecution.cpp:866</a></div></div>
|
|
1189
|
-
<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#l00175">SVFIR2ItvExeState.h:175</a></div></div>
|
|
1190
1196
|
<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>
|
|
1191
|
-
<div class="ttc" id="
|
|
1197
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">SVF::AbstractInterpretation::MEMCPY</a></div><div class="ttdeci">@ MEMCPY</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1192
1198
|
<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>
|
|
1193
|
-
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_ace5ad1d6a63d5392044fee2ecbc9236e"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#ace5ad1d6a63d5392044fee2ecbc9236e">SVF::BufOverflowChecker::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#l00485">BufOverflowChecker.cpp:485</a></div></div>
|
|
1194
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a0a64bef0cc898059c50f6aec470cc6d9"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a0a64bef0cc898059c50f6aec470cc6d9">SVF::AbstractExecution::_checkpoints</a></div><div class="ttdeci">Set< const CallICFGNode * > _checkpoints</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00383">AbstractExecution.h:383</a></div></div>
|
|
1195
1199
|
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_af83b65ed98cd4e0f6cd92962e7392d4d"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">SVF::BufOverflowChecker::_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#l00202">BufOverflowChecker.h:202</a></div></div>
|
|
1196
|
-
<div class="ttc" id="
|
|
1200
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a6cac9b69d85111a5a26373ec848a3282"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">SVF::AbstractInterpretation::handleExtAPI</a></div><div class="ttdeci">virtual void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01217">AbstractInterpretation.cpp:1217</a></div></div>
|
|
1197
1201
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
|
|
1198
1202
|
<div class="ttc" id="aclassSVF_1_1Options_html_afbe432aabda95308e2c190a04d227a6d"><div class="ttname"><a href="classSVF_1_1Options.html#afbe432aabda95308e2c190a04d227a6d">SVF::Options::BufferOverflowCheck</a></div><div class="ttdeci">static const Option< bool > BufferOverflowCheck</div><div class="ttdoc">buffer overflow checker, Default: false</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00271">Options.h:271</a></div></div>
|
|
1199
1203
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
|
|
1200
1204
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00170">SVFIR.h:170</a></div></div>
|
|
1205
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616da"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">SVF::AbstractInterpretation::ExtAPIType</a></div><div class="ttdeci">ExtAPIType</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1206
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aa3e62b9ef912def502b95992199f5d8c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">SVF::SVFIR2AbsState::getAddrs</a></div><div class="ttdeci">AbstractValue & getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00113">SVFIR2AbsState.h:113</a></div></div>
|
|
1201
1207
|
<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>
|
|
1202
|
-
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_af0e2276001df7d51c45b22d5d11ca09b"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#af0e2276001df7d51c45b22d5d11ca09b">SVF::BufOverflowChecker::initExtFunMap</a></div><div class="ttdeci">virtual void initExtFunMap() override</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#
|
|
1203
|
-
<div class="ttc" id="
|
|
1204
|
-
<div class="ttc" id="
|
|
1205
|
-
<div class="ttc" id="
|
|
1206
|
-
<div class="ttc" id="
|
|
1207
|
-
<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>
|
|
1208
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a442fb8eda087f72aa61816213dea43afac9539311eec734c966b719990e869b12"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a442fb8eda087f72aa61816213dea43afac9539311eec734c966b719990e869b12">SVF::AbstractExecution::STRCPY</a></div><div class="ttdeci">@ STRCPY</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00114">AbstractExecution.h:114</a></div></div>
|
|
1209
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a442fb8eda087f72aa61816213dea43af"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a442fb8eda087f72aa61816213dea43af">SVF::AbstractExecution::ExtAPIType</a></div><div class="ttdeci">ExtAPIType</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00114">AbstractExecution.h:114</a></div></div>
|
|
1208
|
+
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_af0e2276001df7d51c45b22d5d11ca09b"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#af0e2276001df7d51c45b22d5d11ca09b">SVF::BufOverflowChecker::initExtFunMap</a></div><div class="ttdeci">virtual void initExtFunMap() override</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8cpp_source.html#l00134">BufOverflowChecker.cpp:134</a></div></div>
|
|
1209
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a260c4ccfd79a2b9dbd580fa2030ac238"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">SVF::SVFIR2AbsState::getEs</a></div><div class="ttdeci">SparseAbstractState & getEs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00054">SVFIR2AbsState.h:54</a></div></div>
|
|
1210
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a896d04a02951947bc228bf97b2c00313"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">SVF::AbstractInterpretation::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00872">AbstractInterpretation.cpp:872</a></div></div>
|
|
1211
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">SVF::AbstractInterpretation::STRCAT</a></div><div class="ttdeci">@ STRCAT</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1212
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">SVF::AbstractInterpretation::MEMSET</a></div><div class="ttdeci">@ MEMSET</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
|
|
1210
1213
|
<div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
1211
1214
|
<div class="ttc" id="aclassSVF_1_1SVFVar_html_ab6f95d3e7e099d75cfc9645ebc037047"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">SVF::SVFVar::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdoc">Return type of the value.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
|
|
1215
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2057e8e1c0aaf39e74f0a8fb2a1b580c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">SVF::AbstractInterpretation::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01649">AbstractInterpretation.cpp:1649</a></div></div>
|
|
1212
1216
|
<div class="ttc" id="aclassSVF_1_1BufOverflowChecker_html_a0088456e712c555cbfba6203aec38037"><div class="ttname"><a href="classSVF_1_1BufOverflowChecker.html#a0088456e712c555cbfba6203aec38037">SVF::BufOverflowChecker::_addrToGep</a></div><div class="ttdeci">Map< NodeID, const GepStmt * > _addrToGep</div><div class="ttdef"><b>Definition:</b> <a href="BufOverflowChecker_8h_source.html#l00201">BufOverflowChecker.h:201</a></div></div>
|
|
1213
|
-
<div class="ttc" id="
|
|
1217
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ac37760566b534d89a61d789b00efb993"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">SVF::SVFIR2AbsState::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="SVFIR2AbsState_8h_source.html#l00172">SVFIR2AbsState.h:172</a></div></div>
|
|
1218
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_aa27d0ef684deec1f5385fdb0d4c64827"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">SVF::AbstractInterpretation::_func_map</a></div><div class="ttdeci">Map< std::string, std::function< void(const CallSite &)> > _func_map</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00383">AbstractInterpretation.h:383</a></div></div>
|
|
1214
1219
|
<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>
|
|
1215
1220
|
<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>
|
|
1216
|
-
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ae002abb8711300ff52200f78f1463369"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ae002abb8711300ff52200f78f1463369">SVF::AbstractExecution::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#l01214">AbstractExecution.cpp:1214</a></div></div>
|
|
1217
|
-
<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#l00132">SVFIR2ItvExeState.h:132</a></div></div>
|
|
1218
1221
|
<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>
|
|
1222
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a219313e979d779221116c1bc45becc1b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">SVF::AbstractInterpretation::_checkpoints</a></div><div class="ttdeci">Set< const CallICFGNode * > _checkpoints</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00384">AbstractInterpretation.h:384</a></div></div>
|
|
1219
1223
|
<!-- start footer part -->
|
|
1220
1224
|
<hr class="footer"/><address class="footer"><small>
|
|
1221
1225
|
Generated by  <a href="http://www.doxygen.org/index.html">
|