summaryrefslogtreecommitdiff
path: root/libavformat/flacdec.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-07-06 22:21:09 +0200
committerAnton Khirnov <anton@khirnov.net>2012-07-07 20:33:44 +0200
commitdba5b06ead6bbec8fd1207d778240188182c8361 (patch)
tree957fd8067607118306c88973ee2033ea61c45960 /libavformat/flacdec.c
parentfdaad6354fbf1925c9bfeadd32950c503c1103ad (diff)
downloadffmpeg-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.
Diffstat (limited to 'libavformat/flacdec.c')
-rw-r--r--libavformat/flacdec.c10
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;