svf-tools 1.0.531 → 1.0.532

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.
Files changed (29) hide show
  1. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp.html +2 -0
  2. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +19 -2
  3. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +7 -3
  4. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +13 -10
  5. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +152 -14
  6. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  7. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  8. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  9. package/SVF-doxygen/html/html/functions_func_t.html +2 -1
  10. package/SVF-doxygen/html/html/functions_func_v.html +4 -2
  11. package/SVF-doxygen/html/html/functions_n.html +3 -3
  12. package/SVF-doxygen/html/html/functions_r.html +2 -2
  13. package/SVF-doxygen/html/html/functions_s.html +3 -3
  14. package/SVF-doxygen/html/html/functions_t.html +5 -2
  15. package/SVF-doxygen/html/html/functions_v.html +8 -6
  16. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  17. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  18. package/SVF-doxygen/html/html/search/all_13.js +2 -2
  19. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  20. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  21. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  22. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  23. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  24. package/SVF-doxygen/html/html/search/functions_14.js +2 -2
  25. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  26. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  27. package/include/SABER/DoubleFreeChecker.h +8 -2
  28. package/lib/SABER/DoubleFreeChecker.cpp +109 -0
  29. package/package.json +1 -1
@@ -67,6 +67,8 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <div class="textblock"><code>#include &quot;<a class="el" href="DoubleFreeChecker_8h_source.html">SABER/DoubleFreeChecker.h</a>&quot;</code><br />
70
+ <code>#include &quot;<a class="el" href="SVFUtil_8h_source.html">Util/SVFUtil.h</a>&quot;</code><br />
71
+ <code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
70
72
  </div>
71
73
  <p><a href="DoubleFreeChecker_8cpp_source.html">Go to the source code of this file.</a></p>
72
74
  </div><!-- contents -->
