Browse Source

wtvdec: prevent memory leak in get_tag()

tags/n1.2
Peter Ross 12 years ago
parent
commit
a572cc8c7a
1 changed files with 10 additions and 5 deletions
  1. +10
    -5
      libavformat/wtvdec.c

+ 10
- 5
libavformat/wtvdec.c View File

@@ -448,15 +448,20 @@ done:


static void get_tag(AVFormatContext *s, AVIOContext *pb, const char *key, int type, int length) 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")) { if (!strcmp(key, "WM/MediaThumbType")) {
avio_skip(pb, length); avio_skip(pb, length);
return; 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)); snprintf(buf, buf_size, "%"PRIi32, avio_rl32(pb));
} else if (type == 1) { } else if (type == 1) {
avio_get_str16le(pb, length, buf, buf_size); avio_get_str16le(pb, length, buf, buf_size);


Loading…
Cancel
Save