]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Check for alloc failures.
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 21 Feb 2009 20:57:46 +0000 (20:57 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 21 Feb 2009 20:57:46 +0000 (20:57 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@17497 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/avidec.c

index 4a288904072a2cfca17882e6701e51877007ce77..78e5051e1e12cb3aabc17cce2e3e55119366071e 100644 (file)
@@ -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) {