Commit 11a95cce authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

MMS: fix Stack overflow

SA-1201
(cherry picked from commit 3a57afee14a7f00fd6ff0cccb90a60923ccf766d)
(cherry picked from commit f5cb63575c65be2719ed8f2cad0e4dff7f288872)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent fffe51c4
...@@ -456,7 +456,7 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) ...@@ -456,7 +456,7 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto )
int b_udp = ( i_proto == MMS_PROTO_UDP ) ? 1 : 0; int b_udp = ( i_proto == MMS_PROTO_UDP ) ? 1 : 0;
var_buffer_t buffer; var_buffer_t buffer;
char tmp[4096]; char *tmp;
uint16_t *p; uint16_t *p;
int i_server_version; int i_server_version;
int i_tool_version; int i_tool_version;
...@@ -532,11 +532,18 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) ...@@ -532,11 +532,18 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto )
var_buffer_initwrite( &buffer, 0 ); var_buffer_initwrite( &buffer, 0 );
var_buffer_add16( &buffer, 0x001c ); var_buffer_add16( &buffer, 0x001c );
var_buffer_add16( &buffer, 0x0003 ); var_buffer_add16( &buffer, 0x0003 );
sprintf( tmp, if( asprintf( &tmp,
"NSPlayer/7.0.0.1956; {"GUID_FMT"}; Host: %s", "NSPlayer/7.0.0.1956; {"GUID_FMT"}; Host: %s",
GUID_PRINT( p_sys->guid ), GUID_PRINT( p_sys->guid ),
p_url->psz_host ); p_url->psz_host ) < 0 )
{
var_buffer_free( &buffer );
net_Close( p_sys->i_handle_tcp );
return VLC_ENOMEM;
}
var_buffer_addUTF16( &buffer, tmp ); var_buffer_addUTF16( &buffer, tmp );
free( tmp );
mms_CommandSend( p_access, mms_CommandSend( p_access,
0x01, /* connexion request */ 0x01, /* connexion request */
...@@ -589,17 +596,28 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) ...@@ -589,17 +596,28 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto )
var_buffer_add32( &buffer, 0x00000002 ); var_buffer_add32( &buffer, 0x00000002 );
if( b_udp ) if( b_udp )
{ {
sprintf( tmp, if( asprintf( &tmp,
"\\\\%s\\UDP\\%d", "\\\\%s\\UDP\\%d",
p_sys->sz_bind_addr, p_sys->sz_bind_addr,
7000 ); // FIXME 7000 ) < 0) // FIXME
{
var_buffer_free( &buffer );
MMSClose( p_access );
return VLC_EGENERIC;
}
} }
else else
{ {
sprintf( tmp, "\\\\192.168.0.1\\TCP\\1242" ); if( asprintf( &tmp, "\\\\192.168.0.1\\TCP\\1242" ) < 0 )
{
var_buffer_free( &buffer );
MMSClose( p_access );
return VLC_EGENERIC;
}
} }
var_buffer_addUTF16( &buffer, tmp ); var_buffer_addUTF16( &buffer, tmp );
var_buffer_add16( &buffer, '0' ); var_buffer_add16( &buffer, '0' );
free( tmp );
mms_CommandSend( p_access, mms_CommandSend( p_access,
0x02, /* connexion request */ 0x02, /* connexion request */
......
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