[libvorbis] 03/04: Dropped patches that are included in the new upstream version and rebase the ones that aren't.

Martin Steghöfer martin.steghoefer-guest at moszumanska.debian.org
Wed Sep 23 10:32:09 UTC 2015


This is an automated email from the git hooks/post-receive script.

martin.steghoefer-guest pushed a commit to branch package-new-upstream-version
in repository libvorbis.

commit 506026fa92b54f35c9770313a9e2fb9fab5d5346
Author: Martin Steghöfer <martin at steghoefer.eu>
Date:   Wed Sep 23 11:41:02 2015 +0200

    Dropped patches that are included in the new upstream version and rebase the ones that aren't.
---
 ...-Avoid-SIGFPE-when-bytespersample-is-zero.patch |   4 +-
 ...when-loading-Ogg-Theora-files-in-audacity.patch | 221 ---------------------
 ...g-rate-sanity-check-to-avoid-invalid-memo.patch |  39 ----
 ...-on-corrupt-input-file-invalid-mode-index.patch |  28 ---
 ...ccount-error-codes-returned-from-vorbis_p.patch |  31 ---
 ...ation-fault-on-two-subsequent-seeks-to-0-.patch |  27 ---
 ...ation-fault-on-two-subsequent-seeks-to-0-.patch | 202 -------------------
 ...ation-fault-on-two-subsequent-seeks-to-0-.patch |  59 ------
 debian/patches/series                              |   7 -
 9 files changed, 2 insertions(+), 616 deletions(-)

diff --git a/debian/patches/0002-Avoid-SIGFPE-when-bytespersample-is-zero.patch b/debian/patches/0002-Avoid-SIGFPE-when-bytespersample-is-zero.patch
index a448abc..a4852bc 100644
--- a/debian/patches/0002-Avoid-SIGFPE-when-bytespersample-is-zero.patch
+++ b/debian/patches/0002-Avoid-SIGFPE-when-bytespersample-is-zero.patch
@@ -11,10 +11,10 @@ Last-Update: 2014-10-14
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index 84bf8c3..47c58e1 100644
+index fc0c86f..c0219e0 100644
 --- a/lib/vorbisfile.c
 +++ b/lib/vorbisfile.c
-@@ -1906,7 +1906,8 @@ long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
+@@ -1990,7 +1990,8 @@ long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
      long channels=ov_info(vf,-1)->channels;
      long bytespersample=word * channels;
      vorbis_fpu_control fpu;
