[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