]> git.sesse.net Git - vlc/commitdiff
avi: do not allocate memory of size 0 (if i_extra == 0, p_extra is not released).
authorRémi Duraffort <ivoire@videolan.org>
Wed, 28 Jul 2010 18:42:05 +0000 (20:42 +0200)
committerRémi Duraffort <ivoire@videolan.org>
Wed, 28 Jul 2010 19:34:14 +0000 (21:34 +0200)
modules/demux/avi/avi.c

index ebb8f565c42f16634b94743ce580ddbdcd6f00a9..a6b9154f5b99523e13daf5367d56e4d347898ece 100644 (file)
@@ -437,9 +437,12 @@ static int Open( vlc_object_t * p_this )
 
                 fmt.i_extra = __MIN( p_auds->p_wf->cbSize,
                     p_auds->i_chunk_size - sizeof(WAVEFORMATEX) );
-                fmt.p_extra = malloc( fmt.i_extra );
-                if( !fmt.p_extra ) goto error;
-                memcpy( fmt.p_extra, &p_auds->p_wf[1], fmt.i_extra );
+                if( fmt.i_extra > 0 )
+                {
+                    fmt.p_extra = malloc( fmt.i_extra );
+                    if( !fmt.p_extra ) goto error;
+                    memcpy( fmt.p_extra, &p_auds->p_wf[1], fmt.i_extra );
+                }
                 break;
 
             case( AVIFOURCC_vids ):
@@ -512,9 +515,12 @@ static int Open( vlc_object_t * p_this )
                 fmt.i_extra =
                     __MIN( p_vids->p_bih->biSize - sizeof( BITMAPINFOHEADER ),
                            p_vids->i_chunk_size - sizeof(BITMAPINFOHEADER) );
-                fmt.p_extra = malloc( fmt.i_extra );
-                if( !fmt.p_extra ) goto error;
-                memcpy( fmt.p_extra, &p_vids->p_bih[1], fmt.i_extra );
+                if( fmt.i_extra > 0 )
+                {
+                    fmt.p_extra = malloc( fmt.i_extra );
+                    if( !fmt.p_extra ) goto error;
+                    memcpy( fmt.p_extra, &p_vids->p_bih[1], fmt.i_extra );
+                }
 
                 msg_Dbg( p_demux, "stream[%d] video(%4.4s) %"PRIu32"x%"PRIu32" %dbpp %ffps",
                          i, (char*)&p_vids->p_bih->biCompression,