Module: libav Branch: release/12 Commit: 3293b49db210b13d09adcacd898334d5e4cb3aac
Author: Anton Khirnov <[email protected]> Committer: Anton Khirnov <[email protected]> Date: Sun Dec 18 22:06:32 2016 +0100 hevcdec: do not set decoder-global SPS prematurely It should only be set after the decoder state has been fully initialized for using that SPS. Fixes possible invalid reads on get_format() failure. CC: [email protected] (cherry picked from commit 373fd76b4dbd9aa03ed28e502f33f2ca8c1ce19a) Signed-off-by: Anton Khirnov <[email protected]> --- libavcodec/hevc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c index 7061d66..e168d7e 100644 --- a/libavcodec/hevc.c +++ b/libavcodec/hevc.c @@ -477,17 +477,16 @@ static int hls_slice_header(HEVCContext *s) s->ps.pps = (HEVCPPS*)s->ps.pps_list[sh->pps_id]->data; if (s->ps.sps != (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data) { + const HEVCSPS *sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data; enum AVPixelFormat pix_fmt; - s->ps.sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data; - ff_hevc_clear_refs(s); - pix_fmt = get_format(s, s->ps.sps); + pix_fmt = get_format(s, sps); if (pix_fmt < 0) return pix_fmt; - ret = set_sps(s, s->ps.sps, pix_fmt); + ret = set_sps(s, sps, pix_fmt); if (ret < 0) return ret; _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
