<div dir="ltr">Ooops. That's ok though, that's just a death test. </div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Sep 9, 2013 at 10:25 PM, Bill Wendling <span dir="ltr"><<a href="mailto:wendling@apple.com" target="_blank">wendling@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sep 6, 2013, at 3:58 AM, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>

<br>
> Author: kcc<br>
> Date: Fri Sep  6 05:58:55 2013<br>
> New Revision: 190132<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=190132&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=190132&view=rev</a><br>
> Log:<br>
> [msan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)<br>
><br>
> Modified:<br>
>    compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
>    compiler-rt/trunk/lib/msan/tests/msan_test.cc<br>
><br>
> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=190132&r1=190131&r2=190132&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=190132&r1=190131&r2=190132&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)<br>
> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Sep  6 05:58:55 2013<br>
> @@ -794,7 +794,8 @@ INTERCEPTOR(SSIZE_T, recvfrom, int fd, v<br>
> }<br>
><br>
> INTERCEPTOR(void *, calloc, SIZE_T nmemb, SIZE_T size) {<br>
> -  if (CallocShouldReturnNullDueToOverflow(size, nmemb)) return 0;<br>
> +  if (CallocShouldReturnNullDueToOverflow(size, nmemb))<br>
> +    return AllocatorReturnNull();<br>
>   GET_MALLOC_STACK_TRACE;<br>
>   if (!msan_inited) {<br>
>     // Hack: dlsym calls calloc before REAL(calloc) is retrieved from dlsym.<br>
><br>
> Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=190132&r1=190131&r2=190132&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=190132&r1=190131&r2=190132&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)<br>
> +++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Fri Sep  6 05:58:55 2013<br>
> @@ -2921,7 +2921,9 @@ TEST(MemorySanitizer, CallocOverflow) {<br>
>   size_t kArraySize = 4096;<br>
>   volatile size_t kMaxSizeT = std::numeric_limits<size_t>::max();<br>
>   volatile size_t kArraySize2 = kMaxSizeT / kArraySize + 10;<br>
> -  void *p = calloc(kArraySize, kArraySize2);  // Should return 0.<br>
> +  void *p = 0;<br>
> +  EXPECT_DEATH(p = calloc(kArraySize, kArraySize2),<br>
> +               "llocator is terminating the process instead of returning 0");<br>
<br>
</div></div>Missing 'A' at the beginning of message.<br>
<span class="HOEnZb"><font color="#888888"><br>
-bw<br>
<br>
</font></span></blockquote></div><br></div>