The project midterm was crossed. It's time to sum up the things.
Things done:
The fuzzer able to generate qcow2 headers! Not impressive, huh? Okey, let's look closer.
Next problems were solved:
- Variability of the generated images with compliance of qcow2 standard
- Intelligent randomization of different types of data, as integers, bitmasks and strings
- Execution of tests without human interactions.
And voila! We have the fuzzer that can generated various valid images, fuzz their fields dependently on their types and do it again and again until you get bored.
Things to be done:
Well, awful amount of work to be honest.
- Generation of remaining image elements
- Refinement of fuzzing values based on test coverage
- Restore the test runner state to the simple and light-weight from the current 'ZOMBG-I-am-Jack-Of-All-Trades!!!11' one.
Things learnt:
More than I expected, really.
Achievements unlocked:
'Zoo keeper' - more than 100 lines of the code compatible with Python 2.4-2.7 versions
'Snake-charmer' - know at least three types of module imports, decorators, magic methods and implement all of them without googling
'Master of willpower' - work at home 40 hours in a week at the table having at arm's length a downy bed warmed by your cats
'Dr. Web' - successfully communicate with a distributed team
'Soft paws' - don't bother your mentors after a midnight because of different time zones (unlocks with 'Dr. Web')
'POST' - send a patch for the production branch (prerequisite for '201' - have a patch merged to the production brunch)
Resume:
The project gives me a feeling of incomparable satisfaction. I like all challenges and fun I have doing this work.