[vlc-devel] commit: demux/playlit/*: Check asprintf return malloc. ( Rémi Duraffort )
git version control
git at videolan.org
Wed Sep 3 22:04:21 CEST 2008
vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Wed Sep 3 22:06:10 2008 +0200| [9676321a537e902706b44b68adb7102100f48811] | committer: Rémi Duraffort
demux/playlit/*: Check asprintf return malloc.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9676321a537e902706b44b68adb7102100f48811
---
modules/demux/playlist/asx.c | 51 +++++++++++++++++++++----------------
modules/demux/playlist/dvb.c | 12 ++++----
modules/demux/playlist/playlist.c | 6 +++-
modules/demux/playlist/sgimb.c | 46 +++++++++++++++++++++++----------
4 files changed, 71 insertions(+), 44 deletions(-)
diff --git a/modules/demux/playlist/asx.c b/modules/demux/playlist/asx.c
index 08b0b25..a66e228 100644
--- a/modules/demux/playlist/asx.c
+++ b/modules/demux/playlist/asx.c
@@ -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 */;
diff --git a/modules/demux/playlist/dvb.c b/modules/demux/playlist/dvb.c
index 904be67..2e00cd0 100644
--- a/modules/demux/playlist/dvb.c
+++ b/modules/demux/playlist/dvb.c
@@ -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 );
diff --git a/modules/demux/playlist/playlist.c b/modules/demux/playlist/playlist.c
index 657e1fc..3b8374d 100644
--- a/modules/demux/playlist/playlist.c
+++ b/modules/demux/playlist/playlist.c
@@ -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;
}
diff --git a/modules/demux/playlist/sgimb.c b/modules/demux/playlist/sgimb.c
index 612e5e7..878a41a 100644
--- a/modules/demux/playlist/sgimb.c
+++ b/modules/demux/playlist/sgimb.c
@@ -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 );
More information about the vlc-devel
mailing list