Author: ken
Date: 2008-07-09 12:47:38 -0600 (Wed, 09 Jul 2008)
New Revision: 1963
Added:
trunk/libvorbis/libvorbis-1.2.0-security_fixes-1.patch
Log:
Fix more vulnerabilities in libvorbis.
Added: trunk/libvorbis/libvorbis-1.2.0-security_fixes-1.patch
===================================================================
--- trunk/libvorbis/libvorbis-1.2.0-security_fixes-1.patch
(rev 0)
+++ trunk/libvorbis/libvorbis-1.2.0-security_fixes-1.patch 2008-07-09
18:47:38 UTC (rev 1963)
@@ -0,0 +1,61 @@
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2008-07-09
+Initial Package Version: 1.2.0
+Upstream Status: From upstream, not yet in a release.
+Origin: Extracted from upstream revisions r14598 and r14602 by fedora,
rediffed to apply with -p1.
+Description: Fixes for CVE-2008-{1419,1420,1423}
+
+diff -Naur libvorbis-1.2.0.orig/lib/codebook.c libvorbis-1.2.0/lib/codebook.c
+--- libvorbis-1.2.0.orig/lib/codebook.c 2007-07-24 01:09:47.000000000
+0100
++++ libvorbis-1.2.0/lib/codebook.c 2008-07-09 19:11:21.000000000 +0100
+@@ -159,6 +159,8 @@
+ s->entries=oggpack_read(opb,24);
+ if(s->entries==-1)goto _eofout;
+
++ if(_ilog(s->dim)+_ilog(s->entries)>24)goto _eofout;
++
+ /* codeword ordering.... length ordered or unordered? */
+ switch((int)oggpack_read(opb,1)){
+ case 0:
+@@ -225,7 +227,7 @@
+ int quantvals=0;
+ switch(s->maptype){
+ case 1:
+- quantvals=_book_maptype1_quantvals(s);
++ quantvals=(s->dim==0?0:_book_maptype1_quantvals(s));
+ break;
+ case 2:
+ quantvals=s->entries*s->dim;
+diff -Naur libvorbis-1.2.0.orig/lib/res0.c libvorbis-1.2.0/lib/res0.c
+--- libvorbis-1.2.0.orig/lib/res0.c 2007-07-24 01:09:47.000000000 +0100
++++ libvorbis-1.2.0/lib/res0.c 2008-07-09 19:10:59.000000000 +0100
+@@ -223,6 +223,20 @@
+ for(j=0;j<acc;j++)
+ if(info->booklist[j]>=ci->books)goto errout;
+
++ /* verify the phrasebook is not specifying an impossible or
++ inconsistent partitioning scheme. */
++ {
++ int entries = ci->book_param[info->groupbook]->entries;
++ int dim = ci->book_param[info->groupbook]->dim;
++ int partvals = 1;
++ while(dim>0){
++ partvals *= info->partitions;
++ if(partvals > entries) goto errout;
++ dim--;
++ }
++ if(partvals != entries) goto errout;
++ }
++
+ return(info);
+ errout:
+ res0_free_info(info);
+@@ -263,7 +277,7 @@
+ }
+ }
+
+- look->partvals=rint(pow((float)look->parts,(float)dim));
++ look->partvals=look->phrasebook->entries;
+ look->stages=maxstage;
+ look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap));
+ for(j=0;j<look->partvals;j++){
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page