<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 8, 2016 at 6:20 PM, Kostya Serebryany via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kcc<br>
Date: Wed Jun  8 20:20:35 2016<br>
New Revision: 272240<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=272240&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=272240&view=rev</a><br>
Log:<br>
[libFuzzer] add one more OOM test, which we currently don't handle very well<br>
<br>
Added:<br>
    llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp<br>
Modified:<br>
    llvm/trunk/lib/Fuzzer/test/CMakeLists.txt<br>
<br>
Modified: llvm/trunk/lib/Fuzzer/test/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/CMakeLists.txt?rev=272240&r1=272239&r2=272240&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/CMakeLists.txt?rev=272240&r1=272239&r2=272240&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Fuzzer/test/CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/Fuzzer/test/CMakeLists.txt Wed Jun  8 20:20:35 2016<br>
@@ -78,6 +78,7 @@ set(Tests<br>
   NullDerefTest<br>
   NullDerefOnEmptyTest<br>
   NthRunCrashTest<br>
+  OneHugeAllocTest<br>
   OutOfMemoryTest<br>
   RepeatedMemcmp<br>
   SimpleCmpTest<br>
<br>
Added: llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp?rev=272240&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp?rev=272240&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp (added)<br>
+++ llvm/trunk/lib/Fuzzer/test/OneHugeAllocTest.cpp Wed Jun  8 20:20:35 2016<br>
@@ -0,0 +1,29 @@<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+<br>
+// Tests OOM handling when there is a single large allocation.<br>
+#include <assert.h><br>
+#include <cstdint><br>
+#include <cstdlib><br>
+#include <cstddef><br>
+#include <cstring><br>
+#include <iostream><br>
+#include <unistd.h><br>
+<br>
+static volatile char *SinkPtr;<br></blockquote><div><br></div><div>Do you mean `static char *volatile SinkPtr`? Otherwise the store to SinkPtr is not volatile so it is not really acting like a sink.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {<br>
+  if (Size > 0 && Data[0] == 'H') {<br>
+    if (Size > 1 && Data[1] == 'i') {<br>
+      if (Size > 2 && Data[2] == '!') {<br>
+        size_t kSize = (size_t)1 << 31;<br>
+        char *p = new char[kSize];<br>
+        memset(p, 0, kSize);<br>
+        SinkPtr = p;<br>
+        delete [] p;<br>
+      }<br>
+    }<br>
+  }<br>
+  return 0;<br>
+}<br>
+<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>