Commit Graph

4 Commits

Author SHA1 Message Date
Thomas Orgis 356f2b9476 mpg123: limit fuzzer runtime (#2832)
* mpg123: limit runtime of decode_fuzzer

To avoid spurious timeout reports, the test shall end after 10000 MPEG frames
or 1 MiB of data, which should both be reasonable numbers. The timeout
report motivating this had 500K with 140k bad frames. The limit of
10000 frames corresponds to a normal radio song as MP3 stream.

* mpg123: limit runtime of read_fuzzer

This applies the same logic as the decode fuzzer: stop decoding after
10000 MPEG frames or 1 MiB of input data. We could debate a bigger
limit on the data size, but we do want compact testcases, right?
2019-09-16 07:06:25 -07:00
Max Moroz 227ee9f107
[mpg123] Use FuzzedDataProvider instead of byte_stream. (#2810) 2019-09-06 09:47:12 -07:00
Thomas Orgis 0a100f4c1c [mpg123] silence library error messages (#2642)
* mpg123/read_fuzzer: disable error messages from libmpg123

This shall remove any error messages libmpg123 prints out during fuzzing,
leaving only the crash trace at the inevitable end.
2019-07-31 12:57:00 -07:00
Markus Kusano 2ae303bc3b Add mpg123_decode fuzzer (#2037)
* Add fuzzer for mpg123_decode.

This fuzzes a different and non-filebased API that read_fuzzer.c.
mpg123_decode is, however, streaming based so we need to chunk the
fuzzer's input into multiple pieces, and pass them to the library. This
is pretty annoying to do by hand so I've introduced byte_stream.h to do
this automatically. Sadly, byte_stream.h is very C++ so the
decode_fuzzer is also C++ now. This isn't ideal since mpg123 is a
C library but this is the easiest way to do it.

* Do not carry next input within std::string.

* Malloc a new buffer for each decode invocation.

I used malloc instead of new since ideally this fuzz target would be
written in C.
2018-12-21 11:20:00 -08:00