# HG changeset patch # User michael # Date 1029956904 0 # Node ID d03fad6123a3297beb74344618c496f7c26c3fd3 # Parent a5b2b377ab5022f45e44ae487097157b43b30a77 asserts to check buffer size and non overlapingness diff -r a5b2b377ab50 -r d03fad6123a3 libmpcodecs/vd_ffmpeg.c --- a/libmpcodecs/vd_ffmpeg.c Tue Aug 20 14:15:25 2002 +0000 +++ b/libmpcodecs/vd_ffmpeg.c Wed Aug 21 19:08:24 2002 +0000 @@ -351,6 +351,21 @@ if(avctx->dr_uvstride && avctx->dr_uvstride !=mpi->stride[1]){ mp_msg(MSGT_DECVIDEO,MSGL_ERR, "Error: uvstride changed\n"); } + + assert(mpi->width >= ((width +align)&(~align))); + assert(mpi->height >= ((height+align)&(~align))); + assert(mpi->stride[0] >= mpi->width); + if(mpi->imgfmt==IMGFMT_I420 || mpi->imgfmt==IMGFMT_YV12 || mpi->imgfmt==IMGFMT_IYUV){ + const int y_size= mpi->stride[0] * mpi->height; + const int c_size= mpi->stride[1] * mpi->chroma_height; + + assert(mpi->planes[0] > mpi->planes[1] || mpi->planes[0] + y_size <= mpi->planes[1]); + assert(mpi->planes[0] > mpi->planes[2] || mpi->planes[0] + y_size <= mpi->planes[2]); + assert(mpi->planes[1] > mpi->planes[0] || mpi->planes[1] + c_size <= mpi->planes[0]); + assert(mpi->planes[1] > mpi->planes[2] || mpi->planes[1] + c_size <= mpi->planes[2]); + assert(mpi->planes[2] > mpi->planes[0] || mpi->planes[2] + c_size <= mpi->planes[0]); + assert(mpi->planes[2] > mpi->planes[1] || mpi->planes[2] + c_size <= mpi->planes[1]); + } avctx->dr_stride = mpi->stride[0]; avctx->dr_uvstride = mpi->stride[1];