<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/compiler-rt/test/fuzzer/StackOverflowTest.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[libFuzzer] Fix stack-overflow-with-asan.test.</title>
<updated>2021-05-07T16:18:21+00:00</updated>
<author>
<name>Matt Morehouse</name>
<email>mascasa@google.com</email>
</author>
<published>2021-05-07T16:11:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f09414499c4717b66baa9581c641e8a636e5dcc1'/>
<id>f09414499c4717b66baa9581c641e8a636e5dcc1</id>
<content type='text'>
Fix function return type and remove check for SUMMARY, since it doesn't
seem to be output in Windows.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix function return type and remove check for SUMMARY, since it doesn't
seem to be output in Windows.
</pre>
</div>
</content>
</entry>
<entry>
<title>[libFuzzer] Fix stack overflow detection</title>
<updated>2021-05-07T15:18:28+00:00</updated>
<author>
<name>Sebastian Poeplau</name>
<email>poeplau@code-intelligence.com</email>
</author>
<published>2021-05-07T15:00:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=70cbc6dbef7048d3b1aa89a676d96c6ba075b41b'/>
<id>70cbc6dbef7048d3b1aa89a676d96c6ba075b41b</id>
<content type='text'>
Address sanitizer can detect stack exhaustion via its SEGV handler, which is
executed on a separate stack using the sigaltstack mechanism. When libFuzzer is
used with address sanitizer, it installs its own signal handlers which defer to
those put in place by the sanitizer before performing additional actions. In the
particular case of a stack overflow, the current setup fails because libFuzzer
doesn't preserve the flag for executing the signal handler on a separate stack:
when we run out of stack space, the operating system can't run the SEGV handler,
so address sanitizer never reports the issue. See the included test for an
example.

This commit fixes the issue by making libFuzzer preserve the SA_ONSTACK flag
when installing its signal handlers; the dedicated signal-handler stack set up
by the sanitizer runtime appears to be large enough to support the additional
frames from the fuzzer.

Reviewed By: morehouse

Differential Revision: https://reviews.llvm.org/D101824
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Address sanitizer can detect stack exhaustion via its SEGV handler, which is
executed on a separate stack using the sigaltstack mechanism. When libFuzzer is
used with address sanitizer, it installs its own signal handlers which defer to
those put in place by the sanitizer before performing additional actions. In the
particular case of a stack overflow, the current setup fails because libFuzzer
doesn't preserve the flag for executing the signal handler on a separate stack:
when we run out of stack space, the operating system can't run the SEGV handler,
so address sanitizer never reports the issue. See the included test for an
example.

This commit fixes the issue by making libFuzzer preserve the SA_ONSTACK flag
when installing its signal handlers; the dedicated signal-handler stack set up
by the sanitizer runtime appears to be large enough to support the additional
frames from the fuzzer.

Reviewed By: morehouse

Differential Revision: https://reviews.llvm.org/D101824
</pre>
</div>
</content>
</entry>
</feed>
