[vlc-devel] commit: Handle memory errors in MP4 ctts - refs #1508 ( Rémi Denis-Courmont )
git version control
git at videolan.org
Fri Mar 28 16:05:01 CET 2008
vlc | branch: 0.8.6-bugfix | Rémi Denis-Courmont <rem at videolan.org> | Sun Mar 16 23:17:27 2008 +0200| [35afca501f04eb1dc84647392e52ea1757a237cd]
Handle memory errors in MP4 ctts - refs #1508
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=35afca501f04eb1dc84647392e52ea1757a237cd
---
modules/demux/mp4/libmp4.c | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 231e066..28d04c9 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -803,9 +803,16 @@ error:
MP4_READBOX_EXIT( code );
}
+
+static void MP4_FreeBox_ctts( MP4_Box_t *p_box )
+{
+ FREENULL( p_box->data.p_ctts->i_sample_count );
+ FREENULL( p_box->data.p_ctts->i_sample_offset );
+}
+
static int MP4_ReadBox_ctts( stream_t *p_stream, MP4_Box_t *p_box )
{
- unsigned int i;
+ unsigned int i, code = 0;
MP4_READBOX_ENTER( MP4_Box_data_ctts_t );
MP4_GETVERSIONFLAGS( p_box->data.p_ctts );
@@ -816,26 +823,29 @@ static int MP4_ReadBox_ctts( stream_t *p_stream, MP4_Box_t *p_box )
calloc( p_box->data.p_ctts->i_entry_count, sizeof(uint32_t) );
p_box->data.p_ctts->i_sample_offset =
calloc( p_box->data.p_ctts->i_entry_count, sizeof(uint32_t) );
+ if( ( p_box->data.p_ctts->i_sample_count == NULL )
+ || ( p_box->data.p_ctts->i_sample_offset == NULL ) )
+ {
+ MP4_FreeBox_ctts( p_box );
+ goto error;
+ }
for( i = 0; (i < p_box->data.p_ctts->i_entry_count )&&( i_read >=8 ); i++ )
{
MP4_GET4BYTES( p_box->data.p_ctts->i_sample_count[i] );
MP4_GET4BYTES( p_box->data.p_ctts->i_sample_offset[i] );
}
+ code = 1;
#ifdef MP4_VERBOSE
msg_Dbg( p_stream, "read box: \"ctts\" entry-count %d",
p_box->data.p_ctts->i_entry_count );
#endif
- MP4_READBOX_EXIT( 1 );
+error:
+ MP4_READBOX_EXIT( code );
}
-static void MP4_FreeBox_ctts( MP4_Box_t *p_box )
-{
- FREE( p_box->data.p_ctts->i_sample_count );
- FREE( p_box->data.p_ctts->i_sample_offset );
-}
static int MP4_ReadLengthDescriptor( uint8_t **pp_peek, int64_t *i_read )
{
More information about the vlc-devel
mailing list