Fix CID 103: resource leak in EsOutAdd and check malloc return values.
authorJean-Paul Saman <jpsaman@videolan.org>
Sat, 31 May 2008 15:13:43 +0000 (17:13 +0200)
committerJean-Paul Saman <jpsaman@videolan.org>
Sat, 31 May 2008 15:13:43 +0000 (17:13 +0200)
src/input/es_out.c

index 42c12eb..b5ac3dc 100644 (file)
@@ -183,6 +183,13 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
     vlc_value_t  val;
     int i;
 
+    if( !out ) return NULL;
+    if( !p_sys )
+    {
+        free( out );
+        return NULL;
+    }
+
     out->pf_add     = EsOutAdd;
     out->pf_send    = EsOutSend;
     out->pf_del     = EsOutDel;
@@ -570,6 +577,7 @@ static es_out_pgrm_t *EsOutProgramAdd( es_out_t *out, int i_group )
     vlc_value_t       val;
 
     es_out_pgrm_t *p_pgrm = malloc( sizeof( es_out_pgrm_t ) );
+    if( !p_pgrm ) return NULL;
 
     /* Init */
     p_pgrm->i_id = i_group;
@@ -889,9 +897,12 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt )
     es_out_pgrm_t     *p_pgrm = NULL;
     int i;
 
+    if( !es ) return NULL;
+
     if( fmt->i_group < 0 )
     {
         msg_Err( p_input, "invalid group number" );
+        free( es );
         return NULL;
     }