From: Monty Date: Sat, 5 Feb 2000 23:23:58 +0000 (+0000) Subject: Fix for overflow bug in bitwise routines; read past end triggered too late. X-Git-Tag: v1.3.3~1277 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fbac7476bd4a94ea2b8e2e09ea0b4caea608211c;p=platform%2Fupstream%2Flibvorbis.git Fix for overflow bug in bitwise routines; read past end triggered too late. Monty svn path=/trunk/vorbis/; revision=248 --- diff --git a/lib/bitwise.c b/lib/bitwise.c index 2f87a0c..37599b6 100644 --- a/lib/bitwise.c +++ b/lib/bitwise.c @@ -12,7 +12,7 @@ ******************************************************************** function: packing variable sized words into an octet stream - last mod: $Id: bitwise.c,v 1.6 2000/01/12 11:16:35 xiphmont Exp $ + last mod: $Id: bitwise.c,v 1.7 2000/02/05 23:23:56 xiphmont Exp $ ********************************************************************/ @@ -101,7 +101,7 @@ long _oggpack_look(oggpack_buffer *b,int bits){ if(b->endbyte+4>=b->storage){ /* not the main path */ - if(b->endbyte+(bits+b->endbit-1)/8>b->storage)return(-1); + if(b->endbyte+(bits-1)/8>=b->storage)return(-1); } ret=b->ptr[0]>>b->endbit; @@ -149,7 +149,7 @@ long _oggpack_read(oggpack_buffer *b,int bits){ if(b->endbyte+4>=b->storage){ /* not the main path */ ret=-1; - if(b->endbyte+(bits+b->endbit-1)/8>b->storage)goto overflow; + if(b->endbyte+(bits-1)/8>=b->storage)goto overflow; } ret=b->ptr[0]>>b->endbit; @@ -363,7 +363,7 @@ int main(void){ fprintf(stderr,"\nSingle bit unclicpped packing: "); cliptest(testbuffer3,test3size,1,six,sixsize); - fprintf(stderr,"ok.\n"); + fprintf(stderr,"ok.\n\n"); return(0); } #endif diff --git a/lib/codebook.c b/lib/codebook.c index a51cf4f..a7a6a53 100644 --- a/lib/codebook.c +++ b/lib/codebook.c @@ -12,7 +12,7 @@ ******************************************************************** function: basic codebook pack/unpack/code/decode operations - last mod: $Id: codebook.c,v 1.4 2000/01/28 09:05:08 xiphmont Exp $ + last mod: $Id: codebook.c,v 1.5 2000/02/05 23:23:58 xiphmont Exp $ ********************************************************************/ @@ -553,7 +553,7 @@ int main(){ _oggpack_reset(&write); vorbis_book_init_encode(&c,testlist[ptr]); /* get it into memory we can write */ - vorbis_book_pack(testlist[ptr],&write); + vorbis_staticbook_pack(testlist[ptr],&write); fprintf(stderr,"Codebook size %ld bytes... ",_oggpack_bytes(&write)); for(i=0;i