You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit '86e1a35802df42f51337d3fed8d5d99d0898c8bf'
* commit '86e1a35802df42f51337d3fed8d5d99d0898c8bf': h264_ps: Return meaningful error codes and address a memory leak Conflicts: libavcodec/h264_ps.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -559,7 +559,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h, int ignore_truncation) | ||||
|  | ||||
| fail: | ||||
|     av_free(sps); | ||||
|     return -1; | ||||
|     return AVERROR_INVALIDDATA; | ||||
| } | ||||
|  | ||||
| static void build_qp_table(PPS *pps, int t, int index, const int depth) | ||||
| @@ -593,6 +593,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | ||||
|     PPS *pps; | ||||
|     int qp_bd_offset; | ||||
|     int bits_left; | ||||
|     int ret; | ||||
|  | ||||
|     if (pps_id >= MAX_PPS_COUNT) { | ||||
|         av_log(h->avctx, AV_LOG_ERROR, "pps_id %u out of range\n", pps_id); | ||||
| @@ -606,6 +607,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | ||||
|     if ((unsigned)pps->sps_id >= MAX_SPS_COUNT || | ||||
|         !h->sps_buffers[pps->sps_id]) { | ||||
|         av_log(h->avctx, AV_LOG_ERROR, "sps_id %u out of range\n", pps->sps_id); | ||||
|         ret = AVERROR_INVALIDDATA; | ||||
|         goto fail; | ||||
|     } | ||||
|     sps = h->sps_buffers[pps->sps_id]; | ||||
| @@ -613,11 +615,13 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | ||||
|         av_log(h->avctx, AV_LOG_ERROR, | ||||
|                "Invalid luma bit depth=%d\n", | ||||
|                sps->bit_depth_luma); | ||||
|         ret = AVERROR_INVALIDDATA; | ||||
|         goto fail; | ||||
|     } else if (sps->bit_depth_luma == 11 || sps->bit_depth_luma == 13) { | ||||
|         av_log(h->avctx, AV_LOG_ERROR, | ||||
|                "Unimplemented luma bit depth=%d\n", | ||||
|                sps->bit_depth_luma); | ||||
|         ret = AVERROR_PATCHWELCOME; | ||||
|         goto fail; | ||||
|     } | ||||
|  | ||||
| @@ -663,6 +667,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | ||||
|     pps->ref_count[1] = get_ue_golomb(&h->gb) + 1; | ||||
|     if (pps->ref_count[0] - 1 > 32 - 1 || pps->ref_count[1] - 1 > 32 - 1) { | ||||
|         av_log(h->avctx, AV_LOG_ERROR, "reference overflow (pps)\n"); | ||||
|         ret = AVERROR_INVALIDDATA; | ||||
|         goto fail; | ||||
|     } | ||||
|  | ||||
| @@ -724,5 +729,5 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) | ||||
|  | ||||
| fail: | ||||
|     av_free(pps); | ||||
|     return -1; | ||||
|     return ret; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user