Commit 7b053f54 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* Don't crash if the hdlr in a mov has no name.

* spelling correction and debug for out of bound child boxes.
parent 1bccb7df
...@@ -225,7 +225,7 @@ int MP4_ReadBoxCommon( stream_t *p_stream, MP4_Box_t *p_box ) ...@@ -225,7 +225,7 @@ int MP4_ReadBoxCommon( stream_t *p_stream, MP4_Box_t *p_box )
/***************************************************************************** /*****************************************************************************
* MP4_NextBox : Go to the next box * MP4_NextBox : Go to the next box
***************************************************************************** *****************************************************************************
* if p_box == NULL, go to the next box in witch we are( at the begining ). * if p_box == NULL, go to the next box in which we are( at the begining ).
*****************************************************************************/ *****************************************************************************/
static int MP4_NextBox( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_NextBox( stream_t *p_stream, MP4_Box_t *p_box )
{ {
...@@ -248,6 +248,7 @@ static int MP4_NextBox( stream_t *p_stream, MP4_Box_t *p_box ) ...@@ -248,6 +248,7 @@ static int MP4_NextBox( stream_t *p_stream, MP4_Box_t *p_box )
if( p_box->i_size + p_box->i_pos >= if( p_box->i_size + p_box->i_pos >=
p_box->p_father->i_size + p_box->p_father->i_pos ) p_box->p_father->i_size + p_box->p_father->i_pos )
{ {
msg_Dbg( p_stream, "out of bound child" );
return 0; /* out of bound */ return 0; /* out of bound */
} }
} }
...@@ -582,30 +583,33 @@ static int MP4_ReadBox_hdlr( stream_t *p_stream, MP4_Box_t *p_box ) ...@@ -582,30 +583,33 @@ static int MP4_ReadBox_hdlr( stream_t *p_stream, MP4_Box_t *p_box )
MP4_GET4BYTES( i_reserved ); MP4_GET4BYTES( i_reserved );
MP4_GET4BYTES( i_reserved ); MP4_GET4BYTES( i_reserved );
MP4_GET4BYTES( i_reserved ); MP4_GET4BYTES( i_reserved );
p_box->data.p_hdlr->psz_name = NULL;
p_box->data.p_hdlr->psz_name = calloc( sizeof( char ), i_read + 1 ); if( i_read > 0 )
/* Yes, I love .mp4 :( */
if( p_box->data.p_hdlr->i_predefined == VLC_FOURCC( 'm', 'h', 'l', 'r' ) )
{ {
uint8_t i_len; p_box->data.p_hdlr->psz_name = calloc( sizeof( char ), i_read + 1 );
int i_copy;
MP4_GET1BYTE( i_len ); /* Yes, I love .mp4 :( */
i_copy = __MIN( i_read, i_len ); if( p_box->data.p_hdlr->i_predefined == VLC_FOURCC( 'm', 'h', 'l', 'r' ) )
{
uint8_t i_len;
int i_copy;
memcpy( p_box->data.p_hdlr->psz_name, p_peek, i_copy ); MP4_GET1BYTE( i_len );
p_box->data.p_hdlr->psz_name[i_copy] = '\0'; i_copy = __MIN( i_read, i_len );
}
else
{
memcpy( p_box->data.p_hdlr->psz_name, p_peek, i_read );
p_box->data.p_hdlr->psz_name[i_read] = '\0';
}
memcpy( p_box->data.p_hdlr->psz_name, p_peek, i_copy );
p_box->data.p_hdlr->psz_name[i_copy] = '\0';
}
else
{
memcpy( p_box->data.p_hdlr->psz_name, p_peek, i_read );
p_box->data.p_hdlr->psz_name[i_read] = '\0';
}
}
#ifdef MP4_VERBOSE #ifdef MP4_VERBOSE
msg_Dbg( p_stream, "read box: \"hdlr\" hanler type %4.4s name %s", msg_Dbg( p_stream, "read box: \"hdlr\" handler type %4.4s name %s",
(char*)&p_box->data.p_hdlr->i_handler_type, (char*)&p_box->data.p_hdlr->i_handler_type,
p_box->data.p_hdlr->psz_name ); p_box->data.p_hdlr->psz_name );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment