[vlc-devel] commit: contrib: Fix libmatroska ebml crash (Derk-Jan Hartman )

git version control git at videolan.org
Tue Sep 23 23:32:31 CEST 2008


vlc | branch: master | Derk-Jan Hartman <hartman at videolan.org> | Tue Sep 23 23:32:10 2008 +0200| [6b7d5713b280eb9e6f199eae989e61b5054fb3cc] | committer: Derk-Jan Hartman 

contrib: Fix libmatroska ebml crash

This fixes the matroska crash in at least our Windows and Linux version,
until a new libebml is released. Laurent Aimar had mostly worked around these in
[ce718de21f000a5dda416960a2b7dffdacabd9a2] but FindNextElement was still vulnerable in

Tested on a matroska download with gaps. Many thanks to Laurent

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6b7d5713b280eb9e6f199eae989e61b5054fb3cc
---

 extras/contrib/src/Makefile                        |    3 +--
 .../contrib/src/Patches/libmatroska-kaxblock.patch |   11 +++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/extras/contrib/src/Makefile b/extras/contrib/src/Makefile
index 16025aa..04abfd0 100644
--- a/extras/contrib/src/Makefile
+++ b/extras/contrib/src/Makefile
@@ -951,7 +951,6 @@ libebml-$(LIBEBML_VERSION).tar.bz2:
 libebml: libebml-$(LIBEBML_VERSION).tar.bz2
 	$(EXTRACT_BZ2)
 #endif
-
 ifdef HAVE_WIN32
 	(cd $@; patch -p0 < ../Patches/libebml-svn-win32.patch)
 endif
@@ -990,7 +989,7 @@ libmatroska-$(LIBMATROSKA_VERSION).tar.bz2:
 libmatroska: libmatroska-$(LIBMATROSKA_VERSION).tar.bz2
 	$(EXTRACT_BZ2)
 #endif 
-
+	patch -p0 < ./Patches/libmatroska-kaxblock.patch
 ifdef HAVE_WIN32
 	(cd $@; patch -p0 < ../Patches/libmatroska-win32.patch)
 endif
diff --git a/extras/contrib/src/Patches/libmatroska-kaxblock.patch b/extras/contrib/src/Patches/libmatroska-kaxblock.patch
new file mode 100644
index 0000000..e6f0d58
--- /dev/null
+++ b/extras/contrib/src/Patches/libmatroska-kaxblock.patch
@@ -0,0 +1,11 @@
+diff -ruN libmatroska-0.8.1/matroska/KaxBlock.h libmatroska/matroska/KaxBlock.h
+--- libmatroska-0.8.1/matroska/KaxBlock.h	2007-01-14 18:20:35.000000000 +0100
++++ libmatroska/matroska/KaxBlock.h	2008-09-23 23:05:55.000000000 +0200
+@@ -367,6 +367,7 @@
+ 	public:
+ 		KaxBlockVirtual() :ParentCluster(NULL) {Data = DataBlock; Size = countof(DataBlock);}
+ 		KaxBlockVirtual(const KaxBlockVirtual & ElementToClone);
++                ~KaxBlockVirtual() { if( Data == DataBlock ) SetBuffer( NULL, 0 ); };
+ 		static EbmlElement & Create() {return *(new KaxBlockVirtual);}
+ 		const EbmlCallbacks & Generic() const {return ClassInfos;}
+ 		static const EbmlCallbacks ClassInfos;




More information about the vlc-devel mailing list