diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/CHANGES libvorbis-1.3.3/CHANGES
--- libvorbis-1.3.2/CHANGES	2010-11-02 04:51:12 +0900
+++ libvorbis-1.3.3/CHANGES	2012-02-04 07:20:26 +0900
@@ -1,3 +1,14 @@
+libvorbis 1.3.3 (2012-02-03) -- "Xiph.Org libVorbis I 20120203 (Omnipresent)"
+
+* vorbis: additional proofing against invalid/malicious 
+  streams in decode (see SVN for details).  
+* vorbis: fix a memory leak in vorbis_commentheader_out().
+* updates, corrections and clarifications in the Vorbis I specification 
+  document
+* win32: fixed project configuration which referenced two CRT versions 
+  in output binaries.
+* build warning fixes
+
 libvorbis 1.3.2 (2010-11-01) -- "Xiph.Org libVorbis I 20101101 (Schaufenugget)"
 
  * vorbis: additional proofing against invalid/malicious 
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/config.h.in libvorbis-1.3.3/config.h.in
--- libvorbis-1.3.2/config.h.in	2010-11-02 05:29:18 +0900
+++ libvorbis-1.3.3/config.h.in	2012-02-04 07:04:11 +0900
@@ -67,6 +67,9 @@
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
@@ -89,3 +92,6 @@
 #ifndef __cplusplus
 #undef inline
 #endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/configure.ac libvorbis-1.3.3/configure.ac
--- libvorbis-1.3.2/configure.ac	2010-11-02 04:27:12 +0900
+++ libvorbis-1.3.3/configure.ac	2012-02-04 07:00:34 +0900
@@ -5,7 +5,7 @@
 dnl ------------------------------------------------
 
 
-AC_INIT([libvorbis],[1.3.2],[vorbis-dev@xiph.org])
+AC_INIT([libvorbis],[1.3.3],[vorbis-dev@xiph.org])
 
 AC_CONFIG_SRCDIR([lib/mdct.c])
 
@@ -25,15 +25,15 @@
 dnl - interfaces removed -> AGE = 0
 
 V_LIB_CURRENT=4
-V_LIB_REVISION=5
+V_LIB_REVISION=6
 V_LIB_AGE=4
 
 VF_LIB_CURRENT=6
-VF_LIB_REVISION=4
+VF_LIB_REVISION=5
 VF_LIB_AGE=3
 
 VE_LIB_CURRENT=2
-VE_LIB_REVISION=8
+VE_LIB_REVISION=9
 VE_LIB_AGE=0
 
 AC_SUBST(V_LIB_CURRENT)
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/lib/codebook.c libvorbis-1.3.3/lib/codebook.c
--- libvorbis-1.3.2/lib/codebook.c	2010-10-23 13:31:21 +0900
+++ libvorbis-1.3.3/lib/codebook.c	2012-02-04 05:51:28 +0900
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c 17553 2010-10-21 17:54:26Z tterribe $
+ last mod: $Id: codebook.c 18183 2012-02-03 20:51:27Z xiphmont $
 
  ********************************************************************/
 
@@ -248,7 +248,7 @@
       }
 
       /* quantized values */
-      if((quantvals*s->q_quant+7>>3)>opb->storage-oggpack_bytes(opb))
+      if(((quantvals*s->q_quant+7)>>3)>opb->storage-oggpack_bytes(opb))
         goto _eofout;
       s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals);
       for(i=0;i<quantvals;i++)
@@ -367,6 +367,7 @@
 }
 
 /* returns 0 on OK or -1 on eof *************************************/
+/* decode vector / dim granularity gaurding is done in the upper layer */
 long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
   if(book->used_entries>0){
     int step=n/book->dim;
@@ -386,6 +387,7 @@
   return(0);
 }
 
+/* decode vector / dim granularity gaurding is done in the upper layer */
 long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
   if(book->used_entries>0){
     int i,j,entry;
@@ -431,6 +433,9 @@
   return(0);
 }
 
+/* unlike the others, we guard against n not being an integer number
+   of <dim> internally rather than in the upper layer (called only by
+   floor0) */
 long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
   if(book->used_entries>0){
     int i,j,entry;
@@ -440,15 +445,15 @@
       entry = decode_packed_entry_number(book,b);
       if(entry==-1)return(-1);
       t     = book->valuelist+entry*book->dim;
-      for (j=0;j<book->dim;)
+      for (j=0;i<n && j<book->dim;){
         a[i++]=t[j++];
+      }
     }
   }else{
     int i,j;
 
     for(i=0;i<n;){
-      for (j=0;j<book->dim;)
-        a[i++]=0.f;
+      a[i++]=0.f;
     }
   }
   return(0);
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/lib/floor0.c libvorbis-1.3.3/lib/floor0.c
--- libvorbis-1.3.2/lib/floor0.c	2010-10-23 13:31:21 +0900
+++ libvorbis-1.3.3/lib/floor0.c	2012-02-04 05:55:12 +0900
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: floor backend 0 implementation
- last mod: $Id: floor0.c 17558 2010-10-22 00:24:41Z tterribe $
+ last mod: $Id: floor0.c 18184 2012-02-03 20:55:12Z xiphmont $
 
  ********************************************************************/
 
@@ -177,10 +177,9 @@
          vector */
       float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1));
 
-      for(j=0;j<look->m;j+=b->dim)
-        if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop;
+      if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m)==-1)goto eop;
       for(j=0;j<look->m;){
-        for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
+        for(k=0;j<look->m && k<b->dim;k++,j++)lsp[j]+=last;
         last=lsp[j-1];
       }
 
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/lib/floor1.c libvorbis-1.3.3/lib/floor1.c
--- libvorbis-1.3.2/lib/floor1.c	2010-10-23 13:31:21 +0900
+++ libvorbis-1.3.3/lib/floor1.c	2012-02-04 04:43:30 +0900
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: floor backend 1 implementation
- last mod: $Id: floor1.c 17555 2010-10-21 18:14:51Z tterribe $
+ last mod: $Id: floor1.c 18151 2012-01-20 07:35:26Z xiphmont $
 
  ********************************************************************/
 
@@ -167,6 +167,7 @@
 
   for(j=0,k=0;j<info->partitions;j++){
     count+=info->class_dim[info->partitionclass[j]];
+    if(count>VIF_POSIT) goto err_out;
     for(;k<count;k++){
       int t=info->postlist[k+2]=oggpack_read(opb,rangebits);
       if(t<0 || t>=(1<<rangebits))
@@ -1035,7 +1036,7 @@
           }
         }
 
-        fit_value[i]=val+predicted&0x7fff;
+        fit_value[i]=(val+predicted)&0x7fff;
         fit_value[look->loneighbor[i-2]]&=0x7fff;
         fit_value[look->hineighbor[i-2]]&=0x7fff;
 
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/lib/info.c libvorbis-1.3.3/lib/info.c
--- libvorbis-1.3.2/lib/info.c	2010-11-02 04:26:18 +0900
+++ libvorbis-1.3.3/lib/info.c	2012-02-04 07:08:45 +0900
@@ -550,7 +550,10 @@
   oggpack_buffer opb;
 
   oggpack_writeinit(&opb);
-  if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL;
+  if(_vorbis_pack_comment(&opb,vc)){
+    oggpack_writeclear(&opb);
+    return OV_EIMPL;
+  }
 
   op->packet = _ogg_malloc(oggpack_bytes(&opb));
   memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
@@ -561,6 +564,7 @@
   op->granulepos=0;
   op->packetno=1;
 
+  oggpack_writeclear(&opb);
   return 0;
 }
 
diff -urN '-x*.m4' -xMakefile.in -xMakefile.am -xconfigure -xltmain.sh '-x*.vcproj' '-x*.tex' '-xVorbis_I_spec.*' libvorbis-1.3.2/libvorbis.spec libvorbis-1.3.3/libvorbis.spec
--- libvorbis-1.3.2/libvorbis.spec	2010-11-02 05:29:15 +0900
+++ libvorbis-1.3.3/libvorbis.spec	2012-02-04 07:22:13 +0900
@@ -1,5 +1,5 @@
 Name:		libvorbis
-Version:	1.3.2
+Version:	1.3.3
 Release:	0.xiph.1
 Summary:	The Vorbis General Audio Compression Codec.
 
