[SCM] VLC media player packaging branch, sid, updated. debian/1.0.5-1-9-g4136aa2
xtophe-guest at users.alioth.debian.org
xtophe-guest at users.alioth.debian.org
Mon Mar 1 22:41:51 UTC 2010
The following commit has been merged in the sid branch:
commit 4136aa2445a1a681de4ba52163861105745f480f
Author: Christophe Mutricy <xtophe at videolan.org>
Date: Mon Mar 1 22:33:54 2010 +0000
Fix crash in FTP url handling
Patch taken upstream
LP: #465560
diff --git a/debian/patches/505-ftp-crash.patch b/debian/patches/505-ftp-crash.patch
new file mode 100644
index 0000000..100e169
--- /dev/null
+++ b/debian/patches/505-ftp-crash.patch
@@ -0,0 +1,79 @@
+commit 4eae7755498cc56d56b5703907717054cbe805e3
+Author: Rémi Denis-Courmont <remi at remlab.net>
+Date: Sun Feb 28 18:53:52 2010 +0200
+
+ FTP: handle ftp://HOST correctly
+
+ This should fix LP#465560 - segmentation fault in strstr()
+ (cherry picked from commit 7056f7113ecf94d1a87a0ee22840f25537ff66ab)
+
+diff --git a/modules/access/ftp.c b/modules/access/ftp.c
+index dffea0d..295c6ac 100644
+--- a/modules/access/ftp.c
++++ b/modules/access/ftp.c
+@@ -305,8 +305,8 @@ static int parseURL( vlc_url_t *url, const char *path )
+ /* FTP URLs are relative to user's default directory (RFC1738 §3.2)
+ For absolute path use ftp://foo.bar//usr/local/etc/filename */
+ /* FIXME: we should issue a series of CWD, one per slash */
+- if( url->psz_path && *url->psz_path == '/' )
+- url->psz_path++;
++ if( url->psz_path == NULL )
++ return VLC_SUCCESS;
+
+ char *type = strstr( url->psz_path, ";type=" );
+ if( type )
+@@ -342,15 +342,16 @@ static int InOpen( vlc_object_t *p_this )
+ goto exit_error;
+
+ /* get size */
+- if( ftp_SendCommand( p_this, p_sys, "SIZE %s", p_sys->url.psz_path
+- ? p_sys->url.psz_path : "" ) < 0
++ if( p_sys->url.psz_path == NULL )
++ p_sys->directory = true;
++ else
++ if( ftp_SendCommand( p_this, p_sys, "SIZE %s", p_sys->url.psz_path ) < 0
+ || ftp_ReadCommand( p_this, p_sys, NULL, &psz_arg ) != 2 )
+ {
+ msg_Dbg( p_access, "cannot get file size" );
+ msg_Dbg( p_access, "will try to get directory contents" );
+- if( ftp_SendCommand( p_this, p_sys, "CWD %s", p_sys->url.psz_path
+- ? p_sys->url.psz_path : "" ) < 0 ||
+- ftp_ReadCommand( p_this, p_sys, NULL, &psz_arg ) != 2 )
++ if( ftp_SendCommand( p_this, p_sys, "CWD %s", p_sys->url.psz_path ) < 0
++ || ftp_ReadCommand( p_this, p_sys, NULL, &psz_arg ) != 2 )
+ {
+ msg_Err( p_access, "file or directory doesn't exist" );
+ net_Close( p_sys->fd_cmd );
+@@ -399,6 +400,11 @@ static int OutOpen( vlc_object_t *p_this )
+
+ if( parseURL( &p_sys->url, p_access->psz_path ) )
+ goto exit_error;
++ if( p_sys->url.psz_path == NULL )
++ {
++ msg_Err( p_this, "no filename specified" );
++ goto exit_error;
++ }
+
+ if( Connect( p_this, p_sys ) )
+ goto exit_error;
+@@ -514,7 +520,7 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len )
+ }
+ else
+ {
+- snprintf( (char*)p_buffer, i_len, "ftp://%s:%d/%s/%s\n",
++ snprintf( (char*)p_buffer, i_len, "ftp://%s:%d%s/%s\n",
+ p_sys->url.psz_host, p_sys->url.i_port,
+ p_sys->url.psz_path, psz_line );
+ free( psz_line );
+@@ -807,9 +813,10 @@ static int ftp_StartStream( vlc_object_t *p_access, access_sys_t *p_sys,
+ else
+ {
+ /* "1xx" message */
++ assert( p_sys->url.psz_path );
+ if( ftp_SendCommand( p_access, p_sys, "%s %s",
+ p_sys->out ? "STOR" : "RETR",
+- p_sys->url.psz_path ? p_sys->url.psz_path : "" ) < 0
++ p_sys->url.psz_path ) < 0
+ || ftp_ReadCommand( p_access, p_sys, &i_answer, NULL ) > 2 )
+ {
+ msg_Err( p_access, "cannot retrieve file" );
diff --git a/debian/patches/series b/debian/patches/series
index 82656f8..38fa83d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,3 +9,4 @@
502_fix_typo.patch
503_jack_input.diff
504-rtmp-crash.patch
+505-ftp-crash.patch
--
VLC media player packaging
More information about the pkg-multimedia-commits
mailing list