diff options
author | Janne Grunau <janne-vlc@jannau.net> | 2018-11-15 22:35:27 +0300 |
---|---|---|
committer | Janne Grunau <janne-vlc@jannau.net> | 2018-11-16 00:29:05 +0300 |
commit | 14388c3c6b53a5c2fea329e36693fd092042d392 (patch) | |
tree | 024dfb336f7c2176c5d983827d64768b91247b2b | |
parent | e890a66f773d12d0680a6fe50807800921dac504 (diff) |
call dav1d_get_picture() until it returns -EAGAIN for draining
With the decoupled decoding data there might be remaining input data during
draining which can cause bitstream parsing errors.
-rw-r--r-- | tests/libfuzzer/dav1d_fuzzer.c | 2 | ||||
-rw-r--r-- | tools/dav1d.c | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/tests/libfuzzer/dav1d_fuzzer.c b/tests/libfuzzer/dav1d_fuzzer.c index 08de3d9..18d012b 100644 --- a/tests/libfuzzer/dav1d_fuzzer.c +++ b/tests/libfuzzer/dav1d_fuzzer.c @@ -121,7 +121,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) err = dav1d_get_picture(ctx, &pic); if (err == 0) dav1d_picture_unref(&pic); - } while (err == 0); + } while (err != -EAGAIN); cleanup: dav1d_flush(ctx); diff --git a/tools/dav1d.c b/tools/dav1d.c index 3d01279..f7dfd05 100644 --- a/tools/dav1d.c +++ b/tools/dav1d.c @@ -151,9 +151,10 @@ int main(const int argc, char *const *const argv) { if (res != -EAGAIN) { fprintf(stderr, "Error decoding frame: %s\n", strerror(-res)); - } else + } else { res = 0; - break; + break; + } } else { if (!n_out) { if ((res = output_open(&out, cli_settings.muxer, |