aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--protocols/jabber/s5bytestream.c5
-rw-r--r--protocols/jabber/si.c8
2 files changed, 8 insertions, 5 deletions
diff --git a/protocols/jabber/s5bytestream.c b/protocols/jabber/s5bytestream.c
index c292e61e..5fcbef6a 100644
--- a/protocols/jabber/s5bytestream.c
+++ b/protocols/jabber/s5bytestream.c
@@ -281,11 +281,12 @@ int jabber_bs_recv_request( struct im_connection *ic, struct xt_node *node, stru
shnode = qnode->children;
while( ( shnode = xt_find_node( shnode, "streamhost" ) ) )
{
- char *jid, *host;
+ char *jid, *host, *port_s;
int port;
if( ( jid = xt_find_attr( shnode, "jid" ) ) &&
( host = xt_find_attr( shnode, "host" ) ) &&
- ( ( port = atoi( xt_find_attr( shnode, "port" ) ) ) ) )
+ ( port_s = xt_find_attr( shnode, "port" ) ) &&
+ ( sscanf( port_s, "%d", &port ) == 1 ) )
{
jabber_streamhost_t *sh = g_new0( jabber_streamhost_t, 1 );
sh->jid = g_strdup(jid);
diff --git a/protocols/jabber/si.c b/protocols/jabber/si.c
index e7aeffc9..424db8b3 100644
--- a/protocols/jabber/si.c
+++ b/protocols/jabber/si.c
@@ -40,7 +40,7 @@ void jabber_si_free_transfer( file_transfer_t *ft)
if( tf->fd != -1 )
{
- close( tf->fd );
+ disconnect( tf->fd );
tf->fd = -1;
}
@@ -51,6 +51,7 @@ void jabber_si_free_transfer( file_transfer_t *ft)
g_free( tf->tgt_jid );
g_free( tf->iq_id );
g_free( tf->sid );
+ g_free( tf );
}
/* file_transfer canceled() callback */
@@ -203,7 +204,7 @@ void jabber_si_transfer_request( struct im_connection *ic, file_transfer_t *ft,
int jabber_si_handle_request( struct im_connection *ic, struct xt_node *node, struct xt_node *sinode)
{
struct xt_node *c, *d, *reply;
- char *sid, *ini_jid, *tgt_jid, *iq_id, *s, *ext_jid;
+ char *sid, *ini_jid, *tgt_jid, *iq_id, *s, *ext_jid, *size_s;
struct jabber_buddy *bud;
int requestok = FALSE;
char *name;
@@ -229,7 +230,8 @@ int jabber_si_handle_request( struct im_connection *ic, struct xt_node *node, st
!( d = xt_find_node( sinode->children, "file" ) ) ||
!( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FILETRANSFER ) == 0 ) ||
!( name = xt_find_attr( d, "name" ) ) ||
- !( size = (size_t) atoll( xt_find_attr( d, "size" ) ) ) ||
+ !( size_s = xt_find_attr( d, "size" ) ) ||
+ !( 1 == sscanf( size_s, "%lld", &size ) ) ||
!( d = xt_find_node( sinode->children, "feature" ) ) ||
!( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FEATURE ) == 0 ) ||
!( d = xt_find_node( d->children, "x" ) ) ||