<div dir="ltr"><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><span style="margin:0px;padding:0px;border:0px;font-family:'Courier New'">##################################################################</span></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">    *---------------------------------------------------*</font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">    *    fuzzpy: CPython fuzz tester is now available   *</font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">    *                                                   *</font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">    *                   Version 0.8                     *</font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">    *        <a href="https://bitbucket.org/ebadf/fuzzpy/">https://bitbucket.org/ebadf/fuzzpy/</a>        *</font></div><div style="margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif;font-size:13px"><span style="font-family:'Courier New'">    *-----------------------------</span><span style="font-family:'Courier New'">----------------------*</span><br></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">I am pleased to announce the creation of a coverage-guided fuzz tester for CPython.  It's a pretty small wrapper around LLVM's libFuzzer that enables some powerful testing logic.  AFL (American Fuzzy Lop) is another popular fuzzer lately -- libFuzzer is very similar in concept to AFL.  From what I've read on list archives, Victor Stinner had previously done some good fuzz testing on CPython using fusil.  This project should expand on that concept.</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">I'd love to get feedback, suggestions, patches and anything else the list can offer.</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">Q: What is fuzzpy for?</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">A: It's primarily for testing CPython itself, but could also be used for individual python projects too.  Pure-python projects will be the simplest to integrate at this point.  Also, interesting test cases output by fuzzpy may end up being useful in testing others such as pypy, pyston, etc.</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">Q: What is a fuzz tester?</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">A: It modifies inputs to a test case in order to find unique/rare failures.</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="Courier New">Q: What does "coverage-guided" mean?</font></div><div><font face="Courier New">A: It means that libFuzzer is able to witness the specific code executed as a result of a given test case.  It feeds this information back into an engine to modify the test cases to optimize for coverage.</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px"><br></font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">Q: How can I help?</font></div><div><font face="'Courier New'" style="margin:0px;padding:0px;border:0px">A1: donate cycles: build the project and crank away on one of the existing tests.  Relative to other common fuzzing, it's awfully slow, so consider throwing as many cycles as you can afford to.</font></div><div><span style="font-family:'Courier New'">A2: contribute tests: write a ~10-line python script that exercises a feature that you think could benefit from fuzz testing.</span><br></div><div><div><font face="Courier New">A3: if there's interest, I can accept cryptocoin donations to purchase cycles on a cloud server.</font></div></div><div><br></div><div><font face="Courier New"><br></font></div><div><div style="font-size:13px;margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif"><span style="margin:0px;padding:0px;border:0px;font-family:'Courier New'">##################################################################</span></div></div><div><span style="margin:0px;padding:0px;border:0px;font-family:'Courier New'"><br></span></div><div><br></div>-- <br><div class="gmail_signature">-Brian</div>
</div>