提交 52a44d50 编写于 作者: D Derek Buitenhuis

h264_picture: Actually return error during alloc failure

Fixes NULL dereference during alloc failure.
Signed-off-by: NDerek Buitenhuis <derek.buitenhuis@gmail.com>
上级 ffc01280
...@@ -78,24 +78,30 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) ...@@ -78,24 +78,30 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
dst->qscale_table_buf = av_buffer_ref(src->qscale_table_buf); dst->qscale_table_buf = av_buffer_ref(src->qscale_table_buf);
dst->mb_type_buf = av_buffer_ref(src->mb_type_buf); dst->mb_type_buf = av_buffer_ref(src->mb_type_buf);
if (!dst->qscale_table_buf || !dst->mb_type_buf) if (!dst->qscale_table_buf || !dst->mb_type_buf) {
ret = AVERROR(ENOMEM);
goto fail; goto fail;
}
dst->qscale_table = src->qscale_table; dst->qscale_table = src->qscale_table;
dst->mb_type = src->mb_type; dst->mb_type = src->mb_type;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]); dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]);
dst->ref_index_buf[i] = av_buffer_ref(src->ref_index_buf[i]); dst->ref_index_buf[i] = av_buffer_ref(src->ref_index_buf[i]);
if (!dst->motion_val_buf[i] || !dst->ref_index_buf[i]) if (!dst->motion_val_buf[i] || !dst->ref_index_buf[i]) {
ret = AVERROR(ENOMEM);
goto fail; goto fail;
}
dst->motion_val[i] = src->motion_val[i]; dst->motion_val[i] = src->motion_val[i];
dst->ref_index[i] = src->ref_index[i]; dst->ref_index[i] = src->ref_index[i];
} }
if (src->hwaccel_picture_private) { if (src->hwaccel_picture_private) {
dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf); dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf);
if (!dst->hwaccel_priv_buf) if (!dst->hwaccel_priv_buf) {
ret = AVERROR(ENOMEM);
goto fail; goto fail;
}
dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data; dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册