From 0bfa899544d31ee2f34d149eb8bc17f89d7e9715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Wallm=C3=A9nius?= Date: Tue, 7 Dec 2010 16:22:51 +0000 Subject: [PATCH] libtremor: merge upstream revision 17522 and 17523 adding more sanity checking. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28760 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libtremor/floor1.c | 19 +++++++++++++++---- apps/codecs/libtremor/res012.c | 4 +++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/apps/codecs/libtremor/floor1.c b/apps/codecs/libtremor/floor1.c index 0d3828c816..98118d7ac9 100644 --- a/apps/codecs/libtremor/floor1.c +++ b/apps/codecs/libtremor/floor1.c @@ -67,6 +67,10 @@ static inline int ilog(register unsigned int v){ return(ret); } +static int icomp(const void *a,const void *b){ + return(**(int **)a-**(int **)b); +} + static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; int j,k,count=0,maxclass=-1,rangebits; @@ -110,6 +114,17 @@ static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ info->postlist[0]=0; info->postlist[1]=1<postlist+j; + qsort(sortpointer,count+2,sizeof(*sortpointer),icomp); + + for(j=1;jbooklist[j]=oggpack_read(opb,8); if(info->groupbook>=ci->books)goto errout; - for(j=0;jbooklist[j]>=ci->books)goto errout; + if(ci->book_param[info->booklist[j]]->maptype==0)goto errout; + } /* verify the phrasebook is not specifying an impossible or inconsistent partitioning scheme. */