[FFmpeg-cvslog] avformat/rl2: fix memleak when read end of file

Steven Liu git at videolan.org
Mon Oct 28 08:28:36 EET 2019


ffmpeg | branch: master | Steven Liu <lq at chinaffmpeg.org> | Thu Oct 10 10:07:52 2019 +0800| [59697e42e1b7535863794d301fbdb75e119f4683] | committer: Steven Liu

avformat/rl2: fix memleak when read end of file

Signed-off-by: Steven Liu <lq at chinaffmpeg.org>

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

 libavformat/rl2.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/libavformat/rl2.c b/libavformat/rl2.c
index d847d9aaa8..07696965c7 100644
--- a/libavformat/rl2.c
+++ b/libavformat/rl2.c
@@ -171,18 +171,24 @@ static av_cold int rl2_read_header(AVFormatContext *s)
 
     /** read offset and size tables */
     for(i=0; i < frame_count;i++) {
-        if (avio_feof(pb))
-            return AVERROR_INVALIDDATA;
+        if (avio_feof(pb)) {
+            ret = AVERROR_INVALIDDATA;
+            goto end;
+        }
         chunk_size[i] = avio_rl32(pb);
     }
     for(i=0; i < frame_count;i++) {
-        if (avio_feof(pb))
-            return AVERROR_INVALIDDATA;
+        if (avio_feof(pb)) {
+            ret = AVERROR_INVALIDDATA;
+            goto end;
+        }
         chunk_offset[i] = avio_rl32(pb);
     }
     for(i=0; i < frame_count;i++) {
-        if (avio_feof(pb))
-            return AVERROR_INVALIDDATA;
+        if (avio_feof(pb)) {
+            ret = AVERROR_INVALIDDATA;
+            goto end;
+        }
         audio_size[i] = avio_rl32(pb) & 0xFFFF;
     }
 
@@ -203,7 +209,7 @@ static av_cold int rl2_read_header(AVFormatContext *s)
         ++video_frame_counter;
     }
 
-
+end:
     av_free(chunk_size);
     av_free(audio_size);
     av_free(chunk_offset);



More information about the ffmpeg-cvslog mailing list