From c60a0f85eea39542a9b3a5efaf2411abfe2ca528 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 21 Feb 2009 20:57:46 +0000 Subject: [PATCH] Check for alloc failures. Originally committed as revision 17497 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/avidec.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 4a28890407..78e5051e1e 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -718,7 +718,7 @@ resync: if(avi->stream_index >= 0){ AVStream *st= s->streams[ avi->stream_index ]; AVIStream *ast= st->priv_data; - int size; + int size, err; if(ast->sample_size <= 1) // minorityreport.AVI block_align=1024 sample_size=1 IMA-ADPCM size= INT_MAX; @@ -730,14 +730,19 @@ resync: if(size > ast->remaining) size= ast->remaining; avi->last_pkt_pos= url_ftell(pb); - av_get_packet(pb, pkt, size); + err= av_get_packet(pb, pkt, size); + if(err<0) + return err; if(ast->has_pal && pkt->data && pkt->size<(unsigned)INT_MAX/2){ + void *ptr= av_realloc(pkt->data, pkt->size + 4*256 + FF_INPUT_BUFFER_PADDING_SIZE); + if(ptr){ ast->has_pal=0; pkt->size += 4*256; - pkt->data = av_realloc(pkt->data, pkt->size + FF_INPUT_BUFFER_PADDING_SIZE); - if(pkt->data) + pkt->data= ptr; memcpy(pkt->data + pkt->size - 4*256, ast->pal, 4*256); + }else + av_log(s, AV_LOG_ERROR, "Failed to append palette\n"); } if (CONFIG_DV_DEMUXER && avi->dv_demux) { -- GitLab