aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-03-01 16:45:24 +0200
committerReinhard Tartler <siretart@tauware.de>2013-03-02 09:55:33 +0100
commitefa8603518258aa992752e0589d8fdd7b7d1f66b (patch)
tree9d8661bec803125f3c8b1bb5b8618b53f619ad49
parent1b0082eabcc98e079d33c61da4d30ded89de68a9 (diff)
downloadffmpeg-efa8603518258aa992752e0589d8fdd7b7d1f66b.tar.gz
flvdec: Check the return value of a malloc
The callers of this function can't report errors sanely. If this one malloc fails, don't write the extradata byte, make sure we try to malloc it the next time we're called instead, and make sure we still consume the input data byte. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st> (cherry picked from commit c5a738ca4e9789b4678b10240777d931e7dc24c9) Signed-off-by: Reinhard Tartler <siretart@tauware.de>
-rw-r--r--libavformat/flvdec.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index e45a9a2bfa..403a9b5089 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -213,10 +213,14 @@ static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream, int flv_co
vcodec->codec_id = AV_CODEC_ID_VP6A;
if (read) {
if (vcodec->extradata_size != 1) {
- vcodec->extradata_size = 1;
vcodec->extradata = av_malloc(1);
+ if (vcodec->extradata)
+ vcodec->extradata_size = 1;
}
- vcodec->extradata[0] = avio_r8(s->pb);
+ if (vcodec->extradata)
+ vcodec->extradata[0] = avio_r8(s->pb);
+ else
+ avio_skip(s->pb, 1);
}
return 1; // 1 byte body size adjustment for flv_read_packet()
case FLV_CODECID_H264: