[FFmpeg-cvslog] libswresample: check input to swr_convert_frame for NULL

hexpointer git at videolan.org
Sat Jul 8 19:14:06 EEST 2017


ffmpeg | branch: master | hexpointer <hexptr at gmx.com> | Fri Jul  7 10:54:47 2017 +0100| [3fa8f263abf90650b62d43cb532cdb8cc5bd7c13] | committer: Michael Niedermayer

libswresample: check input to swr_convert_frame for NULL

When 'out' is an AVFrame that does not have buffers preallocated,
swr_convert_frame tries to allocate buffers of the right size. However
in calculating this size it failed to check for whether 'in' is NULL
(requesting that swr's internal buffers are to be flushed).

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libswresample/swresample_frame.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libswresample/swresample_frame.c b/libswresample/swresample_frame.c
index 71d3ed711a..2853266d6c 100644
--- a/libswresample/swresample_frame.c
+++ b/libswresample/swresample_frame.c
@@ -139,9 +139,10 @@ int swr_convert_frame(SwrContext *s,
 
     if (out) {
         if (!out->linesize[0]) {
-            out->nb_samples =   swr_get_delay(s, s->out_sample_rate)
-                              + in->nb_samples*(int64_t)s->out_sample_rate / s->in_sample_rate
-                              + 3;
+            out->nb_samples = swr_get_delay(s, s->out_sample_rate) + 3;
+            if (in) {
+                out->nb_samples += in->nb_samples*(int64_t)s->out_sample_rate / s->in_sample_rate;
+            }
             if ((ret = av_frame_get_buffer(out, 0)) < 0) {
                 if (setup)
                     swr_close(s);



More information about the ffmpeg-cvslog mailing list