diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-06-10 18:17:50 +0200 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-06-16 00:30:13 +0200 |
commit | f0394f28c38fffe05b3b4b3c1d8c00d9defb6ecc (patch) | |
tree | edb21a6352d7aadd7263ce5ca16907c47d179d58 /libavfilter/avcodec.c | |
parent | 6808759a58421b90526832ec198d61f1ccaaf765 (diff) | |
download | ffmpeg-f0394f28c38fffe05b3b4b3c1d8c00d9defb6ecc.tar.gz |
lavfi/avcodec: add consistency checks in avfilter_copy_buf_props()
The function will abort through an assert if the source is not defined,
or if the internal state of the source is inconsistent (e.g. type = AUDIO
&& !src->audio).
Diffstat (limited to 'libavfilter/avcodec.c')
-rw-r--r-- | libavfilter/avcodec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavfilter/avcodec.c b/libavfilter/avcodec.c index 6b23772564..f6e25bdc30 100644 --- a/libavfilter/avcodec.c +++ b/libavfilter/avcodec.c @@ -24,6 +24,7 @@ */ #include "avcodec.h" +#include "libavutil/avassert.h" #include "libavutil/opt.h" int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src) @@ -83,6 +84,11 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src) { int planes, nb_channels; + if (!dst) + return AVERROR(EINVAL); + /* abort in case the src is NULL and dst is not, avoid inconsistent state in dst */ + av_assert0(src); + memcpy(dst->data, src->data, sizeof(dst->data)); memcpy(dst->linesize, src->linesize, sizeof(dst->linesize)); @@ -91,6 +97,7 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src) switch (src->type) { case AVMEDIA_TYPE_VIDEO: + av_assert0(src->video); dst->width = src->video->w; dst->height = src->video->h; dst->sample_aspect_ratio = src->video->sample_aspect_ratio; @@ -100,6 +107,7 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src) dst->pict_type = src->video->pict_type; break; case AVMEDIA_TYPE_AUDIO: + av_assert0(src->audio); nb_channels = av_get_channel_layout_nb_channels(src->audio->channel_layout); planes = av_sample_fmt_is_planar(src->format) ? nb_channels : 1; |