Summary: Implements https://github.com/google/sanitizers/issues/835. Flush stdout before exiting in test cases. Since the atexit hook is used for exit reports, pending prints to stdout can be lost if they aren't flushed before calling exit(). Expect tests to have non-zero exit code if exit() is called. Reviewers: vitalybuka, kcc Reviewed By: kcc Subscribers: eraman, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D35602 llvm-svn: 308669
25 lines
608 B
C++
25 lines
608 B
C++
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
// abs(x) < 0 and y == Const puzzle.
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <cstdio>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
|
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
|
|
if (Size < 8) return 0;
|
|
int x;
|
|
unsigned y;
|
|
memcpy(&x, Data, sizeof(x));
|
|
memcpy(&y, Data + sizeof(x), sizeof(y));
|
|
if (abs(x) < 0 && y == 0xbaddcafe) {
|
|
printf("BINGO; Found the target, exiting; x = 0x%x y 0x%x\n", x, y);
|
|
fflush(stdout);
|
|
exit(1);
|
|
}
|
|
return 0;
|
|
}
|
|
|