@ -90,6 +90,7 @@ typedef struct G2MContext {
int compression ;
int width , height , bpp ;
int orig_width , orig_height ;
int tile_width , tile_height ;
int tiles_x , tiles_y , tile_x , tile_y ;
@ -712,8 +713,8 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
}
c - > width = bytestream2_get_be32 ( & bc ) ;
c - > height = bytestream2_get_be32 ( & bc ) ;
if ( c - > width < 16 | | c - > width > av ctx - > width | |
c - > height < 16 | | c - > height > av ctx - > height ) {
if ( c - > width < 16 | | c - > width > c - > orig_ width | |
c - > height < 16 | | c - > height > c - > orig_ height) {
av_log ( avctx , AV_LOG_ERROR ,
" Invalid frame dimensions %dx%d \n " ,
c - > width , c - > height ) ;
@ -882,6 +883,10 @@ static av_cold int g2m_decode_init(AVCodecContext *avctx)
avctx - > pix_fmt = AV_PIX_FMT_RGB24 ;
// store original sizes and check against those if resize happens
c - > orig_width = avctx - > width ;
c - > orig_height = avctx - > height ;
return 0 ;
}