|  |  | @@ -307,6 +307,15 @@ int ff_h264_decode_seq_parameter_set(H264Context *h, int ignore_truncation) | 
		
	
		
			
			|  |  |  | int i, log2_max_frame_num_minus4; | 
		
	
		
			
			|  |  |  | SPS *sps; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | sps = av_mallocz(sizeof(SPS)); | 
		
	
		
			
			|  |  |  | if (!sps) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | sps->data_size = h->gb.buffer_end - h->gb.buffer; | 
		
	
		
			
			|  |  |  | if (sps->data_size > sizeof(sps->data)) | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | memcpy(sps->data, h->gb.buffer, sps->data_size); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | profile_idc           = get_bits(&h->gb, 8); | 
		
	
		
			
			|  |  |  | constraint_set_flags |= get_bits1(&h->gb) << 0;   // constraint_set0_flag | 
		
	
		
			
			|  |  |  | constraint_set_flags |= get_bits1(&h->gb) << 1;   // constraint_set1_flag | 
		
	
	
		
			
				|  |  | @@ -320,11 +329,8 @@ int ff_h264_decode_seq_parameter_set(H264Context *h, int ignore_truncation) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (sps_id >= MAX_SPS_COUNT) { | 
		
	
		
			
			|  |  |  | av_log(h->avctx, AV_LOG_ERROR, "sps_id %u out of range\n", sps_id); | 
		
	
		
			
			|  |  |  | return AVERROR_INVALIDDATA; | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | sps = av_mallocz(sizeof(SPS)); | 
		
	
		
			
			|  |  |  | if (!sps) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | sps->sps_id               = sps_id; | 
		
	
		
			
			|  |  |  | sps->time_offset_length   = 24; | 
		
	
	
		
			
				|  |  | @@ -603,6 +609,12 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | 
		
	
		
			
			|  |  |  | pps = av_mallocz(sizeof(PPS)); | 
		
	
		
			
			|  |  |  | if (!pps) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | pps->data_size = h->gb.buffer_end - h->gb.buffer; | 
		
	
		
			
			|  |  |  | if (pps->data_size > sizeof(pps->data)) { | 
		
	
		
			
			|  |  |  | ret = AVERROR_INVALIDDATA; | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | memcpy(pps->data, h->gb.buffer, pps->data_size); | 
		
	
		
			
			|  |  |  | pps->sps_id = get_ue_golomb_31(&h->gb); | 
		
	
		
			
			|  |  |  | if ((unsigned)pps->sps_id >= MAX_SPS_COUNT || | 
		
	
		
			
			|  |  |  | !h->sps_buffers[pps->sps_id]) { | 
		
	
	
		
			
				|  |  | 
 |