mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-13 18:40:03 +01:00
avcodec/hevcdec: Avoid null pointer dereferences in MC
Fixes: runtime error: pointer index expression with base 0x000000000000 overflowed to 0xfffffffffffffff8
Fixes: 58440/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5956015530311680
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit a0f4d4e650)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
@@ -1892,13 +1892,13 @@ static void hls_prediction_unit(HEVCContext *s, int x0, int y0,
|
|||||||
|
|
||||||
if (current_mv.pred_flag & PF_L0) {
|
if (current_mv.pred_flag & PF_L0) {
|
||||||
ref0 = refPicList[0].ref[current_mv.ref_idx[0]];
|
ref0 = refPicList[0].ref[current_mv.ref_idx[0]];
|
||||||
if (!ref0)
|
if (!ref0 || !ref0->frame->data[0])
|
||||||
return;
|
return;
|
||||||
hevc_await_progress(s, ref0, ¤t_mv.mv[0], y0, nPbH);
|
hevc_await_progress(s, ref0, ¤t_mv.mv[0], y0, nPbH);
|
||||||
}
|
}
|
||||||
if (current_mv.pred_flag & PF_L1) {
|
if (current_mv.pred_flag & PF_L1) {
|
||||||
ref1 = refPicList[1].ref[current_mv.ref_idx[1]];
|
ref1 = refPicList[1].ref[current_mv.ref_idx[1]];
|
||||||
if (!ref1)
|
if (!ref1 || !ref1->frame->data[0])
|
||||||
return;
|
return;
|
||||||
hevc_await_progress(s, ref1, ¤t_mv.mv[1], y0, nPbH);
|
hevc_await_progress(s, ref1, ¤t_mv.mv[1], y0, nPbH);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user