Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2020-12-11 03:41:59 +0300
committerHenrik Gramner <henrik@gramner.com>2020-12-11 03:41:59 +0300
commitf0f73b4cff0bfb2d2fa9bfa0a7656ddadf526ae1 (patch)
treeb8efe7825bad3f58fef8be73cac5d6381e6840f0 /tests
parent135286f4796fe5dc26cf37b73a2c3df4cfa85792 (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.c19
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);