Commit fe82dccc authored by Laurent Aimar's avatar Laurent Aimar

Fixed segfault with corrupted zip file.

parent 08813ee6
...@@ -353,24 +353,22 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer ) ...@@ -353,24 +353,22 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer )
{ {
stream_sys_t *p_sys = s->p_sys; stream_sys_t *p_sys = s->p_sys;
unzFile file = p_sys->zipFile;
if( !file )
return -1;
/* Get some infos about zip archive */ /* Get some infos about zip archive */
int i_ret = 0; int i_ret = 0;
unzFile file = p_sys->zipFile;
vlc_array_t *p_filenames = vlc_array_new(); /* Will contain char* */ vlc_array_t *p_filenames = vlc_array_new(); /* Will contain char* */
/* List all file names in Zip archive */ /* List all file names in Zip archive */
i_ret = GetFilesInZip( s, file, p_filenames, NULL ); i_ret = GetFilesInZip( s, file, p_filenames, NULL );
if( i_ret < 0 ) if( i_ret < 0 )
{ {
unzClose( file );
i_ret = -1; i_ret = -1;
goto exit; goto exit;
} }
/* Close archive */
unzClose( file );
p_sys->zipFile = NULL;
/* Construct the xspf playlist */ /* Construct the xspf playlist */
i_ret = WriteXSPF( pp_buffer, p_filenames, p_sys->psz_path ); i_ret = WriteXSPF( pp_buffer, p_filenames, p_sys->psz_path );
if( i_ret > 0 ) if( i_ret > 0 )
...@@ -379,6 +377,10 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer ) ...@@ -379,6 +377,10 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer )
i_ret = -1; i_ret = -1;
exit: exit:
/* Close archive */
unzClose( file );
p_sys->zipFile = NULL;
for( int i = 0; i < vlc_array_count( p_filenames ); i++ ) for( int i = 0; i < vlc_array_count( p_filenames ); i++ )
{ {
free( vlc_array_item_at_index( p_filenames, i ) ); free( vlc_array_item_at_index( p_filenames, i ) );
......
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