Damian Gryski
Damian Gryski
I implemented the ddmin minimization algorithm: https://github.com/dgryski/go-ddmin ; would be interesting to compare the results of this to what go-fuzz's techniques reduce it to.
ddmin is also O(n^2) time complexity. It also doesn't have any heuristics; it's just an systematic brute force approach to removing pieces of input. I would use it instead of...
The ddmin algorithm there is mine, just generalized away from []byte.
Current minimization code is https://github.com/dvyukov/go-fuzz/blob/34dea346b8c14573ea065f2a3654a7d85e1a8b0c/go-fuzz/worker.go#L322
Also https://github.com/aoh/radamsa
Alao https://github.com/jasantunes/reverx
I now have a rough initial implementation of sequitur, based on the reference C++ code: https://github.com/dgryski/go-sequitur
For `InsertRepeatedBytes` and `EraseBytes`, it looks like the code to work on is https://github.com/dvyukov/go-fuzz/blob/490b850ac16b7307e047fb1ea3d91dfc5e8154f4/go-fuzz/mutator.go#L39 libfuzzer strategies are: https://github.com/llvm-mirror/compiler-rt/blob/master/lib/fuzzer/FuzzerMutate.cpp
@dvyukov Is there any bug open to track the steps required for this to be integrated upstream?
I just meant the logical equivalent of symlinks, not actual on-disk ones.