[vlc-devel] [PATCH] Avoid a crash with some corrupted mkvs

Denis Charmet typx at dinauz.org
Fri Dec 23 20:41:19 CET 2011


Should close #5659
---
 modules/demux/mkv/matroska_segment.cpp |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp
index 2bef45e..072dd71 100644
--- a/modules/demux/mkv/matroska_segment.cpp
+++ b/modules/demux/mkv/matroska_segment.cpp
@@ -930,6 +930,11 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
                 p_tk->fmt.i_extra       = GetDWLE( &p_bih->biSize ) - sizeof( BITMAPINFOHEADER );
                 if( p_tk->fmt.i_extra > 0 )
                 {
+                    /* Very unlikely yet possible: bug #5659*/
+                    size_t maxlen = p_tk->i_extra_data - sizeof( BITMAPINFOHEADER );
+                    p_tk->fmt.i_extra = ( p_tk->fmt.i_extra < maxlen )?
+                        p_tk->fmt.i_extra : maxlen;
+
                     p_tk->fmt.p_extra = xmalloc( p_tk->fmt.i_extra );
                     memcpy( p_tk->fmt.p_extra, &p_bih[1], p_tk->fmt.i_extra );
                 }
-- 
1.7.7.3




More information about the vlc-devel mailing list