diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-06-26 20:54:00 +0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-07-02 18:15:45 +0400 |
commit | b72767df8e4f496da36138aa7127e408c1cde7f8 (patch) | |
tree | a641cbbb78e56e24c2e1c2e55a8b5d2cc74000a8 /libavformat/apetag.c | |
parent | f2e175c7563a1cd4780586d28929de67d7b8a426 (diff) |
apetag: fix the amount of data read from binary tags.
Substract the filename size from the data size.
Diffstat (limited to 'libavformat/apetag.c')
-rw-r--r-- | libavformat/apetag.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/apetag.c b/libavformat/apetag.c index e5c839ea34..f8653d3ce7 100644 --- a/libavformat/apetag.c +++ b/libavformat/apetag.c @@ -59,7 +59,12 @@ static int ape_tag_read_field(AVFormatContext *s) AVStream *st = avformat_new_stream(s, NULL); if (!st) return AVERROR(ENOMEM); - avio_get_str(pb, size, filename, sizeof(filename)); + + size -= avio_get_str(pb, size, filename, sizeof(filename)); + if (size <= 0) { + av_log(s, AV_LOG_WARNING, "Skipping binary tag '%s'.\n", key); + return 0; + } st->codec->extradata = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); if (!st->codec->extradata) return AVERROR(ENOMEM); |