mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/h264_slice: Clear top_borders on allocation
In case of bitstream errors the deblock filter and slices can access uninitialized top_borders from previous slices which did not fill them as they stoped halfway due to error or where entirely missing. This also makes code using these tables deterministic in case of missing or damaged slices Found-by: Tyson Smith Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
fc91eeab0b
commit
6f37226b68
|
@ -171,9 +171,9 @@ static int alloc_scratch_buffers(H264SliceContext *sl, int linesize)
|
||||||
// (= 21x21 for h264)
|
// (= 21x21 for h264)
|
||||||
av_fast_malloc(&sl->edge_emu_buffer, &sl->edge_emu_buffer_allocated, alloc_size * 2 * 21);
|
av_fast_malloc(&sl->edge_emu_buffer, &sl->edge_emu_buffer_allocated, alloc_size * 2 * 21);
|
||||||
|
|
||||||
av_fast_malloc(&sl->top_borders[0], &sl->top_borders_allocated[0],
|
av_fast_mallocz(&sl->top_borders[0], &sl->top_borders_allocated[0],
|
||||||
h->mb_width * 16 * 3 * sizeof(uint8_t) * 2);
|
h->mb_width * 16 * 3 * sizeof(uint8_t) * 2);
|
||||||
av_fast_malloc(&sl->top_borders[1], &sl->top_borders_allocated[1],
|
av_fast_mallocz(&sl->top_borders[1], &sl->top_borders_allocated[1],
|
||||||
h->mb_width * 16 * 3 * sizeof(uint8_t) * 2);
|
h->mb_width * 16 * 3 * sizeof(uint8_t) * 2);
|
||||||
|
|
||||||
if (!sl->bipred_scratchpad || !sl->edge_emu_buffer ||
|
if (!sl->bipred_scratchpad || !sl->edge_emu_buffer ||
|
||||||
|
|
Loading…
Reference in New Issue