@@ -66,18 +66,35 @@ $(function() {
66
66
  <div class="title">DoubleFreeChecker.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="DoubleFreeChecker_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DoubleFreeChecker.cpp -- Detecting double-free errors------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DoubleFreeChecker.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 24, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DoubleFreeChecker_8h.html">SABER/DoubleFreeChecker.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a"> 35</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">DoubleFreeChecker::reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = getSrcCSID(src);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(<span class="stringliteral">&quot;\t Double Free :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
69
+ <a href="DoubleFreeChecker_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DoubleFreeChecker.cpp -- Detecting double-free errors------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DoubleFreeChecker.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 24, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DoubleFreeChecker_8h.html">SABER/DoubleFreeChecker.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3"> 37</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3">DoubleFreeChecker::reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = getSrcCSID(src);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(<span class="stringliteral">&quot;\t Double Free :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aec491143ded97649da1ed61b8fda796c">Options::ValidateTests</a>)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; testsValidation(slice);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263"> 55</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263">DoubleFreeChecker::testsValidation</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a> *slice)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = getSrcCSID(source);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span>(fun==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; validateSuccessTests(slice,fun);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; validateExpectedFailureTests(slice,fun);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2"> 66</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2">DoubleFreeChecker::validateSuccessTests</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a> *slice, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = getSrcCSID(source);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span>)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;DOUBLEFREEMALLOC&quot;</span>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;DOUBLEFREEMALLOCFN&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOCFP&quot;</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (success)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t SUCCESS :&quot;</span>) &lt;&lt; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(getSrcCSID(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t FAILURE :&quot;</span>) &lt;&lt; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(getSrcCSID(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899"> 112</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899">DoubleFreeChecker::validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a> *slice, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = getSrcCSID(source);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">bool</span> expectedFailure = <span class="keyword">false</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;DOUBLEFREEMALLOCFN&quot;</span>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; } </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOCFP&quot;</span>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;DOUBLEFREEMALLOC&quot;</span>)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (expectedFailure)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t EXPECTED-FAILURE :&quot;</span>) &lt;&lt; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(getSrcCSID(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t UNEXPECTED FAILURE :&quot;</span>) &lt;&lt; funName</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(getSrcCSID(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t double free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a8014b7a04b997d4c0a4be0a05fad6fe3"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3">SVF::DoubleFreeChecker::reportBug</a></div><div class="ttdeci">void reportBug(ProgSlice *slice) override</div><div class="ttdoc">Report file/close bugs. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00037">DoubleFreeChecker.cpp:37</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
73
+ <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
70
74
  <div class="ttc" id="classSVF_1_1ProgSlice_html_afac06b0be2b04cb8a65af21fd697b756"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">SVF::ProgSlice::evalFinalCond</a></div><div class="ttdeci">std::string evalFinalCond() const</div><div class="ttdoc">Evaluate final condition. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00160">ProgSlice.cpp:160</a></div></div>
71
75
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00267">SVFUtil.cpp:267</a></div></div>
72
76
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a054c3e668ce8b265bbc5d923f6243ce7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">SVF::SVFUtil::bugMsg2</a></div><div class="ttdeci">std::string bugMsg2(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00086">SVFUtil.cpp:86</a></div></div>
77
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6a55f1f8598998a3ffbbc67d32eaf8c4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(std::string msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00054">SVFUtil.cpp:54</a></div></div>
78
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00067">SVFUtil.cpp:67</a></div></div>
73
79
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
74
80
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a45fb7711498bcba60e931c9c2a9ccec4"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">SVF::ProgSlice::isSatisfiableForPairs</a></div><div class="ttdeci">bool isSatisfiableForPairs()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00112">ProgSlice.cpp:112</a></div></div>
81
+ <div class="ttc" id="namespaceSVF_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#l00281">SVFUtil.h:281</a></div></div>
75
82
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
83
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
84
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1Options_html_aec491143ded97649da1ed61b8fda796c"><div class="ttname"><a href="classSVF_1_1Options.html#aec491143ded97649da1ed61b8fda796c">SVF::Options::ValidateTests</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ValidateTests</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00198">Options.h:198</a></div></div>
86
+ <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
76
88
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
77
89
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a13fc5269cbd00cfd0eed5b1cee89e1c2"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2">SVF::DoubleFreeChecker::validateSuccessTests</a></div><div class="ttdeci">void validateSuccessTests(ProgSlice *slice, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00066">DoubleFreeChecker.cpp:66</a></div></div>
78
91
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
79
- <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_aa6bde3be780876317dcdcdf26d2ece2a"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">SVF::DoubleFreeChecker::reportBug</a></div><div class="ttdeci">void reportBug(ProgSlice *slice)</div><div class="ttdoc">Report file/close bugs. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00035">DoubleFreeChecker.cpp:35</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a06cf937c92c88627796f09b0a87a5263"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263">SVF::DoubleFreeChecker::testsValidation</a></div><div class="ttdeci">void testsValidation(ProgSlice *slice)</div><div class="ttdoc">Validate test cases for regression test purpose. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00055">DoubleFreeChecker.cpp:55</a></div></div>
94
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5d4bb92f5df30417f414397f8e58cf01"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVF::SVFUtil::errMsg</a></div><div class="ttdeci">std::string errMsg(std::string msg)</div><div class="ttdoc">Print error message by converting a string into red string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00076">SVFUtil.cpp:76</a></div></div>
95
+ <div class="ttc" id="cJSON_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>
80
96
  <div class="ttc" id="classSVF_1_1ProgSlice_html"><div class="ttname"><a href="classSVF_1_1ProgSlice.html">SVF::ProgSlice</a></div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00041">ProgSlice.h:41</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a3626a53eb9488f79ea82001dc3374899"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899">SVF::DoubleFreeChecker::validateExpectedFailureTests</a></div><div class="ttdeci">void validateExpectedFailureTests(ProgSlice *slice, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00112">DoubleFreeChecker.cpp:112</a></div></div>
81
98
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ab1fdec8d39c9890324718607d7464eab"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">SVF::ProgSlice::annotatePaths</a></div><div class="ttdeci">void annotatePaths()</div><div class="ttdoc">Annotate program according to final condition. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00187">ProgSlice.cpp:187</a></div></div>
82
99
  <div class="ttc" id="DoubleFreeChecker_8h_html"><div class="ttname"><a href="DoubleFreeChecker_8h.html">DoubleFreeChecker.h</a></div></div>
83
100
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
@@ -66,17 +66,21 @@ $(function() {
66
66
  <div class="title">DoubleFreeChecker.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="DoubleFreeChecker_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DoubleFreeChecker.h -- Checking double-free errors---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DoubleFreeChecker.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 24, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef DOUBLEFREECHECKER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define DOUBLEFREECHECKER_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LeakChecker_8h.html">SABER/LeakChecker.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DoubleFreeChecker.html">DoubleFreeChecker</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#ac9d147b16442bb4746f66cffe46a070a"> 47</a></span>&#160; <a class="code" href="classSVF_1_1DoubleFreeChecker.html#ac9d147b16442bb4746f66cffe46a070a">DoubleFreeChecker</a>(): <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a>()</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824"> 52</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824">~DoubleFreeChecker</a>()</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a71c9f9450e369d1196c49b7d9019dbda"> 57</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a71c9f9450e369d1196c49b7d9019dbda">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(module);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;};</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* DOUBLEFREECHECKER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LeakChecker_html"><div class="ttname"><a href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00042">LeakChecker.h:42</a></div></div>
69
+ <a href="DoubleFreeChecker_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DoubleFreeChecker.h -- Checking double-free errors---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DoubleFreeChecker.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 24, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef DOUBLEFREECHECKER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define DOUBLEFREECHECKER_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LeakChecker_8h.html">SABER/LeakChecker.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DoubleFreeChecker.html">DoubleFreeChecker</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#ac9d147b16442bb4746f66cffe46a070a"> 47</a></span>&#160; <a class="code" href="classSVF_1_1DoubleFreeChecker.html#ac9d147b16442bb4746f66cffe46a070a">DoubleFreeChecker</a>(): <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a>()</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824"> 52</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824">~DoubleFreeChecker</a>()</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DoubleFreeChecker.html#ae8c09909e9f3e44489464f7190a6b671"> 57</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#ae8c09909e9f3e44489464f7190a6b671">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)<span class="keyword"> override</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(module);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice) <span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263">testsValidation</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2">validateSuccessTests</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* DOUBLEFREECHECKER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LeakChecker_html"><div class="ttname"><a href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00042">LeakChecker.h:42</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8h_source.html#l00042">DoubleFreeChecker.h:42</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a8014b7a04b997d4c0a4be0a05fad6fe3"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3">SVF::DoubleFreeChecker::reportBug</a></div><div class="ttdeci">void reportBug(ProgSlice *slice) override</div><div class="ttdoc">Report file/close bugs. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00037">DoubleFreeChecker.cpp:37</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_ae8c09909e9f3e44489464f7190a6b671"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#ae8c09909e9f3e44489464f7190a6b671">SVF::DoubleFreeChecker::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(SVFModule *module) override</div><div class="ttdoc">We start from here. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8h_source.html#l00057">DoubleFreeChecker.h:57</a></div></div>
71
74
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
72
75
  <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a2eddb7691ad68af168fcae3dacd79824"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824">SVF::DoubleFreeChecker::~DoubleFreeChecker</a></div><div class="ttdeci">virtual ~DoubleFreeChecker()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8h_source.html#l00052">DoubleFreeChecker.h:52</a></div></div>
73
76
  <div class="ttc" id="LeakChecker_8h_html"><div class="ttname"><a href="LeakChecker_8h.html">LeakChecker.h</a></div></div>
74
77
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ac12d813bcba4ec70de5e9048bbe16afc"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SVF::SrcSnkDDA::analyze</a></div><div class="ttdeci">virtual void analyze(SVFModule *module)</div><div class="ttdoc">Start analysis here. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00062">SrcSnkDDA.cpp:62</a></div></div>
75
78
  <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_ac9d147b16442bb4746f66cffe46a070a"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#ac9d147b16442bb4746f66cffe46a070a">SVF::DoubleFreeChecker::DoubleFreeChecker</a></div><div class="ttdeci">DoubleFreeChecker()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8h_source.html#l00047">DoubleFreeChecker.h:47</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a13fc5269cbd00cfd0eed5b1cee89e1c2"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2">SVF::DoubleFreeChecker::validateSuccessTests</a></div><div class="ttdeci">void validateSuccessTests(ProgSlice *slice, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00066">DoubleFreeChecker.cpp:66</a></div></div>
76
80
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
77
- <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a71c9f9450e369d1196c49b7d9019dbda"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a71c9f9450e369d1196c49b7d9019dbda">SVF::DoubleFreeChecker::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(SVFModule *module)</div><div class="ttdoc">We start from here. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8h_source.html#l00057">DoubleFreeChecker.h:57</a></div></div>
78
- <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_aa6bde3be780876317dcdcdf26d2ece2a"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">SVF::DoubleFreeChecker::reportBug</a></div><div class="ttdeci">void reportBug(ProgSlice *slice)</div><div class="ttdoc">Report file/close bugs. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00035">DoubleFreeChecker.cpp:35</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a06cf937c92c88627796f09b0a87a5263"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263">SVF::DoubleFreeChecker::testsValidation</a></div><div class="ttdeci">void testsValidation(ProgSlice *slice)</div><div class="ttdoc">Validate test cases for regression test purpose. </div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00055">DoubleFreeChecker.cpp:55</a></div></div>
79
82
  <div class="ttc" id="classSVF_1_1ProgSlice_html"><div class="ttname"><a href="classSVF_1_1ProgSlice.html">SVF::ProgSlice</a></div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00041">ProgSlice.h:41</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1DoubleFreeChecker_html_a3626a53eb9488f79ea82001dc3374899"><div class="ttname"><a href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899">SVF::DoubleFreeChecker::validateExpectedFailureTests</a></div><div class="ttdeci">void validateExpectedFailureTests(ProgSlice *slice, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="DoubleFreeChecker_8cpp_source.html#l00112">DoubleFreeChecker.cpp:112</a></div></div>
80
84
  </div><!-- fragment --></div><!-- contents -->
81
85
  <!-- start footer part -->
82
86
  <hr class="footer"/><address class="footer"><small>
@@ -144,10 +144,10 @@ $(function() {
144
144
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2">printZ3Stat</a>()</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
145
145
  <tr><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">ptaCallGraph</a></td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
146
146
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html#a53564d384938c19980cb138f720e34e9">pushIntoWorklist</a>(DPIm &amp;item)</td><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html">SVF::GraphReachSolver&lt; GraphType, DPIm &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
147
- <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">reportBug</a>(ProgSlice *slice)</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
147
+ <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a8014b7a04b997d4c0a4be0a05fad6fe3">reportBug</a>(ProgSlice *slice) override</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
148
148
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">reportNeverFree</a>(const SVFGNode *src)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
149
149
  <tr><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">reportPartialLeak</a>(const SVFGNode *src)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
150
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a71c9f9450e369d1196c49b7d9019dbda">runOnModule</a>(SVFModule *module)</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
150
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#ae8c09909e9f3e44489464f7190a6b671">runOnModule</a>(SVFModule *module) override</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
151
151
  <tr><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">setCurSlice</a>(const SVFGNode *src)</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
152
152
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html#a0298a692295a8a4eae32ab151aa6ccc3">setGraph</a>(GraphType g)</td><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html">SVF::GraphReachSolver&lt; GraphType, DPIm &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
153
153
  <tr><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">sinksBegin</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -162,14 +162,17 @@ $(function() {
162
162
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700">SVFGNodeToCSIDMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"></td></tr>
163
163
  <tr><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117">SVFGNodeToDPItemsMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"></td></tr>
164
164
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4">SVFGNodeToSliceMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"></td></tr>
165
- <tr><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">testsValidation</a>(const ProgSlice *slice)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
166
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">validateExpectedFailureTests</a>(const SVFGNode *source, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
167
- <tr><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">validateSuccessTests</a>(const SVFGNode *source, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
168
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b">WorkList</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"></td></tr>
169
- <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824">~DoubleFreeChecker</a>()</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
170
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html#a31e78a14271a152f5b7c0d751a39312a">~GraphReachSolver</a>()</td><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html">SVF::GraphReachSolver&lt; GraphType, DPIm &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
171
- <tr><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208">~LeakChecker</a>()</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
172
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">~SrcSnkDDA</a>()</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
165
+ <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a06cf937c92c88627796f09b0a87a5263">testsValidation</a>(ProgSlice *slice)</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"></td></tr>
166
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">SVF::LeakChecker::testsValidation</a>(const ProgSlice *slice)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
167
+ <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a3626a53eb9488f79ea82001dc3374899">validateExpectedFailureTests</a>(ProgSlice *slice, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"></td></tr>
168
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">SVF::LeakChecker::validateExpectedFailureTests</a>(const SVFGNode *source, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
169
+ <tr><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a13fc5269cbd00cfd0eed5b1cee89e1c2">validateSuccessTests</a>(ProgSlice *slice, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"></td></tr>
170
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">SVF::LeakChecker::validateSuccessTests</a>(const SVFGNode *source, const SVFFunction *fun)</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
171
+ <tr><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b">WorkList</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"></td></tr>
172
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html#a2eddb7691ad68af168fcae3dacd79824">~DoubleFreeChecker</a>()</td><td class="entry"><a class="el" href="classSVF_1_1DoubleFreeChecker.html">SVF::DoubleFreeChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
173
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html#a31e78a14271a152f5b7c0d751a39312a">~GraphReachSolver</a>()</td><td class="entry"><a class="el" href="classSVF_1_1GraphReachSolver.html">SVF::GraphReachSolver&lt; GraphType, DPIm &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
174
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208">~LeakChecker</a>()</td><td class="entry"><a class="el" href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
175
+ <tr><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">~SrcSnkDDA</a>()</td><td class="entry"><a class="el" href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
173
176
  </table></div><!-- contents -->
174
177
  <!-- start footer part -->
175
178
  <hr class="footer"/><address class="footer"><small>