[FFmpeg-cvslog] lavfi/audio: use av_samples_copy() instead of custom code.
Anton Khirnov
git at videolan.org
Wed Jun 13 23:02:29 CEST 2012
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Wed Jun 13 10:52:35 2012 +0200| [9cdf74f904f76b2a1da474a2290c7e9ed34dd431] | committer: Anton Khirnov
lavfi/audio: use av_samples_copy() instead of custom code.
Fixes a possible invalid write, found by Nicolas George.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9cdf74f904f76b2a1da474a2290c7e9ed34dd431
---
libavfilter/audio.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/libavfilter/audio.c b/libavfilter/audio.c
index 31839bb..a6fef9d 100644
--- a/libavfilter/audio.c
+++ b/libavfilter/audio.c
@@ -185,10 +185,6 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
/* prepare to copy the samples if the buffer has insufficient permissions */
if ((dst->min_perms & samplesref->perms) != dst->min_perms ||
dst->rej_perms & samplesref->perms) {
- int i, planar = av_sample_fmt_is_planar(samplesref->format);
- int planes = !planar ? 1:
- av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);
-
av_log(link->dst, AV_LOG_DEBUG,
"Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",
samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);
@@ -199,8 +195,10 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
/* Copy actual data into new samples buffer */
- for (i = 0; i < planes; i++)
- memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]);
+ av_samples_copy(link->cur_buf->extended_data, samplesref->extended_data,
+ 0, 0, samplesref->audio->nb_samples,
+ av_get_channel_layout_nb_channels(link->channel_layout),
+ link->format);
avfilter_unref_buffer(samplesref);
} else
More information about the ffmpeg-cvslog
mailing list