-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
initial integration of jq. #4980
Conversation
Signed-off-by: David Korczynski <[email protected]>
Do you need to specify that the inputs are JSON? Do you need to specify an initial test corpus? |
Signed-off-by: David Korczynski <[email protected]>
Signed-off-by: David Korczynski <[email protected]>
Signed-off-by: David Korczynski <[email protected]>
How does this know what sorts of inputs to start with? |
Also, I sent you gmail addresses as well. |
Signed-off-by: David Korczynski <[email protected]>
Signed-off-by: David Korczynski <[email protected]>
Signed-off-by: David Korczynski <[email protected]>
+1
I imagine that starting with some test corpus might help find certain bugs faster than starting with one byte and going from there, but starting from one byte (or even no bytes) makes a lot of sense if you have lots of cycles to spare.
That's quite good!
Great! Thanks for the info! I'll see about making more fuzzer interface functions available for fuzzing the language too, not just the JSON parser, as well as for fuzzing the streaming JSON parser. Should these be differently named source files? |
@DavidKorczynski how would one fuzz things that need authentication? I'd like to write fuzzer functions for Heimdal, but much of that codebase deals in cryptographic network protocols (mainly Kerberos, but also PKI). One idea I have is that the fuzzer interface can just create credentials as needed and create an envelope with credentials around the payload provided by the fuzzer, but this will reduce coverage. Anyways, there must be examples of codebases like that that are in OSS-Fuzz. |
Also, is there a link for a dashboard to check the fuzzer's progress? |
That would be great! Feel free to take over and adjust things however you like. I'm also happy to continue contributing fuzzers upstream.
Am giving Heimdal a look now and will get back on this.
Yes, once this PR is merged you should be able to track things on https://oss-fuzz.com as well as introspector.oss-fuzz.com See https://introspector.oss-fuzz.com/project-profile?project=liblouis for an example of how progress can be tracked, as well as further links to code coverage reports and Fuzz Introspector reports. |
You could start with one of the Heimdal ASN.1 compiler's READMEs where I document how I've fuzzed it with AFL. ASN.1 of course doesn't have the credentials problem I mentioned above -- it's as easy to fuzz as |
There's also things like |
Looking at https://github.com/google/oss-fuzz/tree/master/projects/krb5 it looks like doing fuzz testing for cryptographic and/or stateful protocols is just hard. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Initial integration of jq. jq is a lightweight and flexible command-line JSON processor. It's a widely used command-line for handling json processing, and has more than 25K stars on Github. In essence am not sure which corporations use it as such (but I would assume many), but I use it frequently and would place it in some form of position similar to Binutils from a user perspective. It is, in essence, the
sed
command in the JSON world.@jonathanmetzman @oliverchang this one is ready for review!