Exploring Input Parsers with Fast Failure Feedback
Description
If we have a program for which neither code nor traces nor input samples nor input specifications are available, how can we generate test inputs? In this paper, we show that this is possible if the program provides failure feedback--that is, information on whether an input is valid or not, and whether the input can be considered a prefix of a valid input (i.e. incomplete) or not. Such feedback is available out of the box (or very easy to implement) for numerous input processors such as microprocessors, compilers, user interfaces, and off-the-shelf parsers. Given this feedback, we show that it is possible to quickly generate any input that will be accepted by the program, by systematically enumerating and testing input continuations. We have implemented our technique in a prototype called DECODER. In its evaluation on five subjects, DECODER is effective and efficient even in comparison to instrumentation-based competition.
Files
Files
(7.2 GB)
Name | Size | Download all |
---|---|---|
md5:982aef44973bf32722e1ed72332fd6a9
|
7.2 GB | Download |
md5:ab1e8f9f2838cb7837fa4fce2f1dc213
|
2.6 kB | Download |