svf-tools 1.0.910 → 1.0.911
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 +5 -5
- package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +1151 -1131
- package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +31 -31
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +457 -450
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +116 -114
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +1009 -991
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +118 -115
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +32 -32
- package/SVF-doxygen/html/functions.html +2 -2
- package/SVF-doxygen/html/functions_func_g.html +13 -13
- package/SVF-doxygen/html/functions_g.html +9 -9
- package/SVF-doxygen/html/functions_p.html +6 -6
- package/SVF-doxygen/html/functions_s.html +7 -7
- package/SVF-doxygen/html/functions_t.html +2 -2
- package/SVF-doxygen/html/functions_v.html +6 -6
- package/SVF-doxygen/html/functions_vars.html +2 -2
- package/SVF-doxygen/html/functions_w.html +9 -17
- package/SVF-doxygen/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/search/all_10.js +3 -3
- package/SVF-doxygen/html/search/all_12.js +5 -5
- package/SVF-doxygen/html/search/all_13.js +4 -4
- package/SVF-doxygen/html/search/all_15.js +3 -3
- package/SVF-doxygen/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/search/all_7.js +248 -248
- package/SVF-doxygen/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/search/functions_7.js +247 -247
- package/SVF-doxygen/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/search/variables_13.js +2 -2
- package/package.json +1 -1
- package/svf/include/AE/Svfexe/AbstractInterpretation.h +1 -1
- package/svf/include/AE/Svfexe/SVFIR2AbsState.h +1 -1
- package/svf/lib/AE/Svfexe/AbstractInterpretation.cpp +88 -68
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +37 -30
|
@@ -233,9 +233,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
233
233
|
<tr class="separator:a618fc324a6c205d7e1b471bd850377a9 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
234
234
|
<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>
|
|
235
235
|
<tr class="separator:adf3fad75a4f96aefe5c25e3405509fbe inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
236
|
-
<tr class="memitem:
|
|
237
|
-
<tr class="memdesc:
|
|
238
|
-
<tr class="separator:
|
|
236
|
+
<tr class="memitem:a9c592b91a1e3d72ada730387232a2fcf 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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></td></tr>
|
|
237
|
+
<tr class="memdesc:a9c592b91a1e3d72ada730387232a2fcf 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#a9c592b91a1e3d72ada730387232a2fcf">More...</a><br /></td></tr>
|
|
238
|
+
<tr class="separator:a9c592b91a1e3d72ada730387232a2fcf inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
239
239
|
<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>
|
|
240
240
|
<tr class="separator:a00154ebaceda1be070b38803c1a82535 inherit pro_attribs_classSVF_1_1AbstractInterpretation"><td class="memSeparator" colspan="2"> </td></tr>
|
|
241
241
|
<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>
|
|
@@ -404,7 +404,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
404
404
|
<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>
|
|
405
405
|
<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>
|
|
406
406
|
|
|
407
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
407
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00492">492</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
408
408
|
|
|
409
409
|
</div>
|
|
410
410
|
</div>
|
|
@@ -531,17 +531,18 @@ Additional Inherited Members</h2></td></tr>
|
|
|
531
531
|
<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>
|
|
532
532
|
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> SVFValue* arg0Val = cs.getArgument(0);</div>
|
|
533
533
|
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">const</span> SVFValue* arg2Val = cs.getArgument(2);</div>
|
|
534
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  AbstractValue arg2Num
|
|
535
|
-
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> 
|
|
536
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  AbstractValue
|
|
537
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> 
|
|
538
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> 
|
|
539
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
540
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> 
|
|
541
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> 
|
|
542
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> 
|
|
543
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> 
|
|
544
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div>
|
|
534
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  AbstractValue arg2Num =</div>
|
|
535
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</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>
|
|
536
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  AbstractValue strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
|
|
537
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  AbstractValue totalLen = strLen0 + arg2Num;</div>
|
|
538
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad68fa02efad8b628e4542dc9ab6c58bf">canSafelyAccessMemory</a>(arg0Val, totalLen, call);</div>
|
|
539
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div>
|
|
540
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">else</span></div>
|
|
541
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
|
542
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown strcat function, please add it to strcatGroup or strncatGroup"</span>);</div>
|
|
543
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  abort();</div>
|
|
544
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div>
|
|
545
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div>
|
|
545
546
|
</div><!-- fragment -->
|
|
546
547
|
</div>
|
|
547
548
|
</div>
|
|
@@ -622,80 +623,82 @@ Additional Inherited Members</h2></td></tr>
|
|
|
622
623
|
|
|
623
624
|
<p>Reimplemented from <a class="el" href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">SVF::AbstractInterpretation</a>.</p>
|
|
624
625
|
|
|
625
|
-
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#
|
|
626
|
-
<div class="fragment"><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="
|
|
675
|
-
<div class="line"><a name="
|
|
676
|
-
<div class="line"><a name="
|
|
677
|
-
<div class="line"><a name="
|
|
678
|
-
<div class="line"><a name="
|
|
679
|
-
<div class="line"><a name="
|
|
680
|
-
<div class="line"><a name="
|
|
681
|
-
<div class="line"><a name="
|
|
682
|
-
<div class="line"><a name="
|
|
683
|
-
<div class="line"><a name="
|
|
684
|
-
<div class="line"><a name="
|
|
685
|
-
<div class="line"><a name="
|
|
686
|
-
<div class="line"><a name="
|
|
687
|
-
<div class="line"><a name="
|
|
688
|
-
<div class="line"><a name="
|
|
689
|
-
<div class="line"><a name="
|
|
690
|
-
<div class="line"><a name="
|
|
691
|
-
<div class="line"><a name="
|
|
692
|
-
<div class="line"><a name="
|
|
693
|
-
<div class="line"><a name="
|
|
694
|
-
<div class="line"><a name="
|
|
695
|
-
<div class="line"><a name="
|
|
696
|
-
<div class="line"><a name="
|
|
697
|
-
<div class="line"><a name="
|
|
698
|
-
<div class="line"><a name="
|
|
626
|
+
<p class="definition">Definition at line <a class="el" href="BufOverflowChecker_8cpp_source.html#l00415">415</a> of file <a class="el" href="BufOverflowChecker_8cpp_source.html">BufOverflowChecker.cpp</a>.</p>
|
|
627
|
+
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div>
|
|
628
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">AbstractInterpretation::handleExtAPI</a>(call);</div>
|
|
629
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> SVFFunction *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call->getCallSite());</div>
|
|
630
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  assert(fun && <span class="stringliteral">"SVFFunction* is nullptr"</span>);</div>
|
|
631
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  CallSite cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call->getCallSite());</div>
|
|
632
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// check the type of mem api,</span></div>
|
|
633
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// MEMCPY: like memcpy, memcpy_chk, llvm.memcpy etc.</span></div>
|
|
634
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">// MEMSET: like memset, memset_chk, llvm.memset etc.</span></div>
|
|
635
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// STRCPY: like strcpy, strcpy_chk, wcscpy etc.</span></div>
|
|
636
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// STRCAT: like strcat, strcat_chk, wcscat etc.</span></div>
|
|
637
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// for other ext api like printf, scanf, etc., they have their own handlers</span></div>
|
|
638
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</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>
|
|
639
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// get type of mem api</span></div>
|
|
640
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</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>
|
|
641
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div>
|
|
642
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMCPY"</span>) != std::string::npos)</div>
|
|
643
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>;</div>
|
|
644
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"MEMSET"</span>) != std::string::npos)</div>
|
|
645
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>;</div>
|
|
646
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCPY"</span>) != std::string::npos)</div>
|
|
647
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>;</div>
|
|
648
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"STRCAT"</span>) != std::string::npos)</div>
|
|
649
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>;</div>
|
|
650
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div>
|
|
651
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</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>
|
|
652
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>)</div>
|
|
653
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div>
|
|
654
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
655
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div>
|
|
656
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
657
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</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>
|
|
658
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">return</span>;</div>
|
|
659
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div>
|
|
660
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// call parseMemcpyBufferCheckArgs to parse the BUF_CHECK annotation</span></div>
|
|
661
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</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>
|
|
662
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
663
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
664
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div>
|
|
665
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  AbstractValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> =</div>
|
|
666
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</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>
|
|
667
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</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>
|
|
668
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div>
|
|
669
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div>
|
|
670
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// 2. memset functions like memset, memset_chk, annotate("MEMSET"), annotate("BUF_CHECK:Arg0, Arg2")</span></div>
|
|
671
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>)</div>
|
|
672
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div>
|
|
673
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1BufOverflowChecker.html#af83b65ed98cd4e0f6cd92962e7392d4d">_extAPIBufOverflowCheckRules</a>.count(fun->getName()) == 0)</div>
|
|
674
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  {</div>
|
|
675
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// if it is not in the rules, we do not check it</span></div>
|
|
676
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</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>
|
|
677
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span>;</div>
|
|
678
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div>
|
|
679
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</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>
|
|
680
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="comment">// loop the args and check the offset</span></div>
|
|
681
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> arg: args)</div>
|
|
682
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div>
|
|
683
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  AbstractValue <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> =</div>
|
|
684
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</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>
|
|
685
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</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>
|
|
686
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div>
|
|
687
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div>
|
|
688
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>)</div>
|
|
689
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div>
|
|
690
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#ad8b2f2fa6f22b9d1655135c819cbad8a">detectStrcpy</a>(call);</div>
|
|
691
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div>
|
|
692
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>)</div>
|
|
693
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div>
|
|
694
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1BufOverflowChecker.html#aa68f8aef09481d7c07dc59d7dfb83822">detectStrcat</a>(call);</div>
|
|
695
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div>
|
|
696
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">else</span></div>
|
|
697
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  {</div>
|
|
698
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  </div>
|
|
699
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div>
|
|
700
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">return</span>;</div>
|
|
701
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> }</div>
|
|
699
702
|
</div><!-- fragment -->
|
|
700
703
|
</div>
|
|
701
704
|
</div>
|
|
@@ -774,9 +777,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
774
777
|
<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>
|
|
775
778
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div>
|
|
776
779
|
<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>
|
|
777
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
780
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</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>
|
|
778
781
|
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div>
|
|
779
|
-
<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#
|
|
782
|
+
<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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addrID);</div>
|
|
780
783
|
<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>
|
|
781
784
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div>
|
|
782
785
|
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div>
|
|
@@ -891,9 +894,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
891
894
|
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div>
|
|
892
895
|
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">//scanf("%d", &data);</span></div>
|
|
893
896
|
<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>
|
|
894
|
-
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
897
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
895
898
|
<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>
|
|
896
|
-
<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#
|
|
899
|
+
<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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dst_id))</div>
|
|
897
900
|
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div>
|
|
898
901
|
<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>
|
|
899
902
|
<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>
|
|
@@ -901,11 +904,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
901
904
|
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
|
|
902
905
|
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span></div>
|
|
903
906
|
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div>
|
|
904
|
-
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
907
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(dst_id);</div>
|
|
905
908
|
<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>
|
|
906
909
|
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div>
|
|
907
|
-
<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#
|
|
908
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
910
|
+
<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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
|
|
911
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</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>
|
|
909
912
|
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  es.store(vaddr, range);</div>
|
|
910
913
|
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div>
|
|
911
914
|
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div>
|
|
@@ -914,9 +917,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
914
917
|
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div>
|
|
915
918
|
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//fscanf(stdin, "%d", &data);</span></div>
|
|
916
919
|
<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>
|
|
917
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
920
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
918
921
|
<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>
|
|
919
|
-
<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#
|
|
922
|
+
<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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dst_id))</div>
|
|
920
923
|
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div>
|
|
921
924
|
<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>
|
|
922
925
|
<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>
|
|
@@ -924,11 +927,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
924
927
|
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div>
|
|
925
928
|
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">else</span></div>
|
|
926
929
|
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div>
|
|
927
|
-
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
930
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  AbstractValue Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(dst_id);</div>
|
|
928
931
|
<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>
|
|
929
932
|
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div>
|
|
930
|
-
<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#
|
|
931
|
-
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
933
|
+
<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#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
|
|
934
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  AbstractValue range = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</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>
|
|
932
935
|
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  es.store(vaddr, range);</div>
|
|
933
936
|
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div>
|
|
934
937
|
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div>
|
|
@@ -946,7 +949,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
946
949
|
<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>
|
|
947
950
|
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div>
|
|
948
951
|
<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>
|
|
949
|
-
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
952
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
950
953
|
<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>
|
|
951
954
|
<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>
|
|
952
955
|
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  AbstractValue block_count = es[block_count_id];</div>
|
|
@@ -964,7 +967,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
964
967
|
<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>
|
|
965
968
|
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div>
|
|
966
969
|
<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>
|
|
967
|
-
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
970
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
968
971
|
<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>
|
|
969
972
|
<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>
|
|
970
973
|
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// get elem size of arg2</span></div>
|
|
@@ -1013,7 +1016,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1013
1016
|
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// itoa(num, ch, 10);</span></div>
|
|
1014
1017
|
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// num: int, ch: char*, 10 is decimal</span></div>
|
|
1015
1018
|
<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>
|
|
1016
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
1019
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
1017
1020
|
<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>
|
|
1018
1021
|
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  </div>
|
|
1019
1022
|
<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>
|
|
@@ -1028,7 +1031,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1028
1031
|
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// check the arg size</span></div>
|
|
1029
1032
|
<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>
|
|
1030
1033
|
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> SVFValue* strValue = cs.getArgument(0);</div>
|
|
1031
|
-
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
1034
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
1032
1035
|
<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>
|
|
1033
1036
|
<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>
|
|
1034
1037
|
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (strValue->getType()->isArrayTy())</div>
|
|
@@ -1052,7 +1055,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1052
1055
|
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div>
|
|
1053
1056
|
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// recv(sockfd, buf, len, flags);</span></div>
|
|
1054
1057
|
<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>
|
|
1055
|
-
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
1058
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
1056
1059
|
<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>
|
|
1057
1060
|
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  AbstractValue len = es[len_id] - IntervalValue(1);</div>
|
|
1058
1061
|
<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>
|
|
@@ -1067,7 +1070,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1067
1070
|
<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>
|
|
1068
1071
|
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">//void SAFE_BUFACCESS(void* data, int size);</span></div>
|
|
1069
1072
|
<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>
|
|
1070
|
-
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
1073
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
1071
1074
|
<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>
|
|
1072
1075
|
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  AbstractValue val = es[size_id];</div>
|
|
1073
1076
|
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
@@ -1097,7 +1100,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1097
1100
|
<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>
|
|
1098
1101
|
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">//void UNSAFE_BUFACCESS(void* data, int size);</span></div>
|
|
1099
1102
|
<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>
|
|
1100
|
-
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#
|
|
1103
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  AbstractState&es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-><a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
|
|
1101
1104
|
<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>
|
|
1102
1105
|
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  AbstractValue val = es[size_id];</div>
|
|
1103
1106
|
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span> (val.isBottom())</div>
|
|
@@ -1186,13 +1189,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1186
1189
|
<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>
|
|
1187
1190
|
<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>
|
|
1188
1191
|
<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>
|
|
1189
|
-
<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#
|
|
1192
|
+
<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#l00492">BufOverflowChecker.cpp:492</a></div></div>
|
|
1190
1193
|
<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>
|
|
1191
|
-
<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#
|
|
1194
|
+
<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#l01464">AbstractInterpretation.cpp:1464</a></div></div>
|
|
1192
1195
|
<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>
|
|
1193
1196
|
<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>
|
|
1194
1197
|
<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>
|
|
1195
|
-
<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>
|
|
1196
1198
|
<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>
|
|
1197
1199
|
<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>
|
|
1198
1200
|
<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>
|
|
@@ -1204,25 +1206,26 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1204
1206
|
<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>
|
|
1205
1207
|
<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>
|
|
1206
1208
|
<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>
|
|
1207
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_afe8766165bfc4be1f9d5f5df25c954a3"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">SVF::SVFIR2AbsState::getEs</a></div><div class="ttdeci">AbstractState & getEs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00054">SVFIR2AbsState.h:54</a></div></div>
|
|
1208
1209
|
<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>
|
|
1209
1210
|
<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>
|
|
1210
1211
|
<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>
|
|
1211
|
-
<div class="ttc" id="
|
|
1212
|
+
<div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a9c592b91a1e3d72ada730387232a2fcf"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">SVF::AbstractInterpretation::_svfir2AbsState</a></div><div class="ttdeci">SVFIR2AbsState * _svfir2AbsState</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>
|
|
1213
|
+
<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#l01174">AbstractInterpretation.cpp:1174</a></div></div>
|
|
1212
1214
|
<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>
|
|
1213
1215
|
<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>
|
|
1214
1216
|
<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>
|
|
1217
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a99b526db536fb241ff755a82a45123fa"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">SVF::SVFIR2AbsState::getAbsState</a></div><div class="ttdeci">AbstractState & getAbsState()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00054">SVFIR2AbsState.h:54</a></div></div>
|
|
1215
1218
|
<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>
|
|
1216
1219
|
<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>
|
|
1217
1220
|
<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>
|
|
1218
1221
|
<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>
|
|
1219
1222
|
<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>
|
|
1220
|
-
<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#
|
|
1223
|
+
<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#l00830">AbstractInterpretation.cpp:830</a></div></div>
|
|
1221
1224
|
<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>
|
|
1222
1225
|
<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>
|
|
1223
1226
|
<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>
|
|
1224
1227
|
<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>
|
|
1225
|
-
<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#
|
|
1228
|
+
<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#l01620">AbstractInterpretation.cpp:1620</a></div></div>
|
|
1226
1229
|
<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>
|
|
1227
1230
|
<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#l00170">SVFIR2AbsState.h:170</a></div></div>
|
|
1228
1231
|
<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#l00380">AbstractInterpretation.h:380</a></div></div>
|