mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +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:
commit
037c9c25e6
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user