Commit 9676321a authored by Rémi Duraffort's avatar Rémi Duraffort

demux/playlit/*: Check asprintf return malloc.

parent c14bb395
......@@ -504,35 +504,42 @@ static int Demux( demux_t *p_demux )
{
if( i_starttime || i_duration )
{
if( i_starttime ) {
asprintf(ppsz_options+i_options, ":start-time=%d", i_starttime);
++i_options;
if( i_starttime )
{
if( asprintf(ppsz_options+i_options, ":start-time=%d", i_starttime) == -1 )
*(ppsz_options+i_options) = NULL;
else
++i_options;
}
if( i_duration ) {
asprintf(ppsz_options+i_options, ":stop-time=%d", i_starttime + i_duration);
++i_options;
if( i_duration )
{
if( asprintf(ppsz_options+i_options, ":stop-time=%d", i_starttime + i_duration) == -1 )
*(ppsz_options+i_options) = NULL;
else
++i_options;
}
}
/* create the new entry */
asprintf( &psz_name, "%d %s", i_entry_count, ( psz_title_entry ? psz_title_entry : p_current_input->psz_name ) );
p_entry = input_item_NewExt( p_demux, psz_href, psz_name, i_options, (const char * const *)ppsz_options, -1 );
FREENULL( psz_name );
input_item_CopyOptions( p_current_input, p_entry );
while( i_options )
if( asprintf( &psz_name, "%d %s", i_entry_count, ( psz_title_entry ? psz_title_entry : p_current_input->psz_name ) ) != -1 )
{
psz_name = ppsz_options[--i_options];
FREENULL(psz_name);
}
p_entry = input_item_NewExt( p_demux, psz_href, psz_name, i_options, (const char * const *)ppsz_options, -1 );
FREENULL( psz_name );
input_item_CopyOptions( p_current_input, p_entry );
while( i_options )
{
psz_name = ppsz_options[--i_options];
FREENULL( psz_name );
}
if( psz_title_entry ) input_item_SetTitle( p_entry, psz_title_entry );
if( psz_artist_entry ) input_item_SetArtist( p_entry, psz_artist_entry );
if( psz_copyright_entry ) input_item_SetCopyright( p_entry, psz_copyright_entry );
if( psz_moreinfo_entry ) input_item_SetURL( p_entry, psz_moreinfo_entry );
if( psz_abstract_entry ) input_item_SetDescription( p_entry, psz_abstract_entry );
input_item_AddSubItem( p_current_input, p_entry );
vlc_gc_decref( p_entry );
if( psz_title_entry ) input_item_SetTitle( p_entry, psz_title_entry );
if( psz_artist_entry ) input_item_SetArtist( p_entry, psz_artist_entry );
if( psz_copyright_entry ) input_item_SetCopyright( p_entry, psz_copyright_entry );
if( psz_moreinfo_entry ) input_item_SetURL( p_entry, psz_moreinfo_entry );
if( psz_abstract_entry ) input_item_SetDescription( p_entry, psz_abstract_entry );
input_item_AddSubItem( p_current_input, p_entry );
vlc_gc_decref( p_entry );
}
}
/* cleanup entry */;
......
......@@ -288,17 +288,17 @@ static int ParseLine( char *psz_line, char **ppsz_name,
{
char *psz_option;
asprintf( &psz_option, "program=%i", i_program );
INSERT_ELEM( *pppsz_options, (*pi_options), (*pi_options),
psz_option );
if( asprintf( &psz_option, "program=%i", i_program ) != -1 )
INSERT_ELEM( *pppsz_options, (*pi_options), (*pi_options),
psz_option );
}
if( i_frequency && pppsz_options && pi_options )
{
char *psz_option;
asprintf( &psz_option, "dvb-frequency=%i", i_frequency );
INSERT_ELEM( *pppsz_options, (*pi_options), (*pi_options),
psz_option );
if( asprintf( &psz_option, "dvb-frequency=%i", i_frequency ) != -1 )
INSERT_ELEM( *pppsz_options, (*pi_options), (*pi_options),
psz_option );
}
if( ppsz_name && psz_name ) *ppsz_name = strdup( psz_name );
......
......@@ -180,6 +180,8 @@ char *ProcessMRL( char *psz_mrl, char *psz_prefix )
if( strchr( psz_mrl, ':' ) ) return strdup( psz_mrl );
/* This a relative path, prepend the prefix */
asprintf( &psz_mrl, "%s%s", psz_prefix, psz_mrl );
return psz_mrl;
if( asprintf( &psz_mrl, "%s%s", psz_prefix, psz_mrl ) != -1 )
return psz_mrl;
else
return NULL;
}
......@@ -326,15 +326,23 @@ static int Demux ( demux_t *p_demux )
/* Definetly schedules multicast session */
/* We don't care if it's live or not */
free( p_sys->psz_uri );
asprintf( &p_sys->psz_uri, "udp://@" "%s:%i", p_sys->psz_mcast_ip, p_sys->i_mcast_port );
if( asprintf( &p_sys->psz_uri, "udp://@" "%s:%i", p_sys->psz_mcast_ip, p_sys->i_mcast_port ) == -1 )
{
p_sys->psz_uri = NULL;
return -1;
}
}
if( p_sys->psz_uri == NULL )
{
if( p_sys->psz_server && p_sys->psz_location )
{
asprintf( &p_sys->psz_uri, "rtsp://" "%s:%i%s",
p_sys->psz_server, p_sys->i_port > 0 ? p_sys->i_port : 554, p_sys->psz_location );
if( asprintf( &p_sys->psz_uri, "rtsp://" "%s:%i%s",
p_sys->psz_server, p_sys->i_port > 0 ? p_sys->i_port : 554, p_sys->psz_location ) == -1 )
{
p_sys->psz_uri = NULL;
return -1;
}
}
}
......@@ -349,8 +357,12 @@ static int Demux ( demux_t *p_demux )
}
free( p_sys->psz_uri );
asprintf( &p_sys->psz_uri, "%s%%3FMeDiAbAsEshowingId=%d%%26MeDiAbAsEconcert%%3FMeDiAbAsE",
p_sys->psz_uri, p_sys->i_sid );
if( asprintf( &p_sys->psz_uri, "%s%%3FMeDiAbAsEshowingId=%d%%26MeDiAbAsEconcert%%3FMeDiAbAsE",
p_sys->psz_uri, p_sys->i_sid ) == -1 )
{
p_sys->psz_uri = NULL;
return -1;
}
}
p_child = input_item_NewWithType( VLC_OBJECT(p_demux), p_sys->psz_uri,
......@@ -368,23 +380,29 @@ static int Demux ( demux_t *p_demux )
{
char *psz_option;
p_sys->i_packet_size += 1000;
asprintf( &psz_option, "mtu=%i", p_sys->i_packet_size );
input_item_AddOption( p_child, psz_option );
free( psz_option );
if( asprintf( &psz_option, "mtu=%i", p_sys->i_packet_size ) != -1 )
{
input_item_AddOption( p_child, psz_option );
free( psz_option );
}
}
if( !p_sys->psz_mcast_ip )
{
char *psz_option;
asprintf( &psz_option, "rtsp-caching=5000" );
input_item_AddOption( p_child, psz_option );
free( psz_option );
if( asprintf( &psz_option, "rtsp-caching=5000" ) != -1 )
{
input_item_AddOption( p_child, psz_option );
free( psz_option );
}
}
if( !p_sys->psz_mcast_ip && p_sys->b_rtsp_kasenna )
{
char *psz_option;
asprintf( &psz_option, "rtsp-kasenna" );
input_item_AddOption( p_child, psz_option );
free( psz_option );
if( asprintf( &psz_option, "rtsp-kasenna" ) != -1 )
{
input_item_AddOption( p_child, psz_option );
free( psz_option );
}
}
input_item_AddSubItem( p_current_input, p_child );
......
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