[FFmpeg-cvslog] swr: check channel layouts before using them.
Michael Niedermayer
git at videolan.org
Sun Mar 3 03:35:51 CET 2013
ffmpeg | branch: release/1.0 | Michael Niedermayer <michaelni at gmx.at> | Wed Feb 13 17:49:16 2013 +0100| [e35da91b52cc09d6e4f2a7191cfbc8127e2eda51] | 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
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e35da91b52cc09d6e4f2a7191cfbc8127e2eda51
---
libswresample/swresample.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index b8c646f..4becb07 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -223,6 +223,16 @@ av_cold int swr_init(struct SwrContext *s){
s->flushed = 0;
+ 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-> in_sample_fmt >= AV_SAMPLE_FMT_NB){
av_log(s, AV_LOG_ERROR, "Requested input sample format %d is invalid\n", s->in_sample_fmt);
return AVERROR(EINVAL);
More information about the ffmpeg-cvslog
mailing list