]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Make sure the block array is of the correct size.
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 9 Apr 2009 18:47:50 +0000 (18:47 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 9 Apr 2009 18:47:50 +0000 (18:47 +0000)
This might have been exploitable.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18393 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/snow.c

index a6718f8d39b86a7167d5cbc10d6ff336bd73ed7e..d246b9abf28d5c8e02ce82cf657293d50a832536 100644 (file)
@@ -1626,6 +1626,7 @@ static int alloc_blocks(SnowContext *s){
     s->b_width = w;
     s->b_height= h;
 
+    av_free(s->block);
     s->block= av_mallocz(w * h * sizeof(BlockNode) << (s->block_max_depth*2));
     return 0;
 }
@@ -4517,7 +4518,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
                                               && p->hcoeff[2]==2;
     }
 
-    if(!s->block) alloc_blocks(s);
+    alloc_blocks(s);
 
     frame_start(s);
     //keyframe flag duplication mess FIXME