mirror of https://git.ffmpeg.org/ffmpeg.git
vulkan_h264: check if slices_buf exists on end_frame
The issue is that while decode_slice is guaranteed to never get called without start_frame, end_frame is not. Moreover, it is not guaranteed it won't be called twice. On a badly-broken sample, this is what happens, which leads to a segfault, as vp->slices_buf doesn't exist, as it has been handed off for decoding already and isn't owned by the frame. Return an error as it's indicative that it's a corrupt stream rather than just missing any slices. Prevents a segfault.
This commit is contained in:
parent
10f1bbfe11
commit
c39e861a3d
|
@ -520,6 +520,9 @@ static int vk_h264_end_frame(AVCodecContext *avctx)
|
||||||
if (!hp->h264_pic_info.sliceCount)
|
if (!hp->h264_pic_info.sliceCount)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!vp->slices_buf)
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
if (!dec->session_params) {
|
if (!dec->session_params) {
|
||||||
int err = vk_h264_create_params(avctx, &dec->session_params);
|
int err = vk_h264_create_params(avctx, &dec->session_params);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
|
Loading…
Reference in New Issue