From 1be97a218ee265e51b2085db3a7f565311470210 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sun, 1 Jun 2008 02:28:33 +0000 Subject: [PATCH] memcpy considering output width, not src linesize, fix segv with av_picture_pad Originally committed as revision 13594 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/imgconvert.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index 6630954..6ef00c9 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -2063,7 +2063,7 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, uint8_t *iptr = src->data[i]; optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + (padleft >> x_shift); - memcpy(optr, iptr, src->linesize[i]); + memcpy(optr, iptr, (width - padleft - padright) >> x_shift); iptr += src->linesize[i]; optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + (dst->linesize[i] - (padright >> x_shift)); @@ -2071,7 +2071,7 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, for (y = 0; y < yheight; y++) { memset(optr, color[i], (padleft + padright) >> x_shift); memcpy(optr + ((padleft + padright) >> x_shift), iptr, - src->linesize[i]); + (width - padleft - padright) >> x_shift); iptr += src->linesize[i]; optr += dst->linesize[i]; } -- 2.7.4