mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[libFuzzer] detect leaks after every run when executing fixed inputs (./fuzzer -runs=1000000 my-file)
llvm-svn: 284514
This commit is contained in:
parent
f5a046ca77
commit
5212c69d5c
@ -270,6 +270,7 @@ int RunOneTest(Fuzzer *F, const char *InputFilePath, size_t MaxLen) {
|
|||||||
if (MaxLen && MaxLen < U.size())
|
if (MaxLen && MaxLen < U.size())
|
||||||
U.resize(MaxLen);
|
U.resize(MaxLen);
|
||||||
F->RunOne(U.data(), U.size());
|
F->RunOne(U.data(), U.size());
|
||||||
|
F->TryDetectingAMemoryLeak(U.data(), U.size(), true);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +101,8 @@ public:
|
|||||||
|
|
||||||
bool InFuzzingThread() const { return IsMyThread; }
|
bool InFuzzingThread() const { return IsMyThread; }
|
||||||
size_t GetCurrentUnitInFuzzingThead(const uint8_t **Data) const;
|
size_t GetCurrentUnitInFuzzingThead(const uint8_t **Data) const;
|
||||||
|
void TryDetectingAMemoryLeak(const uint8_t *Data, size_t Size,
|
||||||
|
bool DuringInitialCorpusExecution);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void AlarmCallback();
|
void AlarmCallback();
|
||||||
@ -116,8 +118,6 @@ private:
|
|||||||
void PrintStats(const char *Where, const char *End = "\n", size_t Units = 0);
|
void PrintStats(const char *Where, const char *End = "\n", size_t Units = 0);
|
||||||
void PrintStatusForNewUnit(const Unit &U);
|
void PrintStatusForNewUnit(const Unit &U);
|
||||||
void ShuffleCorpus(UnitVector *V);
|
void ShuffleCorpus(UnitVector *V);
|
||||||
void TryDetectingAMemoryLeak(const uint8_t *Data, size_t Size,
|
|
||||||
bool DuringInitialCorpusExecution);
|
|
||||||
void AddToCorpus(const Unit &U);
|
void AddToCorpus(const Unit &U);
|
||||||
void CheckExitOnSrcPosOrItem();
|
void CheckExitOnSrcPosOrItem();
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@ RUN: not LLVMFuzzer-LeakTest -runs=0 -detect_leaks=1 %S 2>&1 | FileCheck %s --ch
|
|||||||
LEAK_IN_CORPUS: ERROR: LeakSanitizer: detected memory leaks
|
LEAK_IN_CORPUS: ERROR: LeakSanitizer: detected memory leaks
|
||||||
LEAK_IN_CORPUS: INFO: a leak has been found in the initial corpus.
|
LEAK_IN_CORPUS: INFO: a leak has been found in the initial corpus.
|
||||||
|
|
||||||
|
RUN: not LLVMFuzzer-LeakTest -runs=100000000 %S/hi.txt 2>&1 | FileCheck %s --check-prefix=MULTI_RUN_LEAK
|
||||||
|
MULTI_RUN_LEAK-NOT: pulse
|
||||||
|
MULTI_RUN_LEAK: LeakSanitizer: detected memory leaks
|
||||||
|
|
||||||
RUN: not LLVMFuzzer-LeakTest -runs=100000 -detect_leaks=0 2>&1 | FileCheck %s --check-prefix=LEAK_AFTER
|
RUN: not LLVMFuzzer-LeakTest -runs=100000 -detect_leaks=0 2>&1 | FileCheck %s --check-prefix=LEAK_AFTER
|
||||||
RUN: not LLVMFuzzer-LeakTest -runs=100000 2>&1 | FileCheck %s --check-prefix=LEAK_DURING
|
RUN: not LLVMFuzzer-LeakTest -runs=100000 2>&1 | FileCheck %s --check-prefix=LEAK_DURING
|
||||||
|
Loading…
Reference in New Issue
Block a user