Issue 173205
Summary Add support for custom mutator only in libfuzzer
Labels new issue
Assignees
Reporter personnumber3377
    Hi!

Currently libfuzzer only supports using a custom mutator alongside the default mutation, however this is bad for certain types of programs which expect a highly structured input and which reject the input even if there is the smallest syntax error. I assume this code here:

```

MutationDispatcher::MutationDispatcher(Random &Rand,
 const FuzzingOptions &Options)
    : Rand(Rand), Options(Options) {
  DefaultMutators.insert(
 DefaultMutators.begin(),
      {
 {&MutationDispatcher::Mutate_EraseBytes, "EraseBytes"},
 {&MutationDispatcher::Mutate_InsertByte, "InsertByte"},
 {&MutationDispatcher::Mutate_InsertRepeatedBytes,
 "InsertRepeatedBytes"},
          {&MutationDispatcher::Mutate_ChangeByte, "ChangeByte"},
          {&MutationDispatcher::Mutate_ChangeBit, "ChangeBit"},
          {&MutationDispatcher::Mutate_ShuffleBytes, "ShuffleBytes"},
 {&MutationDispatcher::Mutate_ChangeASCIIInteger, "ChangeASCIIInt"},
 {&MutationDispatcher::Mutate_ChangeBinaryInteger, "ChangeBinInt"},
 {&MutationDispatcher::Mutate_CopyPart, "CopyPart"},
 {&MutationDispatcher::Mutate_CrossOver, "CrossOver"},
 {&MutationDispatcher::Mutate_AddWordFromManualDictionary,
 "ManualDict"},
 {&MutationDispatcher::Mutate_AddWordFromPersistentAutoDictionary,
 "PersAutoDict"},
      });
  if(Options.UseCmp)
 DefaultMutators.push_back(
 {&MutationDispatcher::Mutate_AddWordFromTORC, "CMP"});

  if (EF->LLVMFuzzerCustomMutator)
 Mutators.push_back({&MutationDispatcher::Mutate_Custom, "Custom"});
 else
    Mutators = DefaultMutators;

  if (EF->LLVMFuzzerCustomCrossOver)
    Mutators.push_back(
 {&MutationDispatcher::Mutate_CustomCrossOver, "CustomCrossOver"});
}

```

is responsible for the selection of the mutators. A simple addition would be to add an option to only use the custom mutators.

Is this possible? I may be able to implement this myself since this seems quite simple.

Thanks in advance!
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to