-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Alternatively use afl-fuzzing #170
Comments
well, the thing is, crowbar calls you, you don't call crowbar 😅 . It requires an instrumented runtime and AFL is always the outer loop. |
Instrumented runtime might be easy. Crowbar has type src = Random of Random.State.t | Fd of Unix.file_descr Should be pretty simple to copy this behavior |
well you have to require that the user uses a specific AFL-enabled switch. |
Well, that's not strictly speaking necessary. You can always enable afl instrumentation in your project by using the |
Really? 🤯 good to know!! |
I'll make experimentation about that as soon as I can :) |
From what I did so far: the issue is that we lose control on generation using bytes only. let float : t float = fun st ->
let buf = read_bytes st 8 in
let x = EndianBytes.LittleEndian.get_double buf 0 in
let shrink a = fun () -> Shrink.float_towards 0. a () in
Tree.make_primitive shrink x We just randomly pick 8 bytes. Therefore, having controls is more delicate than we currently have, for instance, if we want a bounded float: let x = RS.float st bound in It's really easy using RS (as they did this work for us), and thus, would require us to break our generation. |
People were kind of fan of Crowbar because of Afl-fuzzing. I'm not fully aware about the witchcraft afl does, but it could be added as an optional way of generating bytes?
The text was updated successfully, but these errors were encountered: