r12 ./libvorbis: libvorbis (1.1.2.dfsg-2) unstable; urgency=low

Clint Adams schizo at debian.org
Fri Jun 29 14:03:40 UTC 2007


------------------------------------------------------------
revno: 12
committer: Clint Adams <schizo at debian.org>
branch nick: libvorbis
timestamp: Fri 2007-06-29 10:03:40 -0400
message:
  libvorbis (1.1.2.dfsg-2) unstable; urgency=low
  
    * Bump to Standards-Version 3.7.2. 
    * Add upstream_r13198-fix_segfault_in_ov_time_seek.diff. closes: #281995.
added:
  debian/patches/
  debian/patches/series
  debian/patches/upstream_r13198-fix_segfault_in_ov_time_seek.diff
modified:
  debian/changelog
  debian/control
-------------- next part --------------
=== added directory 'debian/patches'
=== added file 'debian/patches/series'
--- a/debian/patches/series	1970-01-01 00:00:00 +0000
+++ b/debian/patches/series	2007-06-29 14:03:40 +0000
@@ -0,0 +1,1 @@
+upstream_r13198-fix_segfault_in_ov_time_seek.diff -p0

=== added file 'debian/patches/upstream_r13198-fix_segfault_in_ov_time_seek.diff'
--- a/debian/patches/upstream_r13198-fix_segfault_in_ov_time_seek.diff	1970-01-01 00:00:00 +0000
+++ b/debian/patches/upstream_r13198-fix_segfault_in_ov_time_seek.diff	2007-06-29 14:03:40 +0000
@@ -0,0 +1,227 @@
+Index: examples/seeking_example.c
+===================================================================
+--- examples/seeking_example.c.orig	2005-11-28 00:43:25.000000000 -0500
++++ examples/seeking_example.c	2007-06-29 09:53:08.474656407 -0400
+@@ -25,14 +25,15 @@
+ # include <fcntl.h>
+ #endif
+ 
+-void _verify(OggVorbis_File *ov,ogg_int64_t pos,
+-	     ogg_int64_t val,ogg_int64_t pcmval,
++void _verify(OggVorbis_File *ov,
++	     ogg_int64_t val,ogg_int64_t pcmval,double timeval,
+ 	     ogg_int64_t pcmlength,
+ 	     char *bigassbuffer){
+   int j;
+   long bread;
+   char buffer[4096];
+   int dummy;
++  ogg_int64_t pos;
+ 
+   /* verify the raw position, the pcm position and position decode */
+   if(val!=-1 && ov_raw_tell(ov)<val){
+@@ -45,6 +46,11 @@
+ 	   (long)pcmval,(long)ov_pcm_tell(ov));
+     exit(1);
+   }
++  if(timeval!=-1 && ov_time_tell(ov)>timeval){
++    printf("time position out of tolerance: requested %f, got %f\n",
++	   timeval,ov_time_tell(ov));
++    exit(1);
++  }
+   pos=ov_pcm_tell(ov);
+   if(pos<0 || pos>pcmlength){
+     printf("pcm position out of bounds: got %ld\n",(long)pos);
+@@ -73,6 +79,7 @@
+   OggVorbis_File ov;
+   int i,ret;
+   ogg_int64_t pcmlength;
++  double timelength;
+   char *bigassbuffer;
+   int dummy;
+ 
+@@ -106,6 +113,7 @@
+        does what it claimed, decode the entire file into memory */
+     fflush(stdout);
+     pcmlength=ov_pcm_total(&ov,-1);
++    timelength=ov_time_total(&ov,-1);
+     bigassbuffer=malloc(pcmlength*2); /* w00t */
+     i=0;
+     while(i<pcmlength*2){
+@@ -120,9 +128,6 @@
+ 	      (long)(pcmlength*2-i));
+     }
+     
+-    /* Exercise all the real seeking cases; ov_raw_seek,
+-       ov_pcm_seek_page and ov_pcm_seek.  time seek is just a wrapper
+-       on pcm_seek */
+     {
+       ogg_int64_t length=ov.end;
+       printf("\rtesting raw seeking to random places in %ld bytes....\n",
+@@ -130,7 +135,6 @@
+     
+       for(i=0;i<1000;i++){
+ 	ogg_int64_t val=(double)rand()/RAND_MAX*length;
+-	ogg_int64_t pos;
+ 	printf("\r\t%d [raw position %ld]...     ",i,(long)val);
+ 	fflush(stdout);
+ 	ret=ov_raw_seek(&ov,val);
+@@ -139,7 +143,7 @@
+ 	  exit(1);
+ 	}
+ 
+-	_verify(&ov,pos,val,-1,pcmlength,bigassbuffer);
++	_verify(&ov,val,-1,-1.,pcmlength,bigassbuffer);
+ 
+       }
+     }
+@@ -151,7 +155,6 @@
+     
+       for(i=0;i<1000;i++){
+ 	ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
+-	ogg_int64_t pos;
+ 	printf("\r\t%d [pcm position %ld]...     ",i,(long)val);
+ 	fflush(stdout);
+ 	ret=ov_pcm_seek_page(&ov,val);
+@@ -160,20 +163,18 @@
+ 	  exit(1);
+ 	}
+ 
+-	_verify(&ov,pos,-1,val,pcmlength,bigassbuffer);
++	_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
+ 
+       }
+     }
+     
+     printf("\r");
+     {
+-      ogg_int64_t length=ov.end;
+       printf("testing pcm exact seeking to random places in %ld samples....\n",
+ 	     (long)pcmlength);
+     
+       for(i=0;i<1000;i++){
+ 	ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
+-	ogg_int64_t pos;
+ 	printf("\r\t%d [pcm position %ld]...     ",i,(long)val);
+ 	fflush(stdout);
+ 	ret=ov_pcm_seek(&ov,val);
+@@ -187,7 +188,52 @@
+ 	  exit(1);
+ 	}
+ 
+-	_verify(&ov,pos,-1,val,pcmlength,bigassbuffer);
++	_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
++
++      }
++    }
++
++    printf("\r");
++    {
++      printf("testing time page seeking to random places in %f seconds....\n",
++	     timelength);
++    
++      for(i=0;i<1000;i++){
++	double val=(double)rand()/RAND_MAX*timelength;
++	printf("\r\t%d [time position %f]...     ",i,val);
++	fflush(stdout);
++	ret=ov_time_seek_page(&ov,val);
++	if(ret<0){
++	  printf("seek failed: %d\n",ret);
++	  exit(1);
++	}
++
++	_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
++
++      }
++    }
++
++    printf("\r");
++    {
++      printf("testing time exact seeking to random places in %f seconds....\n",
++	     timelength);
++    
++      for(i=0;i<1000;i++){
++	double val=(double)rand()/RAND_MAX*timelength;
++	printf("\r\t%d [time position %f]...     ",i,val);
++	fflush(stdout);
++	ret=ov_time_seek(&ov,val);
++	if(ret<0){
++	  printf("seek failed: %d\n",ret);
++	  exit(1);
++	}
++	if(ov_time_tell(&ov)<val-1 || ov_time_tell(&ov)>val+1){
++	  printf("Declared position didn't perfectly match request: %f != %f\n",
++		 val,ov_time_tell(&ov));
++	  exit(1);
++	}
++
++	_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
+ 
+       }
+     }
+Index: lib/vorbisfile.c
+===================================================================
+--- lib/vorbisfile.c.orig	2005-11-28 00:43:25.000000000 -0500
++++ lib/vorbisfile.c	2007-06-29 09:53:08.474656407 -0400
+@@ -1360,20 +1360,23 @@
+   /* translate time to PCM position and call ov_pcm_seek */
+ 
+   int link=-1;
+-  ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
+-  double time_total=ov_time_total(vf,-1);
++  ogg_int64_t pcm_total=0;
++  double time_total=0.;
+ 
+   if(vf->ready_state<OPENED)return(OV_EINVAL);
+   if(!vf->seekable)return(OV_ENOSEEK);
+-  if(seconds<0 || seconds>time_total)return(OV_EINVAL);
++  if(seconds<0)return(OV_EINVAL);
+   
+   /* which bitstream section does this time offset occur in? */
+-  for(link=vf->links-1;link>=0;link--){
+-    pcm_total-=vf->pcmlengths[link*2+1];
+-    time_total-=ov_time_total(vf,link);
+-    if(seconds>=time_total)break;
++  for(link=0;link<vf->links;link++){
++    double addsec = ov_time_total(vf,link);
++    if(seconds<time_total+addsec)break;
++    time_total+=addsec;
++    pcm_total+=vf->pcmlengths[link*2+1];
+   }
+ 
++  if(link==vf->links)return(OV_EINVAL);
++
+   /* enough information to convert time offset to pcm offset */
+   {
+     ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
+@@ -1387,20 +1390,23 @@
+   /* translate time to PCM position and call ov_pcm_seek */
+ 
+   int link=-1;
+-  ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
+-  double time_total=ov_time_total(vf,-1);
++  ogg_int64_t pcm_total=0;
++  double time_total=0.;
+ 
+   if(vf->ready_state<OPENED)return(OV_EINVAL);
+   if(!vf->seekable)return(OV_ENOSEEK);
+-  if(seconds<0 || seconds>time_total)return(OV_EINVAL);
++  if(seconds<0)return(OV_EINVAL);
+   
+   /* which bitstream section does this time offset occur in? */
+-  for(link=vf->links-1;link>=0;link--){
+-    pcm_total-=vf->pcmlengths[link*2+1];
+-    time_total-=ov_time_total(vf,link);
+-    if(seconds>=time_total)break;
++  for(link=0;link<vf->links;link++){
++    double addsec = ov_time_total(vf,link);
++    if(seconds<time_total+addsec)break;
++    time_total+=addsec;
++    pcm_total+=vf->pcmlengths[link*2+1];
+   }
+ 
++  if(link==vf->links)return(OV_EINVAL);
++
+   /* enough information to convert time offset to pcm offset */
+   {
+     ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;

=== modified file 'debian/changelog'
--- a/debian/changelog	2007-01-22 15:36:29 +0000
+++ b/debian/changelog	2007-06-29 14:03:40 +0000
@@ -1,3 +1,10 @@
+libvorbis (1.1.2.dfsg-2) unstable; urgency=low
+
+  * Bump to Standards-Version 3.7.2. 
+  * Add upstream_r13198-fix_segfault_in_ov_time_seek.diff. closes: #281995.
+
+ -- Clint Adams <schizo at debian.org>  Fri, 29 Jun 2007 09:46:12 -0400
+
 libvorbis (1.1.2.dfsg-1.2) unstable; urgency=high
 
   * Fix shlibs files for libvorbisenc and libvorbisfile, which were broken

=== modified file 'debian/control'
--- a/debian/control	2006-01-20 02:20:18 +0000
+++ b/debian/control	2007-06-29 14:03:40 +0000
@@ -2,9 +2,9 @@
 Section: libs
 Priority: optional
 Maintainer: Debian Xiph.org Maintainers <pkg-xiph-maint at lists.alioth.debian.org>
-Uploaders: Christopher L Cheney <ccheney at debian.org>, Adeodato Sim?? <dato at net.com.org.es>
+Uploaders: Adeodato Sim?? <dato at net.com.org.es>, Clint Adams <schizo at debian.org>
 Build-Depends: autotools-dev, debhelper, quilt, libogg-dev
-Standards-Version: 3.6.2
+Standards-Version: 3.7.2
 
 Package: libvorbis0a
 Architecture: any



More information about the pkg-xiph-commits mailing list