diff options
author | Henrik Gramner <gramner@twoorioles.com> | 2020-12-11 03:41:59 +0300 |
---|---|---|
committer | Henrik Gramner <henrik@gramner.com> | 2020-12-11 03:41:59 +0300 |
commit | f0f73b4cff0bfb2d2fa9bfa0a7656ddadf526ae1 (patch) | |
tree | b8efe7825bad3f58fef8be73cac5d6381e6840f0 /tests | |
parent | 135286f4796fe5dc26cf37b73a2c3df4cfa85792 (diff) |
fuzzer: Test calling dav1d_picture_unref() after dav1d_close()
Covers the use case of keeping a reference to a Dav1dPicture
after closing the decoder.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/libfuzzer/dav1d_fuzzer.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tests/libfuzzer/dav1d_fuzzer.c b/tests/libfuzzer/dav1d_fuzzer.c index bd040a8..c7de05e 100644 --- a/tests/libfuzzer/dav1d_fuzzer.c +++ b/tests/libfuzzer/dav1d_fuzzer.c @@ -178,12 +178,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) dav1d_data_unref(&buf); } - do { - memset(&pic, 0, sizeof(pic)); - err = dav1d_get_picture(ctx, &pic); - if (err == 0) - dav1d_picture_unref(&pic); - } while (err != DAV1D_ERR(EAGAIN)); + memset(&pic, 0, sizeof(pic)); + if ((err = dav1d_get_picture(ctx, &pic)) == 0) { + /* Test calling dav1d_picture_unref() after dav1d_close() */ + do { + Dav1dPicture pic2 = { 0 }; + if ((err = dav1d_get_picture(ctx, &pic2)) == 0) + dav1d_picture_unref(&pic2); + } while (err != DAV1D_ERR(EAGAIN)); + + dav1d_close(&ctx); + dav1d_picture_unref(&pic); + return 0; + } cleanup: dav1d_flush(ctx); |