Commit 373fd76b authored by Anton Khirnov's avatar Anton Khirnov

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: libav-stable@libav.org
parent 0fea8555
...@@ -479,17 +479,16 @@ static int hls_slice_header(HEVCContext *s) ...@@ -479,17 +479,16 @@ static int hls_slice_header(HEVCContext *s)
s->ps.pps = (HEVCPPS*)s->ps.pps_list[sh->pps_id]->data; 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) { 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; enum AVPixelFormat pix_fmt;
s->ps.sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data;
ff_hevc_clear_refs(s); ff_hevc_clear_refs(s);
pix_fmt = get_format(s, s->ps.sps); pix_fmt = get_format(s, sps);
if (pix_fmt < 0) if (pix_fmt < 0)
return pix_fmt; return pix_fmt;
ret = set_sps(s, s->ps.sps, pix_fmt); ret = set_sps(s, sps, pix_fmt);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment