avcodec/g2meet: Fix framebuf size

Currently the code can in some cases draw tiles that hang outside the
allocated buffer. This patch increases the buffer size to avoid out
of array accesses. An alternative would be to fail if such tiles are
encountered.
I do not know if any valid files use such hanging tiles.

Fixes Ticket2971
Found-by: ami_stuff
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e07ac727c1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer
2013-09-21 23:34:11 +02:00
parent 0a64b25c77
commit 2b06f5f8f1

View File

@@ -443,8 +443,8 @@ static int g2m_init_buffers(G2MContext *c)
int aligned_height; int aligned_height;
if (!c->framebuf || c->old_width < c->width || c->old_height < c->height) { if (!c->framebuf || c->old_width < c->width || c->old_height < c->height) {
c->framebuf_stride = FFALIGN(c->width * 3, 16); c->framebuf_stride = FFALIGN(c->width + 15, 16) * 3;
aligned_height = FFALIGN(c->height, 16); aligned_height = c->height + 15;
av_free(c->framebuf); av_free(c->framebuf);
c->framebuf = av_mallocz(c->framebuf_stride * aligned_height); c->framebuf = av_mallocz(c->framebuf_stride * aligned_height);
if (!c->framebuf) if (!c->framebuf)