Commit dcca7d66 authored by Michael Niedermayer's avatar Michael Niedermayer

Revert "mpegvideo: remove abort() in ff_find_unused_picture()"

This reverts commit 4f820131.

It is better to abort() than to have remotly exploitable arbitrary code
execution bugs. Even more so that this abort has never been triggered
by any input people threw at it.
If after more extensive testing its removial is found safe we can remove
the abort() later.
parent e4622572
...@@ -1095,7 +1095,21 @@ int ff_find_unused_picture(MpegEncContext *s, int shared) ...@@ -1095,7 +1095,21 @@ int ff_find_unused_picture(MpegEncContext *s, int shared)
} }
} }
return AVERROR_INVALIDDATA; av_log(s->avctx, AV_LOG_FATAL,
"Internal error, picture buffer overflow\n");
/* We could return -1, but the codec would crash trying to draw into a
* non-existing frame anyway. This is safer than waiting for a random crash.
* Also the return of this is never useful, an encoder must only allocate
* as much as allowed in the specification. This has no relationship to how
* much libavcodec could allocate (and MAX_PICTURE_COUNT is always large
* enough for such valid streams).
* Plus, a decoder has to check stream validity and remove frames if too
* many reference frames are around. Waiting for "OOM" is not correct at
* all. Similarly, missing reference frames have to be replaced by
* interpolated/MC frames, anything else is a bug in the codec ...
*/
abort();
return -1;
} }
static void update_noise_reduction(MpegEncContext *s){ static void update_noise_reduction(MpegEncContext *s){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment