[FFmpeg-cvslog] wtvdec: prevent memory leak in get_tag()

Peter Ross git at videolan.org
Mon Jan 7 16:55:20 CET 2013


ffmpeg | branch: master | Peter Ross <pross at xvid.org> | Tue Jan  8 01:48:13 2013 +1100| [a572cc8c7a0354d84156cfd1611dda8891f7c4db] | committer: Peter Ross

wtvdec: prevent memory leak in get_tag()

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

 libavformat/wtvdec.c |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c
index 3121269..139d2a4 100644
--- a/libavformat/wtvdec.c
+++ b/libavformat/wtvdec.c
@@ -448,15 +448,20 @@ done:
 
 static void get_tag(AVFormatContext *s, AVIOContext *pb, const char *key, int type, int length)
 {
-    int buf_size = FFMAX(2*length, LEN_PRETTY_GUID) + 1;
-    char *buf = av_malloc(buf_size);
-    if (!buf)
-        return;
+    int buf_size;
+    char *buf;
 
     if (!strcmp(key, "WM/MediaThumbType")) {
         avio_skip(pb, length);
         return;
-    } else if (type == 0 && length == 4) {
+    }
+
+    buf_size = FFMAX(2*length, LEN_PRETTY_GUID) + 1;
+    buf = av_malloc(buf_size);
+    if (!buf)
+        return;
+
+    if (type == 0 && length == 4) {
         snprintf(buf, buf_size, "%"PRIi32, avio_rl32(pb));
     } else if (type == 1) {
         avio_get_str16le(pb, length, buf, buf_size);



More information about the ffmpeg-cvslog mailing list