diff --git a/media/libvorbis/README_MOZILLA b/media/libvorbis/README_MOZILLA index f0dc065fe003..ed814740e56c 100644 --- a/media/libvorbis/README_MOZILLA +++ b/media/libvorbis/README_MOZILLA @@ -12,4 +12,5 @@ support for builds with WINCE defined. BUG 469639 - Failed to build firefox trunk on OpenSolaris bug481601.patch is appled to fix bug 481601. bug487519.patch: fix for bug 487519. -bug498827.patch: fix for bug 498827 \ No newline at end of file +bug498827.patch: fix for bug 498827 +bug498855.patch: fix for bug 498855 \ No newline at end of file diff --git a/media/libvorbis/bug498855.patch b/media/libvorbis/bug498855.patch new file mode 100644 index 000000000000..3785aab5fafa --- /dev/null +++ b/media/libvorbis/bug498855.patch @@ -0,0 +1,36 @@ +diff --git a/media/libvorbis/lib/vorbis_synthesis.c b/media/libvorbis/lib/vorbis_synthesis.c +index b7b2399..05774fd 100644 +--- a/media/libvorbis/lib/vorbis_synthesis.c ++++ b/media/libvorbis/lib/vorbis_synthesis.c +@@ -19,22 +19,26 @@ + #include + #include "vorbis/codec.h" + #include "codec_internal.h" + #include "registry.h" + #include "misc.h" + #include "os.h" + + int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){ +- vorbis_dsp_state *vd=vb->vd; +- private_state *b=vd->backend_state; +- vorbis_info *vi=vd->vi; +- codec_setup_info *ci=vi->codec_setup; +- oggpack_buffer *opb=&vb->opb; ++ vorbis_dsp_state *vd= vb ? vb->vd : 0; ++ private_state *b= vd ? vd->backend_state : 0; ++ vorbis_info *vi= vd ? vd->vi : 0; ++ codec_setup_info *ci= vi ? vi->codec_setup : 0; ++ oggpack_buffer *opb=vb ? &vb->opb : 0; + int type,mode,i; ++ ++ if (!vd || !b || !vi || !ci || !opb) { ++ return OV_EBADPACKET; ++ } + + /* first things first. Make sure decode is ready */ + _vorbis_block_ripcord(vb); + oggpack_readinit(opb,op->packet,op->bytes); + + /* Check the packet type */ + if(oggpack_read(opb,1)!=0){ + /* Oops. This is not an audio data packet */ diff --git a/media/libvorbis/lib/vorbis_synthesis.c b/media/libvorbis/lib/vorbis_synthesis.c index b7b2399d2d0e..05774fdfacab 100644 --- a/media/libvorbis/lib/vorbis_synthesis.c +++ b/media/libvorbis/lib/vorbis_synthesis.c @@ -24,12 +24,16 @@ #include "os.h" int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){ - vorbis_dsp_state *vd=vb->vd; - private_state *b=vd->backend_state; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - oggpack_buffer *opb=&vb->opb; + vorbis_dsp_state *vd= vb ? vb->vd : 0; + private_state *b= vd ? vd->backend_state : 0; + vorbis_info *vi= vd ? vd->vi : 0; + codec_setup_info *ci= vi ? vi->codec_setup : 0; + oggpack_buffer *opb=vb ? &vb->opb : 0; int type,mode,i; + + if (!vd || !b || !vi || !ci || !opb) { + return OV_EBADPACKET; + } /* first things first. Make sure decode is ready */ _vorbis_block_ripcord(vb); diff --git a/media/libvorbis/update.sh b/media/libvorbis/update.sh index 81b485affeeb..a96928ce2140 100644 --- a/media/libvorbis/update.sh +++ b/media/libvorbis/update.sh @@ -50,3 +50,4 @@ patch -p3 < ./alloca.diff patch -p3 <./bug481601.patch patch -p3