From 6e25b5c1e60f1b5d7d6ad3f17ef1490b0d72b00b Mon Sep 17 00:00:00 2001 From: Tim Terriberry Date: Thu, 14 Oct 2010 00:17:09 +0000 Subject: Port of r16182 from libvorbis. Second half of fix to https://bugzilla.mozilla.org/show_bug.cgi?id=500254 Sanity check the floor 1 post list to reject files with repeated values that would result in floor line segments with zero length. git-svn-id: https://svn.xiph.org/trunk/Tremor@17523 0101bb08-14d6-0310-b084-bc0e0c8e3800 --- floor1.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/floor1.c b/floor1.c index 259cd10..a77e642 100644 --- a/floor1.c +++ b/floor1.c @@ -68,6 +68,10 @@ static int ilog(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; @@ -111,6 +115,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;j