From ba51e86cb277cea805ddc2506b63d01ddd919763 Mon Sep 17 00:00:00 2001 From: Tim Terriberry Date: Thu, 14 Oct 2010 00:23:54 +0000 Subject: Port r16218 from libvorbis. Fix for https://bugzilla.mozilla.org/show_bug.cgi?id=501279 git-svn-id: https://svn.xiph.org/trunk/Tremor@17524 0101bb08-14d6-0310-b084-bc0e0c8e3800 --- res012.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/res012.c b/res012.c index 5cfa2a5..19d81f3 100644 --- a/res012.c +++ b/res012.c @@ -98,16 +98,27 @@ vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){ info->partitions=oggpack_read(opb,6)+1; info->groupbook=oggpack_read(opb,8); + /* check for premature EOP */ + if(info->groupbook<0)goto errout; + for(j=0;jpartitions;j++){ int cascade=oggpack_read(opb,3); - if(oggpack_read(opb,1)) - cascade|=(oggpack_read(opb,5)<<3); + int cflag=oggpack_read(opb,1); + if(cflag<0) goto errout; + if(cflag){ + int c=oggpack_read(opb,5); + if(c<0) goto errout; + cascade|=(c<<3); + } info->secondstages[j]=cascade; acc+=icount(cascade); } - for(j=0;jbooklist[j]=oggpack_read(opb,8); + for(j=0;jbooklist[j]=book; + } if(info->groupbook>=ci->books)goto errout; for(j=0;j