<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, May 19, 2014 at 12:51 PM, miroslav.fontan <span dir="ltr"><<a href="mailto:miroslav.fontan@wincor-nixdorf.cz" target="_blank">miroslav.fontan@wincor-nixdorf.cz</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
By hunting after address error in our app I have found unexpected asan<br>
behaviour<br>
<br>
Here is a minimal isolated example which runs without address error:<br>
<br>
clang++ a.cpp -fsanitize=address<br>
<br>
cat a.cpp<br>
<br>
char* subroutine()<br>
{<br>
        char* p = new char[8]();<br>
        return p;<br>
}<br>
<br>
int main( int /*argc*/, char** /*argv*/ )<br>
{<br>
        char* pc_sub = subroutine();<br>
        char* pc_main = new char[8]();<br>
        pc_main[32] = 1; //points to pc_sub, no ERROR :-(<br>
//      pc_main[16] = 2; //points to bad address ERROR :-)<br>
        pc_sub[-32] = 3; //points to pc_main, no ERROR :-(<br></blockquote><div><br></div><div>Yes, ASan puts a redzone around heap allocations, but that redzone has a limited size (this is a memory / ability to catch bugs tradeoff). Put another way, ASan checks that you only use valid addresses, but doesn't check how those addresses are computed. Do you have some specific question about this?</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
        delete[] pc_main;<br>
        delete[] pc_sub;<br>
        return 0;<br>
}<br>
<br>
Regards<br>
<br>
Miroslav<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div>