diff --git a/debian/patches/0003-Fix-hang-when-loading-Ogg-Theora-files-in-audacity.patch b/debian/patches/0003-Fix-hang-when-loading-Ogg-Theora-files-in-audacity.patch
deleted file mode 100644
index d8efce0..0000000
--- a/debian/patches/0003-Fix-hang-when-loading-Ogg-Theora-files-in-audacity.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-From: Martin Steghoefer <martin at steghoefer.eu>
-Date: Wed, 1 Oct 2014 12:36:56 +0200
-Subject: Fix hang when loading Ogg Theora files in audacity
-
-Fix hang with loading Ogg Theora files when seeking to PCM 0 by backporting
-r19159 of upstream SVN, authored by Chris Montgomery.
-
-Origin: backport, https://trac.xiph.org/changeset/19159
-Bug-Debian: http://bugs.debian.org/762571
-Reviewed-By: Petter Reinholdtsen <pere at debian.org>
-Last-Update: 2014-10-14
----
- lib/vorbisfile.c | 124 ++++++++++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 101 insertions(+), 23 deletions(-)
-
-diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index 47c58e1..b2e9f83 100644
---- a/lib/vorbisfile.c
-+++ b/lib/vorbisfile.c
-@@ -1421,22 +1421,28 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-     if(pos>=total)break;
-   }
- 
--  /* search within the logical bitstream for the page with the highest
--     pcm_pos preceding (or equal to) pos.  There is a danger here;
--     missing pages or incorrect frame number information in the
--     bitstream could make our task impossible.  Account for that (it
--     would be an error condition) */
-+  /* Search within the logical bitstream for the page with the highest
-+     pcm_pos preceding pos.  If we're looking for a position on the
-+     first page, bisection will halt without finding our position as
-+     it's before the first explicit granulepos fencepost. That case is
-+     handled separately below.
-+
-+     There is a danger here; missing pages or incorrect frame number
-+     information in the bitstream could make our task impossible.
-+     Account for that (it would be an error condition) */
-+
-+  /* new search algorithm originally by HB (Nicholas Vinen) */
- 
--  /* new search algorithm by HB (Nicholas Vinen) */
-   {
-     ogg_int64_t end=vf->offsets[link+1];
--    ogg_int64_t begin=vf->offsets[link];
-+    ogg_int64_t begin=vf->dataoffsets[link];
-     ogg_int64_t begintime = vf->pcmlengths[link*2];
-     ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
-     ogg_int64_t target=pos-total+begintime;
--    ogg_int64_t best=begin;
-+    ogg_int64_t best=-1;
- 
-     ogg_page og;
-+    /* bisection loop */
-     while(begin<end){
-       ogg_int64_t bisect;
- 
-@@ -1451,51 +1457,82 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-           bisect=begin;
-       }
- 
-+      /* only seek if the file position isn't already there */
-       if(bisect!=vf->offset){
-         result=_seek_helper(vf,bisect);
-         if(result) goto seek_error;
-       }
- 
-+      /* read loop within the bisection loop */
-       while(begin<end){
-         result=_get_next_page(vf,&og,end-vf->offset);
-         if(result==OV_EREAD) goto seek_error;
-         if(result<0){
-+          /* there is no next page! */
-           if(bisect<=begin+1)
--            end=begin; /* found it */
-+              /* No bisection left to perform.  We've either found the
-+                 best candidate already or failed. Exit loop. */
-+            end=begin;
-           else{
-+            /* We tried to load a fraction of the last page; back up a
-+               bit and try to get the whole last page */
-             if(bisect==0) goto seek_error;
-             bisect-=CHUNKSIZE;
-+
-+            /* don't repeat/loop on a read we've already performed */
-             if(bisect<=begin)bisect=begin+1;
-+
-+            /* seek and cntinue bisection */
-             result=_seek_helper(vf,bisect);
-             if(result) goto seek_error;
-           }
-         }else{
-           ogg_int64_t granulepos;
- 
-+          /* got a page. analyze it */
-+          /* only consider pages from primary vorbis stream */
-           if(ogg_page_serialno(&og)!=vf->serialnos[link])
-             continue;
- 
-+          /* only consider pages with the granulepos set */
-           granulepos=ogg_page_granulepos(&og);
-           if(granulepos==-1)continue;
- 
-           if(granulepos<target){
-+            /* this page is a successful candidate! Set state */
-+
-             best=result;  /* raw offset of packet with granulepos */
-             begin=vf->offset; /* raw offset of next page */
-             begintime=granulepos;
- 
-+            /* if we're before our target but within a short distance,
-+               don't bisect; read forward */
-             if(target-begintime>44100)break;
--            bisect=begin; /* *not* begin + 1 */
-+
-+            bisect=begin; /* *not* begin + 1 as above */
-           }else{
--            if(bisect<=begin+1)
--              end=begin;  /* found it */
--            else{
--              if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
-+
-+            /* This is one of our pages, but the granpos is
-+               post-target; it is not a bisection return
-+               candidate. (The only way we'd use it is if it's the
-+               first page in the stream; we handle that case later
-+               outside the bisection) */
-+            if(bisect<=begin+1){
-+              /* No bisection left to perform.  We've either found the
-+                 best candidate already or failed. Exit loop. */
-+              end=begin;
-+            }else{
-+              if(end==vf->offset){
-+                /* bisection read to the end; use the known page
-+                   boundary (result) to update bisection, back up a
-+                   little bit, and try again */
-                 end=result;
--                bisect-=CHUNKSIZE; /* an endless loop otherwise. */
-+                bisect-=CHUNKSIZE;
-                 if(bisect<=begin)bisect=begin+1;
-                 result=_seek_helper(vf,bisect);
-                 if(result) goto seek_error;
-               }else{
-+                /* Normal bisection */
-                 end=bisect;
-                 endtime=granulepos;
-                 break;
-@@ -1506,9 +1543,46 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-       }
-     }
- 
--    /* found our page. seek to it, update pcm offset. Easier case than
--       raw_seek, don't keep packets preceding granulepos. */
--    {
-+    /* Out of bisection: did it 'fail?' */
-+    if(best == -1){
-+
-+      /* Check the 'looking for data in first page' special case;
-+         bisection would 'fail' because our search target was before the
-+         first PCM granule position fencepost. */
-+
-+      if(begin == vf->dataoffsets[link] &&
-+         ogg_page_serialno(&og)==vf->serialnos[link]){
-+
-+        /* Yes, this is the beginning-of-stream case. We already have
-+           our page, right at the beginning of PCM data.  Set state
-+           and return. */
-+
-+        vf->offset=result;
-+        vf->pcm_offset=total;
-+
-+        if(link!=vf->current_link){
-+          /* Different link; dump entire decode machine */
-+          _decode_clear(vf);
-+
-+          vf->current_link=link;
-+          vf->current_serialno=vf->serialnos[link];
-+          vf->ready_state=STREAMSET;
-+
-+        }else{
-+          vorbis_synthesis_restart(&vf->vd);
-+        }
-+
-+        ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
-+        ogg_stream_pagein(&vf->os,&og);
-+
-+      }else
-+        goto seek_error;
-+
-+    }else{
-+
-+      /* Bisection found our page. seek to it, update pcm offset. Easier case than
-+         raw_seek, don't keep packets preceding granulepos. */
-+
-       ogg_page og;
-       ogg_packet op;
- 
-@@ -1538,15 +1612,19 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-       while(1){
-         result=ogg_stream_packetpeek(&vf->os,&op);
-         if(result==0){
--          /* !!! the packet finishing this page originated on a
--             preceding page. Keep fetching previous pages until we
--             get one with a granulepos or without the 'continued' flag
--             set.  Then just use raw_seek for simplicity. */
-+          /* No packet returned; we exited the bisection with 'best'
-+             pointing to a page with a granule position, so the packet
-+             finishing this page ('best') originated on a preceding
-+             page. Keep fetching previous pages until we get one with
-+             a granulepos or without the 'continued' flag set.  Then
-+             just use raw_seek for simplicity. */
- 
-           result=_seek_helper(vf,best);
-           if(result<0) goto seek_error;
- 
--          while(1){
-+          /* Do not rewind past the beginning of link data; if we do,
-+             it's either a bug or a broken stream */
-+          while(result>vf->dataoffsets[link]){
-             result=_get_prev_page(vf,&og);
-             if(result<0) goto seek_error;
-             if(ogg_page_serialno(&og)==vf->current_serialno &&
diff --git a/debian/patches/0004-Add-sampling-rate-sanity-check-to-avoid-invalid-memo.patch b/debian/patches/0004-Add-sampling-rate-sanity-check-to-avoid-invalid-memo.patch
deleted file mode 100644
index 86e6112..0000000
--- a/debian/patches/0004-Add-sampling-rate-sanity-check-to-avoid-invalid-memo.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin at steghoefer.eu>
-Date: Mon, 27 Oct 2014 22:06:15 +0100
-Subject: Add sampling rate sanity check to avoid invalid memory access.
-
-Bug-Debian: https://bugs.debian.org/716613
-Forwarded: https://trac.xiph.org/ticket/2078
-
-Input files with sampling rate 0 are useless and can make
-libvorbis access invalid memory because the logic in
-_vp_psy_init (and probably other functions) isn't prepared for
-it. A sanity check lets the library refuse those inputs
-gracefully in the initialization functions before they can
-do harm.
----
- lib/vorbisenc.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/lib/vorbisenc.c b/lib/vorbisenc.c
-index f0f7c08..afd1bff 100644
---- a/lib/vorbisenc.c
-+++ b/lib/vorbisenc.c
-@@ -903,6 +903,8 @@ int vorbis_encode_setup_vbr(vorbis_info *vi,
-                             long  channels,
-                             long  rate,
-                             float quality){
-+  if(rate <= 0) return OV_EINVAL;
-+
-   codec_setup_info *ci=vi->codec_setup;
-   highlevel_encode_setup *hi=&ci->hi;
- 
-@@ -948,6 +950,8 @@ int vorbis_encode_setup_managed(vorbis_info *vi,
-                                 long nominal_bitrate,
-                                 long min_bitrate){
- 
-+  if(rate <= 0) return OV_EINVAL;
-+
-   codec_setup_info *ci=vi->codec_setup;
-   highlevel_encode_setup *hi=&ci->hi;
-   double tnominal=nominal_bitrate;
diff --git a/debian/patches/0005-Fix-crash-on-corrupt-input-file-invalid-mode-index.patch b/debian/patches/0005-Fix-crash-on-corrupt-input-file-invalid-mode-index.patch
deleted file mode 100644
index 341122d..0000000
--- a/debian/patches/0005-Fix-crash-on-corrupt-input-file-invalid-mode-index.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin at steghoefer.eu>
-Date: Sun, 4 Jan 2015 17:44:09 +0100
-Subject: Fix crash on corrupt input file (invalid mode index)
-
-Bug-Debian: https://bugs.debian.org/774516
-Forwarded: https://trac.xiph.org/ticket/2140#comment:1
-
-The library crashes with a NULL pointer dereference, if the "mode"
-value read from the ogg file is invalid (referring to a mode whose
-parameters haven't been set). Check this immediately after reading
-the value and before accessing the mode parameters.
----
- lib/synthesis.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/synthesis.c b/lib/synthesis.c
-index 1af211d..1177818 100644
---- a/lib/synthesis.c
-+++ b/lib/synthesis.c
-@@ -164,7 +164,7 @@ long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
-     /* read our mode and pre/post windowsize */
-     mode=oggpack_read(&opb,modebits);
-   }
--  if(mode==-1)return(OV_EBADPACKET);
-+  if(mode==-1 || !ci->mode_param[mode])return(OV_EBADPACKET);
-   return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
- }
- 
diff --git a/debian/patches/0006-Take-into-account-error-codes-returned-from-vorbis_p.patch b/debian/patches/0006-Take-into-account-error-codes-returned-from-vorbis_p.patch
deleted file mode 100644
index 5bad316..0000000
--- a/debian/patches/0006-Take-into-account-error-codes-returned-from-vorbis_p.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin at steghoefer.eu>
-Date: Sun, 4 Jan 2015 23:20:23 +0100
-Subject: Take into account error codes returned from
- "vorbis_packet_blocksize" in "_initial_pcmoffset".
-
-Author: Timothy B. Terriberry <tterribe at xiph.org>
-Origin: https://trac.xiph.org/ticket/2140#comment:5
-Forwarded: https://trac.xiph.org/ticket/2142
----
- lib/vorbisfile.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index b2e9f83..1dcda9f 100644
---- a/lib/vorbisfile.c
-+++ b/lib/vorbisfile.c
-@@ -438,9 +438,11 @@ static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){
-     while((result=ogg_stream_packetout(&vf->os,&op))){
-       if(result>0){ /* ignore holes */
-         long thisblock=vorbis_packet_blocksize(vi,&op);
--        if(lastblock!=-1)
--          accumulated+=(lastblock+thisblock)>>2;
--        lastblock=thisblock;
-+        if(thisblock>=0){
-+          if(lastblock!=-1)
-+            accumulated+=(lastblock+thisblock)>>2;
-+          lastblock=thisblock;
-+        }
-       }
-     }
- 
diff --git a/debian/patches/0007-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch b/debian/patches/0007-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
deleted file mode 100644
index 5a496e9..0000000
--- a/debian/patches/0007-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Martin Steghoefer <martin at steghoefer.eu>
-Date: Sun, 20 Sep 2015 21:18:29 +0200
-Subject: Fix segmentation fault on two subsequent seeks to 0 (upstream r19164)
-
-Fixes a segmentation fault that occurs on two subsequent seeks to 0. This is one
-of three fixes that correct errors in the handling of the beginning-of-stream
-special case, introduced in the backport of r19159.
-
-Origin: backport, https://trac.xiph.org/changeset/19164
-Bug-Debian: http://bugs.debian.org/782831
-Last-Update: 2015-09-20
----
- lib/vorbisfile.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index 1dcda9f..9594be9 100644
---- a/lib/vorbisfile.c
-+++ b/lib/vorbisfile.c
-@@ -1559,7 +1559,6 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-            our page, right at the beginning of PCM data.  Set state
-            and return. */
- 
--        vf->offset=result;
-         vf->pcm_offset=total;
- 
-         if(link!=vf->current_link){
diff --git a/debian/patches/0008-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch b/debian/patches/0008-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
deleted file mode 100644
index d89d6b6..0000000
--- a/debian/patches/0008-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From: Martin Steghoefer <martin at steghoefer.eu>
-Date: Sun, 20 Sep 2015 21:26:04 +0200
-Subject: Fix segmentation fault on two subsequent seeks to 0 (upstream r19165)
-
-Fixes a segmentation fault that occurs on two subsequent seeks to 0. This is one
-of three fixes that correct errors in the handling of the beginning-of-stream
-special case, introduced in the backport of r19159.
-
-Origin: backport, https://trac.xiph.org/changeset/19165
-Bug-Debian: http://bugs.debian.org/782831
-Last-Update: 2015-09-20
----
- lib/vorbisfile.c | 82 +++++++++++++++++++++++++-------------------------------
- 1 file changed, 36 insertions(+), 46 deletions(-)
-
-diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index 9594be9..d018e09 100644
---- a/lib/vorbisfile.c
-+++ b/lib/vorbisfile.c
-@@ -80,11 +80,14 @@ static long _get_data(OggVorbis_File *vf){
- /* save a tiny smidge of verbosity to make the code more readable */
- static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
-   if(vf->datasource){
--    if(!(vf->callbacks.seek_func)||
--       (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
--      return OV_EREAD;
--    vf->offset=offset;
--    ogg_sync_reset(&vf->oy);
-+    /* only seek if the file position isn't already there */
-+    if(vf->offset != offset){
-+      if(!(vf->callbacks.seek_func)||
-+         (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
-+        return OV_EREAD;
-+      vf->offset=offset;
-+      ogg_sync_reset(&vf->oy);
-+    }
-   }else{
-     /* shouldn't happen unless someone writes a broken callback */
-     return OV_EFAULT;
-@@ -138,14 +141,12 @@ static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
-   }
- }
- 
--/* find the latest page beginning before the current stream cursor
--   position. Much dirtier than the above as Ogg doesn't have any
--   backward search linkage.  no 'readp' as it will certainly have to
--   read. */
-+/* find the latest page beginning before the passed in position. Much
-+   dirtier than the above as Ogg doesn't have any backward search
-+   linkage.  no 'readp' as it will certainly have to read. */
- /* returns offset or OV_EREAD, OV_FAULT */
--static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){
--  ogg_int64_t begin=vf->offset;
--  ogg_int64_t end=begin;
-+static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_int64_t begin,ogg_page *og){
-+  ogg_int64_t end = begin;
-   ogg_int64_t ret;
-   ogg_int64_t offset=-1;
- 
-@@ -220,11 +221,10 @@ static int _lookup_page_serialno(ogg_page *og, long *serialno_list, int n){
-    info of last page of the matching serial number instead of the very
-    last page.  If no page of the specified serialno is seen, it will
-    return the info of last page and alter *serialno.  */
--static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf,
-+static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, ogg_int64_t begin,
-                                          long *serial_list, int serial_n,
-                                          int *serialno, ogg_int64_t *granpos){
-   ogg_page og;
--  ogg_int64_t begin=vf->offset;
-   ogg_int64_t end=begin;
-   ogg_int64_t ret;
- 
-@@ -496,10 +496,10 @@ static int _bisect_forward_serialno(OggVorbis_File *vf,
-        down to (or just started with) a single link.  Now we need to
-        find the last vorbis page belonging to the first vorbis stream
-        for this link. */
--
-+    searched = end;
-     while(endserial != serialno){
-       endserial = serialno;
--      vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&endserial,&endgran);
-+      searched=_get_prev_page_serial(vf,searched,currentno_list,currentnos,&endserial,&endgran);
-     }
- 
-     vf->links=m+1;
-@@ -520,10 +520,15 @@ static int _bisect_forward_serialno(OggVorbis_File *vf,
- 
-   }else{
- 
-+    /* last page is not in the starting stream's serial number list,
-+       so we have multiple links.  Find where the stream that begins
-+       our bisection ends. */
-+
-     long *next_serialno_list=NULL;
-     int next_serialnos=0;
-     vorbis_info vi;
-     vorbis_comment vc;
-+    int testserial = serialno+1;
- 
-     /* the below guards against garbage seperating the last and
-        first pages of two links. */
-@@ -536,10 +541,8 @@ static int _bisect_forward_serialno(OggVorbis_File *vf,
-         bisect=(searched+endsearched)/2;
-       }
- 
--      if(bisect != vf->offset){
--        ret=_seek_helper(vf,bisect);
--        if(ret)return(ret);
--      }
-+      ret=_seek_helper(vf,bisect);
-+      if(ret)return(ret);
- 
-       last=_get_next_page(vf,&og,-1);
-       if(last==OV_EREAD)return(OV_EREAD);
-@@ -552,28 +555,22 @@ static int _bisect_forward_serialno(OggVorbis_File *vf,
-     }
- 
-     /* Bisection point found */
--
-     /* for the time being, fetch end PCM offset the simple way */
--    {
--      int testserial = serialno+1;
--      vf->offset = next;
--      while(testserial != serialno){
--        testserial = serialno;
--        vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&testserial,&searchgran);
--      }
-+    searched = next;
-+    while(testserial != serialno){
-+      testserial = serialno;
-+      searched = _get_prev_page_serial(vf,searched,currentno_list,currentnos,&testserial,&searchgran);
-     }
- 
--    if(vf->offset!=next){
--      ret=_seek_helper(vf,next);
--      if(ret)return(ret);
--    }
-+    ret=_seek_helper(vf,next);
-+    if(ret)return(ret);
- 
-     ret=_fetch_headers(vf,&vi,&vc,&next_serialno_list,&next_serialnos,NULL);
-     if(ret)return(ret);
-     serialno = vf->os.serialno;
-     dataoffset = vf->offset;
- 
--    /* this will consume a page, however the next bistection always
-+    /* this will consume a page, however the next bisection always
-        starts with a raw seek */
-     pcmoffset = _initial_pcmoffset(vf,&vi);
- 
-@@ -640,11 +637,11 @@ static int _open_seekable2(OggVorbis_File *vf){
-   /* Get the offset of the last page of the physical bitstream, or, if
-      we're lucky the last vorbis page of this link as most OggVorbis
-      files will contain a single logical bitstream */
--  end=_get_prev_page_serial(vf,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran);
-+  end=_get_prev_page_serial(vf,vf->end,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran);
-   if(end<0)return(end);
- 
-   /* now determine bitstream structure recursively */
--  if(_bisect_forward_serialno(vf,0,dataoffset,vf->offset,endgran,endserial,
-+  if(_bisect_forward_serialno(vf,0,dataoffset,end,endgran,endserial,
-                               vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD);
- 
-   vf->offsets[0]=0;
-@@ -1459,11 +1456,8 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-           bisect=begin;
-       }
- 
--      /* only seek if the file position isn't already there */
--      if(bisect!=vf->offset){
--        result=_seek_helper(vf,bisect);
--        if(result) goto seek_error;
--      }
-+      result=_seek_helper(vf,bisect);
-+      if(result) goto seek_error;
- 
-       /* read loop within the bisection loop */
-       while(begin<end){
-@@ -1619,21 +1613,17 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-              page. Keep fetching previous pages until we get one with
-              a granulepos or without the 'continued' flag set.  Then
-              just use raw_seek for simplicity. */
--
--          result=_seek_helper(vf,best);
--          if(result<0) goto seek_error;
--
-           /* Do not rewind past the beginning of link data; if we do,
-              it's either a bug or a broken stream */
-+          result=best;
-           while(result>vf->dataoffsets[link]){
--            result=_get_prev_page(vf,&og);
-+            result=_get_prev_page(vf,result,&og);
-             if(result<0) goto seek_error;
-             if(ogg_page_serialno(&og)==vf->current_serialno &&
-                (ogg_page_granulepos(&og)>-1 ||
-                 !ogg_page_continued(&og))){
-               return ov_raw_seek(vf,result);
-             }
--            vf->offset=result;
-           }
-         }
-         if(result<0){
diff --git a/debian/patches/0009-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch b/debian/patches/0009-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
deleted file mode 100644
index f018f61..0000000
--- a/debian/patches/0009-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Martin Steghoefer <martin at steghoefer.eu>
-Date: Sun, 20 Sep 2015 21:49:12 +0200
-Subject: Fix segmentation fault on two subsequent seeks to 0 (upstream r19171)
-
-Fixes a segmentation fault that occurs on two subsequent seeks to 0. This is one
-of three fixes that correct errors in the handling of the beginning-of-stream
-special case, introduced in the backport of r19159.
-
-Origin: backport, https://trac.xiph.org/changeset/19171
-Bug-Debian: http://bugs.debian.org/782831
-Last-Update: 2015-09-20
----
- lib/vorbisfile.c | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
-index d018e09..7644fd6 100644
---- a/lib/vorbisfile.c
-+++ b/lib/vorbisfile.c
-@@ -1439,8 +1439,21 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-     ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
-     ogg_int64_t target=pos-total+begintime;
-     ogg_int64_t best=-1;
-+    int         got_page=0;
- 
-     ogg_page og;
-+
-+    /* if we have only one page, there will be no bisection.  Grab the page here */
-+    if(begin==end){
-+      result=_seek_helper(vf,begin);
-+      if(result) goto seek_error;
-+
-+      result=_get_next_page(vf,&og,1);
-+      if(result<0) goto seek_error;
-+
-+      got_page=1;
-+    }
-+
-     /* bisection loop */
-     while(begin<end){
-       ogg_int64_t bisect;
-@@ -1484,6 +1497,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-           }
-         }else{
-           ogg_int64_t granulepos;
-+          got_page=1;
- 
-           /* got a page. analyze it */
-           /* only consider pages from primary vorbis stream */
-@@ -1546,7 +1560,8 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
-          bisection would 'fail' because our search target was before the
-          first PCM granule position fencepost. */
- 
--      if(begin == vf->dataoffsets[link] &&
-+      if(got_page &&
-+         begin == vf->dataoffsets[link] &&
-          ogg_page_serialno(&og)==vf->serialnos[link]){
- 
-         /* Yes, this is the beginning-of-stream case. We already have
diff --git a/debian/patches/series b/debian/patches/series
index 7d2f7b9..da9fe07 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,9 +1,2 @@
 0001-Fix-build-failure-with-DSO-link-changes.patch
 0002-Avoid-SIGFPE-when-bytespersample-is-zero.patch
-0003-Fix-hang-when-loading-Ogg-Theora-files-in-audacity.patch
-0004-Add-sampling-rate-sanity-check-to-avoid-invalid-memo.patch
-0005-Fix-crash-on-corrupt-input-file-invalid-mode-index.patch
-0006-Take-into-account-error-codes-returned-from-vorbis_p.patch
-0007-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
-0008-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch
-0009-Fix-segmentation-fault-on-two-subsequent-seeks-to-0-.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-xiph/libvorbis.git



More information about the pkg-xiph-commits mailing list