diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c index aee8ccbf62..e227f58ec6 100644 --- a/libavcodec/mpeg4_unpack_bframes_bsf.c +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c @@ -126,7 +126,11 @@ static int mpeg4_unpack_bframes_filter(AVBSFContext *ctx, AVPacket *out) return ret; } - av_packet_from_data(out, s->b_frame_buf, s->b_frame_buf_size); + ret = av_packet_from_data(out, s->b_frame_buf, s->b_frame_buf_size); + if (ret < 0) { + av_packet_free(&in); + return ret; + } if (in->size <= MAX_NVOP_SIZE) { /* N-VOP */ av_log(ctx, AV_LOG_DEBUG, "Skipping N-VOP.\n");