[FFmpeg-cvslog] shorten: check output buffer size before decoding

Justin Ruggles git at videolan.org
Fri Oct 21 02:37:10 CEST 2011


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Fri Sep 16 18:01:28 2011 -0400| [882dafe9b666a7333d1b256fafe63e35dc582e3f] | committer: Justin Ruggles

shorten: check output buffer size before decoding

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

 libavcodec/shorten.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index ec50fc1..8031758 100644
--- a/libavcodec/shorten.c
+++ b/libavcodec/shorten.c
@@ -550,9 +550,15 @@ static int shorten_decode_frame(AVCodecContext *avctx,
             /* if this is the last channel in the block, output the samples */
             s->cur_chan++;
             if (s->cur_chan == s->channels) {
+                int out_size = s->blocksize * s->channels *
+                               av_get_bytes_per_sample(avctx->sample_fmt);
+                if (*data_size < out_size) {
+                    av_log(avctx, AV_LOG_ERROR, "Output buffer is too small\n");
+                    return AVERROR(EINVAL);
+                }
                 samples = interleave_buffer(samples, s->channels, s->blocksize, s->decoded);
                 s->cur_chan = 0;
-                *data_size = (int8_t *)samples - (int8_t *)data;
+                *data_size = out_size;
             } else {
                 *data_size = 0;
             }



More information about the ffmpeg-cvslog mailing list