hevc: make pps/sps ids unsigned where necessary
Fixes integer overflow and out of array accesses. Found-by: Mateusz j00ru Jurczyk and Gynvael Coldwind (cherry picked from commit 4d33873c2990b8d6096f60fef384f0efc4482b55)
This commit is contained in:
parent
fa6b99d351
commit
ca2c9d6b9b
@ -463,7 +463,7 @@ typedef struct HEVCSPS {
|
|||||||
} HEVCSPS;
|
} HEVCSPS;
|
||||||
|
|
||||||
typedef struct HEVCPPS {
|
typedef struct HEVCPPS {
|
||||||
int sps_id; ///< seq_parameter_set_id
|
unsigned int sps_id; ///< seq_parameter_set_id
|
||||||
|
|
||||||
uint8_t sign_data_hiding_flag;
|
uint8_t sign_data_hiding_flag;
|
||||||
|
|
||||||
|
@ -609,8 +609,8 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
|
|||||||
{
|
{
|
||||||
const AVPixFmtDescriptor *desc;
|
const AVPixFmtDescriptor *desc;
|
||||||
GetBitContext *gb = &s->HEVClc.gb;
|
GetBitContext *gb = &s->HEVClc.gb;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int sps_id = 0;
|
unsigned int sps_id = 0;
|
||||||
int log2_diff_max_min_transform_block_size;
|
int log2_diff_max_min_transform_block_size;
|
||||||
int bit_depth_chroma, start, vui_present, sublayer_ordering_info;
|
int bit_depth_chroma, start, vui_present, sublayer_ordering_info;
|
||||||
int i;
|
int i;
|
||||||
@ -988,8 +988,8 @@ int ff_hevc_decode_nal_pps(HEVCContext *s)
|
|||||||
int pic_area_in_ctbs, pic_area_in_min_cbs, pic_area_in_min_tbs;
|
int pic_area_in_ctbs, pic_area_in_min_cbs, pic_area_in_min_tbs;
|
||||||
int log2_diff_ctb_min_tb_size;
|
int log2_diff_ctb_min_tb_size;
|
||||||
int i, j, x, y, ctb_addr_rs, tile_id;
|
int i, j, x, y, ctb_addr_rs, tile_id;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int pps_id = 0;
|
unsigned int pps_id = 0;
|
||||||
|
|
||||||
AVBufferRef *pps_buf;
|
AVBufferRef *pps_buf;
|
||||||
HEVCPPS *pps = av_mallocz(sizeof(*pps));
|
HEVCPPS *pps = av_mallocz(sizeof(*pps));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user