@@ -672,11 +672,13 @@ int oapvd_vlc_frame_info(oapv_bs_t *bs, oapv_fi_t *fi)
672672 DUMP_HLS (fi -> frame_width , fi -> frame_width );
673673 oapv_assert_rv (fi -> frame_width > 0 && fi -> frame_width < 0xFFFFFFFF , OAPV_ERR_MALFORMED_BITSTREAM );
674674 fi -> frame_width += 1 ;
675+ oapv_assert_rv (fi -> frame_width <= INT_MAX , OAPV_ERR_UNSUPPORTED ); // frame width greater than 2^31 is unsupported in the current implementation
675676
676677 fi -> frame_height = oapv_bsr_read (bs , 32 );
677678 DUMP_HLS (fi -> frame_height , fi -> frame_height );
678679 oapv_assert_rv (fi -> frame_height > 0 && fi -> frame_height < 0xFFFFFFFF , OAPV_ERR_MALFORMED_BITSTREAM );
679680 fi -> frame_height += 1 ;
681+ oapv_assert_rv (fi -> frame_height <= INT_MAX , OAPV_ERR_UNSUPPORTED ); // frame height greater than 2^31 is unsupported in the current implementation
680682
681683 fi -> chroma_format_idc = oapv_bsr_read (bs , 4 );
682684 DUMP_HLS (fi -> chroma_format_idc , fi -> chroma_format_idc );
@@ -711,6 +713,7 @@ int oapvd_vlc_au_info(oapv_bs_t *bs, oapv_aui_t *aui)
711713
712714 aui -> num_frames = oapv_bsr_read (bs , 16 );
713715 DUMP_HLS (num_frames , aui -> num_frames );
716+ oapv_assert_rv (aui -> num_frames <= OAPV_MAX_NUM_FRAMES , OAPV_ERR_REACHED_MAX );
714717 for (int fidx = 0 ; fidx < aui -> num_frames ; fidx ++ ) {
715718 aui -> pbu_type [fidx ] = oapv_bsr_read (bs , 8 );
716719 DUMP_HLS (pbu_type , aui -> pbu_type [fidx ]);
0 commit comments