diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-10-01 21:21:50 -0700 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-10-01 21:21:50 -0700 |
commit | 52f5e90f166179d461e29af98d8b2852d9f12be0 (patch) | |
tree | 305e3226bb9302ddc68c10a5a5a22a3da869003c /protocols | |
parent | 2c6b0f4dbc367963d21314636c4b114dc7aadd32 (diff) |
Fixed possible crash bug on removing contacts while the auth cookie expired.
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/msn/soap.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/protocols/msn/soap.c b/protocols/msn/soap.c index 21e9feec..baa73718 100644 --- a/protocols/msn/soap.c +++ b/protocols/msn/soap.c @@ -969,13 +969,12 @@ int msn_soap_ab_contact_add( struct im_connection *ic, bee_user_t *bu ) static int msn_soap_ab_contact_del_build_request( struct msn_soap_req_data *soap_req ) { struct msn_data *md = soap_req->ic->proto_data; - bee_user_t *bu = soap_req->data; - struct msn_buddy_data *bd = bu->data; + const char *cid = soap_req->data; soap_req->url = g_strdup( SOAP_ADDRESSBOOK_URL ); soap_req->action = g_strdup( SOAP_AB_CONTACT_DEL_ACTION ); soap_req->payload = msn_soap_abservice_build( SOAP_AB_CONTACT_DEL_PAYLOAD, - "Timer", md->tokens[1], bd->cid ); + "Timer", md->tokens[1], cid ); return 1; } @@ -988,12 +987,15 @@ static int msn_soap_ab_contact_del_handle_response( struct msn_soap_req_data *so static int msn_soap_ab_contact_del_free_data( struct msn_soap_req_data *soap_req ) { + g_free( soap_req->data ); return 0; } int msn_soap_ab_contact_del( struct im_connection *ic, bee_user_t *bu ) { - return msn_soap_start( ic, bu, + struct msn_buddy_data *bd = bu->data; + + return msn_soap_start( ic, g_strdup( bd->cid ), msn_soap_ab_contact_del_build_request, NULL, msn_soap_ab_contact_del_handle_response, |