|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 04/14] fuzz/x86_emulate: Add a better input size check
On Fri, Aug 25, 2017 at 05:43:33PM +0100, George Dunlap wrote:
> For some reason the 'feof()' check for the file size isn't working in
> llvm-clang-fast mode; the result is several kilobyte files rather than
> the 4k limit files as we've requested. This is bad in part because
> AFL will spend time trying to "fuzz" bits of the input that are never
> touched.
>
You mean feof returns non-zero (true) when it shouldn't?
> Add a new check: Offer to read INPUT_SIZE + 1; if we actually get that
> many bytes, return an error.
>
> Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
> ---
> CC: Ian Jackson <ian.jackson@xxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Jan Beulich <jbeulich@xxxxxxxx>
> ---
> tools/fuzz/x86_instruction_emulator/afl-harness.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/fuzz/x86_instruction_emulator/afl-harness.c
> b/tools/fuzz/x86_instruction_emulator/afl-harness.c
> index 1a79ff228e..51e0183356 100644
> --- a/tools/fuzz/x86_instruction_emulator/afl-harness.c
> +++ b/tools/fuzz/x86_instruction_emulator/afl-harness.c
> @@ -76,7 +76,7 @@ int main(int argc, char **argv)
> }
> }
>
> - size = fread(input, 1, INPUT_SIZE, fp);
> + size = fread(input, 1, INPUT_SIZE + 1, fp);
You probably want to actual define input to be of INPUT_SIZE+1 byte as well.
I doubt address sanitiser will be happy with overrunning the buffer.
>
> if ( ferror(fp) )
> {
> @@ -84,7 +84,7 @@ int main(int argc, char **argv)
> exit(-1);
> }
>
> - if ( !feof(fp) )
> + if ( !feof(fp) || size > INPUT_SIZE )
> {
> printf("Input too large\n");
> exit(-1);
> --
> 2.14.1
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |