[vlc-devel] commit: Fixed segfault with corrupted zip file. (Laurent Aimar )
git version control
git at videolan.org
Sun Feb 28 00:27:38 CET 2010
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Sat Feb 27 22:11:37 2010 +0100| [fe82dccc31a3a311f54cf8078127ba132679e54d] | committer: Laurent Aimar
Fixed segfault with corrupted zip file.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fe82dccc31a3a311f54cf8078127ba132679e54d
---
modules/access/zip/zipstream.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/modules/access/zip/zipstream.c b/modules/access/zip/zipstream.c
index abe7ba8..ae6316f 100644
--- a/modules/access/zip/zipstream.c
+++ b/modules/access/zip/zipstream.c
@@ -353,24 +353,22 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer )
{
stream_sys_t *p_sys = s->p_sys;
+ unzFile file = p_sys->zipFile;
+ if( !file )
+ return -1;
+
/* Get some infos about zip archive */
int i_ret = 0;
- unzFile file = p_sys->zipFile;
vlc_array_t *p_filenames = vlc_array_new(); /* Will contain char* */
/* List all file names in Zip archive */
i_ret = GetFilesInZip( s, file, p_filenames, NULL );
if( i_ret < 0 )
{
- unzClose( file );
i_ret = -1;
goto exit;
}
- /* Close archive */
- unzClose( file );
- p_sys->zipFile = NULL;
-
/* Construct the xspf playlist */
i_ret = WriteXSPF( pp_buffer, p_filenames, p_sys->psz_path );
if( i_ret > 0 )
@@ -379,6 +377,10 @@ static int CreatePlaylist( stream_t *s, char **pp_buffer )
i_ret = -1;
exit:
+ /* Close archive */
+ unzClose( file );
+ p_sys->zipFile = NULL;
+
for( int i = 0; i < vlc_array_count( p_filenames ); i++ )
{
free( vlc_array_item_at_index( p_filenames, i ) );
More information about the vlc-devel
mailing list