diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-07-06 22:21:09 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-07-07 20:33:44 +0200 |
commit | dba5b06ead6bbec8fd1207d778240188182c8361 (patch) | |
tree | 957fd8067607118306c88973ee2033ea61c45960 | |
parent | fdaad6354fbf1925c9bfeadd32950c503c1103ad (diff) | |
download | ffmpeg-dba5b06ead6bbec8fd1207d778240188182c8361.tar.gz |
flacdec: don't create an attached picture stream until we have all information.
This way we don't end with an invalid stream if parsing the picture
fails.
-rw-r--r-- | libavformat/flacdec.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c index f481c10cfa..0be60a4b7e 100644 --- a/libavformat/flacdec.c +++ b/libavformat/flacdec.c @@ -38,10 +38,6 @@ static int parse_picture(AVFormatContext *s, uint8_t *buf, int buf_size) int type, width, height; int len, ret = 0; - st = avformat_new_stream(s, NULL); - if (!st) - return AVERROR(ENOMEM); - pb = avio_alloc_context(buf, buf_size, 0, NULL, NULL, NULL, NULL); if (!pb) return AVERROR(ENOMEM); @@ -114,6 +110,12 @@ static int parse_picture(AVFormatContext *s, uint8_t *buf, int buf_size) goto fail; } + st = avformat_new_stream(s, NULL); + if (!st) { + ret = AVERROR(ENOMEM); + goto fail; + } + av_init_packet(&st->attached_pic); st->attached_pic.data = data; st->attached_pic.size = len; |