pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/multimedia/vlc Fix vlc wav handling heap overflow. A s...
details: https://anonhg.NetBSD.org/pkgsrc/rev/0cdc6618216d
branches: trunk
changeset: 544030:0cdc6618216d
user: tonnerre <tonnerre%pkgsrc.org@localhost>
date: Thu Jul 03 21:50:02 2008 +0000
description:
Fix vlc wav handling heap overflow. A specially crafted .WAV file could
be used to achieve that with an overly large fmt chunk. (CVE-2008-2430)
diffstat:
multimedia/vlc/Makefile | 4 +-
multimedia/vlc/distinfo | 3 +-
multimedia/vlc/patches/patch-ae | 43 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+), 3 deletions(-)
diffs (76 lines):
diff -r 44dcf16dbe8f -r 0cdc6618216d multimedia/vlc/Makefile
--- a/multimedia/vlc/Makefile Thu Jul 03 21:33:41 2008 +0000
+++ b/multimedia/vlc/Makefile Thu Jul 03 21:50:02 2008 +0000
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.56 2008/06/20 01:09:29 joerg Exp $
+# $NetBSD: Makefile,v 1.57 2008/07/03 21:50:02 tonnerre Exp $
#
DISTNAME= vlc-${VLC_VER}
VLC_VER= 0.8.6f
-PKGREVISION= 1
+PKGREVISION= 2
CATEGORIES= multimedia
MASTER_SITES= http://download.videolan.org/pub/videolan/vlc/${VLC_VER}/
EXTRACT_SUFX= .tar.bz2
diff -r 44dcf16dbe8f -r 0cdc6618216d multimedia/vlc/distinfo
--- a/multimedia/vlc/distinfo Thu Jul 03 21:33:41 2008 +0000
+++ b/multimedia/vlc/distinfo Thu Jul 03 21:50:02 2008 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.16 2008/04/20 15:31:02 tonnerre Exp $
+$NetBSD: distinfo,v 1.17 2008/07/03 21:50:02 tonnerre Exp $
SHA1 (vlc-0.8.6f.tar.bz2) = 9684bb7504636d3e3143734698c2bbac250f4a03
RMD160 (vlc-0.8.6f.tar.bz2) = c52d0cb7e8ba36f9d0959b9d6e1e8b1b36b71b04
@@ -7,3 +7,4 @@
SHA1 (patch-ab) = c311b82c00f1eea164189a9759c9ca576faec671
SHA1 (patch-ac) = 69f90b13aa4c398a00c12279c8bd8af922e9e8aa
SHA1 (patch-ad) = 29660533b468e6871fa8104e081f9321cfb30aa5
+SHA1 (patch-ae) = 21b6292e77469375edbfb7b828e298427e1ed118
diff -r 44dcf16dbe8f -r 0cdc6618216d multimedia/vlc/patches/patch-ae
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimedia/vlc/patches/patch-ae Thu Jul 03 21:50:02 2008 +0000
@@ -0,0 +1,43 @@
+$NetBSD: patch-ae,v 1.5 2008/07/03 21:50:02 tonnerre Exp $
+
+--- modules/demux/wav.c.orig 2008-03-23 23:41:49.000000000 +0100
++++ modules/demux/wav.c
+@@ -103,7 +103,8 @@ static int Open( vlc_object_t * p_this )
+ demux_sys_t *p_sys;
+
+ uint8_t *p_peek;
+- unsigned int i_size, i_extended;
++ uint32_t i_size;
++ unsigned int i_extended;
+ char *psz_name;
+
+ WAVEFORMATEXTENSIBLE *p_wf_ext = NULL;
+@@ -136,7 +137,8 @@ static int Open( vlc_object_t * p_this )
+ msg_Err( p_demux, "cannot find 'fmt ' chunk" );
+ goto error;
+ }
+- if( i_size < sizeof( WAVEFORMATEX ) - 2 ) /* XXX -2 isn't a typo */
++ i_size += 2;
++ if( i_size < sizeof( WAVEFORMATEX ) )
+ {
+ msg_Err( p_demux, "invalid 'fmt ' chunk" );
+ goto error;
+@@ -144,14 +146,15 @@ static int Open( vlc_object_t * p_this )
+ stream_Read( p_demux->s, NULL, 8 ); /* Cannot fail */
+
+ /* load waveformatex */
+- p_wf_ext = malloc( __EVEN( i_size ) + 2 );
++ p_wf_ext = malloc( i_size );
+ if( p_wf_ext == NULL )
+ goto error;
+
+ p_wf = (WAVEFORMATEX *)p_wf_ext;
+ p_wf->cbSize = 0;
+- if( stream_Read( p_demux->s,
+- p_wf, __EVEN( i_size ) ) < (int)__EVEN( i_size ) )
++ i_size -= 2;
++ if( stream_Read( p_demux->s, p_wf, i_size ) != (int)i_size
++ || ( ( i_size & 1 ) && stream_Read( p_demux->s, NULL, 1 ) != 1 ) )
+ {
+ msg_Err( p_demux, "cannot load 'fmt ' chunk" );
+ goto error;
Home |
Main Index |
Thread Index |
Old Index