forked from OSchip/llvm-project
Revert "[libFuzzer] Fix arguments of InsertPartOf/CopyPartOf calls in CrossOver mutator."
This reverts commit bb54bcf849
.
It is causing the value-profile-load.test test to fail on macOS.
This commit is contained in:
parent
63d9d56a55
commit
8831e34771
|
@ -425,26 +425,26 @@ size_t MutationDispatcher::Mutate_CrossOver(uint8_t *Data, size_t Size,
|
|||
if (!CrossOverWith) return 0;
|
||||
const Unit &O = *CrossOverWith;
|
||||
if (O.empty()) return 0;
|
||||
MutateInPlaceHere.resize(MaxSize);
|
||||
auto &U = MutateInPlaceHere;
|
||||
size_t NewSize = 0;
|
||||
switch(Rand(3)) {
|
||||
case 0:
|
||||
MutateInPlaceHere.resize(MaxSize);
|
||||
NewSize = CrossOver(Data, Size, O.data(), O.size(),
|
||||
MutateInPlaceHere.data(), MaxSize);
|
||||
memcpy(Data, MutateInPlaceHere.data(), NewSize);
|
||||
NewSize = CrossOver(Data, Size, O.data(), O.size(), U.data(), U.size());
|
||||
break;
|
||||
case 1:
|
||||
NewSize = InsertPartOf(O.data(), O.size(), Data, Size, MaxSize);
|
||||
NewSize = InsertPartOf(O.data(), O.size(), U.data(), U.size(), MaxSize);
|
||||
if (!NewSize)
|
||||
NewSize = CopyPartOf(O.data(), O.size(), Data, Size);
|
||||
NewSize = CopyPartOf(O.data(), O.size(), U.data(), U.size());
|
||||
break;
|
||||
case 2:
|
||||
NewSize = CopyPartOf(O.data(), O.size(), Data, Size);
|
||||
NewSize = CopyPartOf(O.data(), O.size(), U.data(), U.size());
|
||||
break;
|
||||
default: assert(0);
|
||||
}
|
||||
assert(NewSize > 0 && "CrossOver returned empty unit");
|
||||
assert(NewSize <= MaxSize && "CrossOver returned overisized unit");
|
||||
memcpy(Data, U.data(), NewSize);
|
||||
return NewSize;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,11 +4,10 @@
|
|||
|
||||
// Test for a fuzzer. The fuzzer must find the string
|
||||
// ABCDEFGHIJ
|
||||
// We use it as a test for each of CrossOver functionalities
|
||||
// by passing the following sets of two inputs to it:
|
||||
// {ABCDE00000, ZZZZZFGHIJ}
|
||||
// {ABCDEHIJ, ZFG} to specifically test InsertPartOf
|
||||
// {ABCDE00HIJ, ZFG} to specifically test CopyPartOf
|
||||
// We use it as a test for CrossOver functionality
|
||||
// by passing two inputs to it:
|
||||
// ABCDE00000
|
||||
// ZZZZZFGHIJ
|
||||
//
|
||||
#include <assert.h>
|
||||
#include <cstddef>
|
||||
|
@ -43,11 +42,13 @@ static const uint32_t ExpectedHash = 0xe1677acb;
|
|||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
|
||||
// fprintf(stderr, "ExpectedHash: %x\n", ExpectedHash);
|
||||
if (Size == 10 && ExpectedHash == simple_hash(Data, Size))
|
||||
*NullPtr = 0;
|
||||
if (Size != 10) return 0;
|
||||
if (*Data == 'A')
|
||||
Sink++;
|
||||
if (*Data == 'Z')
|
||||
Sink--;
|
||||
if (ExpectedHash == simple_hash(Data, Size))
|
||||
*NullPtr = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ RUN: echo -n ABCDE00000 > %t-corpus/A
|
|||
RUN: echo -n ZZZZZFGHIJ > %t-corpus/B
|
||||
|
||||
|
||||
RUN: not %run %t-CrossOverTest -max_len=10 -reduce_inputs=0 -seed=1 -runs=10000000 %t-corpus
|
||||
RUN: not %run %t-CrossOverTest -max_len=10 -seed=1 -runs=10000000 %t-corpus
|
||||
|
||||
# Test the same thing but using -seed_inputs instead of passing the corpus dir.
|
||||
RUN: not %run %t-CrossOverTest -max_len=10 -reduce_inputs=0 -seed=1 -runs=10000000 -seed_inputs=%t-corpus/A,%t-corpus/B
|
||||
RUN: not %run %t-CrossOverTest -max_len=10 -seed=1 -runs=10000000 -seed_inputs=%t-corpus/A,%t-corpus/B
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
# Tests CrossOver CopyPartOf.
|
||||
# We want to make sure that the test can find the input
|
||||
# ABCDEFGHIJ when given two other inputs in the seed corpus:
|
||||
# ABCDE00HIJ and
|
||||
# (Z) FG
|
||||
#
|
||||
RUN: %cpp_compiler %S/CrossOverTest.cpp -o %t-CrossOverTest
|
||||
|
||||
RUN: rm -rf %t-corpus
|
||||
RUN: mkdir %t-corpus
|
||||
RUN: echo -n ABCDE00HIJ > %t-corpus/A
|
||||
RUN: echo -n ZFG > %t-corpus/B
|
||||
|
||||
|
||||
RUN: not %run %t-CrossOverTest -mutate_depth=1 -max_len=1024 -reduce_inputs=0 -seed=1 -runs=10000000 %t-corpus 2>&1 | FileCheck %s
|
||||
|
||||
# Test the same thing but using -seed_inputs instead of passing the corpus dir.
|
||||
RUN: not %run %t-CrossOverTest -mutate_depth=1 -max_len=1024 -reduce_inputs=0 -seed=1 -runs=10000000 -seed_inputs=%t-corpus/A,%t-corpus/B 2>&1 | FileCheck %s
|
||||
|
||||
CHECK: MS: 1 CrossOver-
|
|
@ -1,20 +0,0 @@
|
|||
# Tests CrossOver InsertPartOf.
|
||||
# We want to make sure that the test can find the input
|
||||
# ABCDEFGHIJ when given two other inputs in the seed corpus:
|
||||
# ABCDE HIJ and
|
||||
# (Z) FG
|
||||
#
|
||||
RUN: %cpp_compiler %S/CrossOverTest.cpp -o %t-CrossOverTest
|
||||
|
||||
RUN: rm -rf %t-corpus
|
||||
RUN: mkdir %t-corpus
|
||||
RUN: echo -n ABCDEHIJ > %t-corpus/A
|
||||
RUN: echo -n ZFG > %t-corpus/B
|
||||
|
||||
|
||||
RUN: not %run %t-CrossOverTest -mutate_depth=1 -max_len=1024 -reduce_inputs=0 -seed=1 -runs=10000000 %t-corpus 2>&1 | FileCheck %s
|
||||
|
||||
# Test the same thing but using -seed_inputs instead of passing the corpus dir.
|
||||
RUN: not %run %t-CrossOverTest -mutate_depth=1 -max_len=1024 -reduce_inputs=0 -seed=1 -runs=10000000 -seed_inputs=%t-corpus/A,%t-corpus/B 2>&1 | FileCheck %s
|
||||
|
||||
CHECK: MS: 1 CrossOver-
|
Loading…
Reference in New Issue