diff options
author | James Almer <jamrial@gmail.com> | 2019-03-18 23:25:58 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-03-21 01:53:12 +0300 |
commit | 70c8c8a818f39bc262565ec29fae2baffb3e1660 (patch) | |
tree | 0a3b9131419033bbb8f743ccc5041806f5720d5d /libavcodec/hevcdec.c | |
parent | 3ac474892c38b78a634dd32a94b4c1a4d24bed9c (diff) |
avcodec/hevcdec: decode at most one slice reporting being the first in the picture
Fixes deadlocks when decoding packets containing more than one of the aforementioned
slices when using frame threads.
Tested-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/hevcdec.c')
-rw-r--r-- | libavcodec/hevcdec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 967f8f1def..86adab0ae1 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -2927,6 +2927,10 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) } if (s->sh.first_slice_in_pic_flag) { + if (s->ref) { + av_log(s->avctx, AV_LOG_ERROR, "Two slices reporting being the first in the same frame.\n"); + goto fail; + } if (s->max_ra == INT_MAX) { if (s->nal_unit_type == HEVC_NAL_CRA_NUT || IS_BLA(s)) { s->max_ra = s->poc; |