Index: lib/floor1.c =================================================================== --- lib/floor1.c (revision 16180) +++ lib/floor1.c (revision 16182) @@ -120,6 +120,9 @@ } } +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=vi->codec_setup; @@ -164,6 +167,17 @@ 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. */