Skip to content

Add an option to limit the maximum decode frame size

Chromium's fuzzer found an OOM. It's not entirely dav1d's fault. The frame is huge (48,000 x 32,256), so it's not surprising the allocation fails on a 32-bit system (and dav1d correctly checks for malloc failure, which is good).

But this could lead an application to OOM and for the OS to terminate it. A simple, but effective, defensive strategy would be to do something like libvpx's configurable --size-limit. dav1d could have a configurable size limit (either at compile time or at run time via Dav1dSettings) and raise an error if a frame exceeds the size limit (thus avoiding huge malloc calls).

This would also assist fuzzing (minimizing the false positives from OOMs like this, for example).

Edited by Michael Bradshaw
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information