<div dir="ltr"><div class="gmail_quote">On Tue, Mar 17, 2015 at 2:50 PM Bhargava Shastry <<a href="mailto:bshastry@sec.t-labs.tu-berlin.de">bshastry@sec.t-labs.tu-berlin.de</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
On 03/17/2015 01:09 PM, Manuel Klimek wrote:<br>
> How can you prove a comparison against garbage value from that code?<br>
> Seems like somebody can set m_x to anything between the constructor and<br>
> the call to method.<br>
> If you want to catch this, you'll at least need:<br>
> void f() {<br>
>   foo f;<br>
>   f.method();<br>
> }<br>
<br>
Apologies for having left out the crucial function that instantiates a<br>
foo object. Agree that this is the missing piece.<br>
<br>
> ... and then the SA needs to "inline" both the call to the constructor<br>
> and the method call to see the problem.<br>
<br>
My understanding is that, during symbolic execution, Clang SA ``visits"<br>
function calls in the procedure under analysis. So, in the function void<br>
f() above, Clang SA would metaphorically step into foo's constructor and<br>
subsequently method() and prove garbage value in two steps i.e.,<br></blockquote><div><br></div><div>Yes, that's what the SA calls "inlining". I agree that it's confusing :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Step 1. Call to f.method() from void f()<br>
Step 2. Garbage value comparison in method()<br>
<br>
Is inlining how Clang SA really does this? Afaik, Clang SA visits the<br>
call graph for a translation unit in topological order. In the example,<br>
this means, when void f() is being analyzed, both ctor declaration and<br>
method declarations would be visited, no?<br></blockquote><div><br></div><div>Well, it depends. Whether the SA drills into a function depends on many things.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Regards,<br>
Bhargava<br>
<br>
--<br>
Bhargava Shastry <<a href="mailto:bshastry@sec.t-labs.tu-berlin.de" target="_blank">bshastry@sec.t-labs.tu-<u></u>berlin.de</a>><br>
Security in Telecommunications<br>
TU Berlin / Telekom Innovation Laboratories<br>
Ernst-Reuter-Platz 7, Sekr TEL 17 / D - 10587 Berlin, Germany<br>
phone: +49 30 8353 58235<br>
</blockquote></div></div>