Commit da014eb8 authored by Arnaud Schauly's avatar Arnaud Schauly

fixed a segfault under windows.

parent 0c091c92
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* sap.c : SAP interface module * sap.c : SAP interface module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: sap.c,v 1.4 2002/12/06 22:44:03 gitan Exp $ * $Id: sap.c,v 1.5 2002/12/10 00:02:29 gitan Exp $
* *
* Authors: Arnaud Schauly <gitan@via.ecp.fr> * Authors: Arnaud Schauly <gitan@via.ecp.fr>
* *
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
/* SAP is always on that port */ /* SAP is always on that port */
#define HELLO_PORT 9875 #define HELLO_PORT 9875
#define HELLO_GROUP "239.255.255.255" #define HELLO_GROUP "224.2.127.254"
#define ADD_SESSION 1 #define ADD_SESSION 1
/***************************************************************************** /*****************************************************************************
...@@ -201,7 +201,6 @@ static void Run( intf_thread_t *p_intf ) ...@@ -201,7 +201,6 @@ static void Run( intf_thread_t *p_intf )
while( !p_intf->b_die ) while( !p_intf->b_die )
{ {
int i_read; int i_read;
addrlen=sizeof(addr); addrlen=sizeof(addr);
...@@ -268,7 +267,6 @@ static int sess_toitem( intf_thread_t * p_intf, sess_descr_t * p_sd ) ...@@ -268,7 +267,6 @@ static int sess_toitem( intf_thread_t * p_intf, sess_descr_t * p_sd )
playlist_t *p_playlist; playlist_t *p_playlist;
psz_uri_default = NULL; psz_uri_default = NULL;
cfield_parse( p_sd->psz_connection, &psz_uri_default ); cfield_parse( p_sd->psz_connection, &psz_uri_default );
for( i_count=0 ; i_count <= p_sd->i_media ; i_count ++ ) for( i_count=0 ; i_count <= p_sd->i_media ; i_count ++ )
...@@ -324,6 +322,7 @@ static int sess_toitem( intf_thread_t * p_intf, sess_descr_t * p_sd ) ...@@ -324,6 +322,7 @@ static int sess_toitem( intf_thread_t * p_intf, sess_descr_t * p_sd )
/* Filling p_item->psz_uri */ /* Filling p_item->psz_uri */
i_multicast = ismult( psz_uri ); i_multicast = ismult( psz_uri );
p_item->psz_uri = malloc( strlen( psz_proto ) + strlen( psz_uri ) + p_item->psz_uri = malloc( strlen( psz_proto ) + strlen( psz_uri ) +
strlen( psz_port ) + 5 +i_multicast ); strlen( psz_port ) + 5 +i_multicast );
if( p_item->psz_uri == NULL ) if( p_item->psz_uri == NULL )
...@@ -377,18 +376,18 @@ static void cfield_parse( char *psz_cfield, char **ppsz_uri ) ...@@ -377,18 +376,18 @@ static void cfield_parse( char *psz_cfield, char **ppsz_uri )
{ {
psz_pos = psz_cfield; psz_pos = psz_cfield;
while( *psz_pos && *psz_pos != ' ' && *psz_pos !='\0' ) while( *psz_pos != ' ' && *psz_pos !='\0' )
{ {
psz_pos++; psz_pos++;
} }
psz_pos++; psz_pos++;
while( *psz_pos && *psz_pos != ' ' && *psz_pos !='\0' ) while( *psz_pos != ' ' && *psz_pos !='\0' )
{ {
psz_pos++; psz_pos++;
} }
psz_pos++; psz_pos++;
*ppsz_uri = psz_pos; *ppsz_uri = psz_pos;
while( *psz_pos && *psz_pos != ' ' && *psz_pos !='/' while( *psz_pos != ' ' && *psz_pos !='/'
&& *psz_pos != '\0' ) && *psz_pos != '\0' )
{ {
psz_pos++; psz_pos++;
...@@ -406,7 +405,7 @@ static void cfield_parse( char *psz_cfield, char **ppsz_uri ) ...@@ -406,7 +405,7 @@ static void cfield_parse( char *psz_cfield, char **ppsz_uri )
} }
/********************************************************************** /**********************************************************************
* mcfield_parse * mfield_parse
********************************************************************* *********************************************************************
* put into *ppsz_proto, and *ppsz_port, the protocol and the port. * put into *ppsz_proto, and *ppsz_port, the protocol and the port.
*********************************************************************/ *********************************************************************/
...@@ -419,20 +418,21 @@ static void mfield_parse( char *psz_mfield, char **ppsz_proto, ...@@ -419,20 +418,21 @@ static void mfield_parse( char *psz_mfield, char **ppsz_proto,
if( psz_mfield ) if( psz_mfield )
{ {
psz_pos = psz_mfield; psz_pos = psz_mfield;
while( *psz_pos && *psz_pos != ' ' ) while( *psz_pos != '\0' && *psz_pos != ' ' )
{ {
psz_pos++; psz_pos++;
} }
psz_pos++; psz_pos++;
*ppsz_port = psz_pos; *ppsz_port = psz_pos;
while( *psz_pos && *psz_pos !=' ' && *psz_pos!='/' ) while( *psz_pos != '\0' && *psz_pos && *psz_pos !=' ' && *psz_pos!='/' )
{ {
psz_pos++; psz_pos++;
} }
if( *psz_pos == '/' ) // FIXME does not support multi-port if( *psz_pos == '/' ) // FIXME does not support multi-port
{ {
*psz_pos = '\0'; *psz_pos = '\0';
while( *psz_pos && *psz_pos !=' ' ) psz_pos++;
while( *psz_pos != '\0' && *psz_pos !=' ' )
{ {
psz_pos++; psz_pos++;
} }
...@@ -440,7 +440,7 @@ static void mfield_parse( char *psz_mfield, char **ppsz_proto, ...@@ -440,7 +440,7 @@ static void mfield_parse( char *psz_mfield, char **ppsz_proto,
*psz_pos = '\0'; *psz_pos = '\0';
psz_pos++; psz_pos++;
*ppsz_proto = psz_pos; *ppsz_proto = psz_pos;
while( *psz_pos && *psz_pos !=' ' && *psz_pos!='\0' && while( *psz_pos!='\0' && *psz_pos !=' ' &&
*psz_pos!='/' ) *psz_pos!='/' )
{ {
*psz_pos = tolower( *psz_pos ); *psz_pos = tolower( *psz_pos );
...@@ -475,12 +475,11 @@ static int parse_sap( char ** ppsz_sa_packet ) { /* Dummy Parser : does nothin ...@@ -475,12 +475,11 @@ static int parse_sap( char ** ppsz_sa_packet ) { /* Dummy Parser : does nothin
static int packet_handle( intf_thread_t * p_intf, char ** ppsz_packet ) { static int packet_handle( intf_thread_t * p_intf, char ** ppsz_packet ) {
int j=0; int j=0;
sess_descr_t * p_sd; sess_descr_t * p_sd;
/* playlist_t *p_playlist;
playlist_item_t *p_item; */
j=parse_sap( ppsz_packet ); j=parse_sap( ppsz_packet );
if(j != 0) { if(j != 0) {
p_sd = parse_sdp( *ppsz_packet, p_intf ); p_sd = parse_sdp( *ppsz_packet, p_intf );
...@@ -530,7 +529,7 @@ static sess_descr_t * parse_sdp( char * psz_pct, intf_thread_t * p_intf ) ...@@ -530,7 +529,7 @@ static sess_descr_t * parse_sdp( char * psz_pct, intf_thread_t * p_intf )
sd->i_media=-1; sd->i_media=-1;
j=0; j=0;
while( psz_pct[j]!=EOF ) while( psz_pct[j]!=EOF && psz_pct[j] != '\0' )
{ {
j++; j++;
if (psz_pct[j] == '=') if (psz_pct[j] == '=')
...@@ -609,18 +608,18 @@ static sess_descr_t * parse_sdp( char * psz_pct, intf_thread_t * p_intf ) ...@@ -609,18 +608,18 @@ static sess_descr_t * parse_sdp( char * psz_pct, intf_thread_t * p_intf )
} }
default : { default : {
msg_Info( p_intf, "Warning : Ignored field \"%c\" ",
psz_pct[j-1] );
ppsz_fill = NULL; ppsz_fill = NULL;
} }
} }
k=0;j++; k=0;j++;
while (psz_pct[j] != '\n'&& psz_pct[j] != EOF) { while (psz_pct[j] != '\n'&& psz_pct[j] != EOF) {
k++; j++; k++; j++;
} }
j--; j--;
if( ppsz_fill != NULL ) if( ppsz_fill != NULL )
{ {
*ppsz_fill= malloc( sizeof(char) * (k+1) ); *ppsz_fill= malloc( sizeof(char) * (k+1) );
...@@ -642,6 +641,7 @@ static void free_sd( sess_descr_t * p_sd ) ...@@ -642,6 +641,7 @@ static void free_sd( sess_descr_t * p_sd )
int i; int i;
if( p_sd ) if( p_sd )
{ {
FREE( p_sd->psz_origin ); FREE( p_sd->psz_origin );
FREE( p_sd->psz_sessionname ); FREE( p_sd->psz_sessionname );
FREE( p_sd->psz_information ); FREE( p_sd->psz_information );
...@@ -695,6 +695,7 @@ static int ismult( char *psz_uri ) ...@@ -695,6 +695,7 @@ static int ismult( char *psz_uri )
free( psz_c ); free( psz_c );
return 0; return 0;
} }
free( psz_c ); free( psz_c );
return 1; return 1;
} }
......
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