[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