[FFmpeg-cvslog] swr: check channel layouts before using them.

Michael Niedermayer git at videolan.org
Tue Feb 19 01:35:46 CET 2013


ffmpeg | branch: release/1.1 | Michael Niedermayer <michaelni at gmx.at> | Wed Feb 13 17:49:16 2013 +0100| [7c40a0449b4771a0a09c3c38e081d3869d1f917b] | committer: Michael Niedermayer

swr: check channel layouts before using them.

Fixes out of array accesses

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 21cd905cd44a4bbafe8631bbaa6021d328413ce5)

Conflicts:

	libswresample/swresample.c

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7c40a0449b4771a0a09c3c38e081d3869d1f917b
---

 libswresample/swresample.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index f530c1f..e93f707 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -249,6 +249,16 @@ av_cold int swr_init(struct SwrContext *s){
         return AVERROR(EINVAL);
     }
 
+    if(av_get_channel_layout_nb_channels(s-> in_ch_layout) > SWR_CH_MAX) {
+        av_log(s, AV_LOG_WARNING, "Input channel layout 0x%"PRIx64" is invalid or unsupported.\n", s-> in_ch_layout);
+        s->in_ch_layout = 0;
+    }
+
+    if(av_get_channel_layout_nb_channels(s->out_ch_layout) > SWR_CH_MAX) {
+        av_log(s, AV_LOG_WARNING, "Output channel layout 0x%"PRIx64" is invalid or unsupported.\n", s->out_ch_layout);
+        s->out_ch_layout = 0;
+    }
+
     if(s->int_sample_fmt == AV_SAMPLE_FMT_NONE){
         if(av_get_planar_sample_fmt(s->in_sample_fmt) <= AV_SAMPLE_FMT_S16P){
             s->int_sample_fmt= AV_SAMPLE_FMT_S16P;



More information about the ffmpeg-cvslog mailing list