summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Atallah <datallah@pidgin.im>2008-05-03 23:51:43 +0000
committerDaniel Atallah <datallah@pidgin.im>2008-05-03 23:51:43 +0000
commit6227bff5aa6f618c2aeaf9c072c6f7fd3aef40ae (patch)
treebd3f1ce8e95311b444a65d2b8f6b2d3d73f6527b
parent5fcb89232d9de18440e1541a4bc01082f9356406 (diff)
downloadpidgin-6227bff5aa6f618c2aeaf9c072c6f7fd3aef40ae.tar.gz
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
leaking.
-rw-r--r--libpurple/protocols/msn/contact.c22
-rw-r--r--libpurple/protocols/msn/dialog.c2
-rw-r--r--libpurple/protocols/msn/nexus.c14
-rw-r--r--libpurple/protocols/msn/notification.c11
-rw-r--r--libpurple/protocols/msn/oim.c16
-rw-r--r--libpurple/protocols/msn/page.c11
-rw-r--r--libpurple/protocols/msn/slpcall.c11
-rw-r--r--libpurple/protocols/msn/slplink.c7
-rw-r--r--libpurple/protocols/msn/slpmsg.c1
-rw-r--r--libpurple/protocols/msn/soap2.c15
-rw-r--r--libpurple/protocols/msn/sync.c7
-rw-r--r--libpurple/protocols/msn/userlist.c3
12 files changed, 52 insertions, 68 deletions
diff --git a/libpurple/protocols/msn/contact.c b/libpurple/protocols/msn/contact.c
index a38c477efd..61e1f2067d 100644
--- a/libpurple/protocols/msn/contact.c
+++ b/libpurple/protocols/msn/contact.c
@@ -100,56 +100,46 @@ msn_callback_state_free(MsnCallbackState *state)
void
msn_callback_state_set_who(MsnCallbackState *state, const gchar *who)
{
- gchar *nval;
g_return_if_fail(state != NULL);
- nval = g_strdup(who);
g_free(state->who);
- state->who = nval;
+ state->who = g_strdup(who);
}
void
msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid)
{
- gchar *nval;
g_return_if_fail(state != NULL);
- nval = g_strdup(uid);
g_free(state->uid);
- state->uid = nval;
+ state->uid = g_strdup(uid);
}
void
msn_callback_state_set_old_group_name(MsnCallbackState *state, const gchar *old_group_name)
{
- gchar *nval;
g_return_if_fail(state != NULL);
- nval = g_strdup(old_group_name);
g_free(state->old_group_name);
- state->old_group_name = nval;
+ state->old_group_name = g_strdup(old_group_name);
}
void
msn_callback_state_set_new_group_name(MsnCallbackState *state, const gchar *new_group_name)
{
- gchar *nval;
g_return_if_fail(state != NULL);
- nval = g_strdup(new_group_name);
g_free(state->new_group_name);
- state->new_group_name = nval;
+ state->new_group_name = g_strdup(new_group_name);
}
void
msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid)
{
- gchar *nval;
g_return_if_fail(state != NULL);
- nval = g_strdup(guid);
g_free(state->guid);
- state->guid = nval;
+ state->guid = g_strdup(guid);
}
@@ -539,6 +529,7 @@ msn_parse_addressbook_contacts(MsnContact *contact, xmlnode *node)
g_free(Name);
g_free(uid);
g_free(type);
+ g_free(mobile_number);
passport = Name = uid = type = mobile_number = NULL;
mobile = FALSE;
@@ -660,6 +651,7 @@ msn_parse_addressbook_contacts(MsnContact *contact, xmlnode *node)
g_free(Name);
g_free(uid);
g_free(type);
+ g_free(mobile_number);
}
static gboolean
diff --git a/libpurple/protocols/msn/dialog.c b/libpurple/protocols/msn/dialog.c
index 1b5ff3c540..013491315a 100644
--- a/libpurple/protocols/msn/dialog.c
+++ b/libpurple/protocols/msn/dialog.c
@@ -112,7 +112,7 @@ msn_show_sync_issue(MsnSession *session, const char *passport,
data = g_new0(MsnAddRemData, 1);
data->who = g_strdup(passport);
- data->group = group_name != NULL ? g_strdup(group_name) : NULL;
+ data->group = g_strdup(group_name);
data->gc = gc;
msg = g_strdup_printf(_("Buddy list synchronization issue in %s (%s)"),
diff --git a/libpurple/protocols/msn/nexus.c b/libpurple/protocols/msn/nexus.c
index 58d553ac7f..56293ebd8b 100644
--- a/libpurple/protocols/msn/nexus.c
+++ b/libpurple/protocols/msn/nexus.c
@@ -52,6 +52,7 @@ msn_nexus_destroy(MsnNexus *nexus)
if (nexus->challenge_data != NULL)
g_hash_table_destroy(nexus->challenge_data);
+ g_free(nexus->challenge_data_str);
g_free(nexus);
}
@@ -101,13 +102,10 @@ nexus_got_response_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data)
msn_twn_p = g_hash_table_lookup(nexus->challenge_data, "p");
/*setup the t and p parameter for session*/
- if (session->passport_info.t != NULL){
- g_free(session->passport_info.t);
- }
+ g_free(session->passport_info.t);
session->passport_info.t = g_strdup(msn_twn_t);
- if (session->passport_info.p != NULL)
- g_free(session->passport_info.p);
+ g_free(session->passport_info.p);
session->passport_info.p = g_strdup(msn_twn_p);
cert_str = g_strdup_printf("t=%s&p=%s",msn_twn_t,msn_twn_p);
@@ -133,7 +131,8 @@ msn_nexus_connect(MsnNexus *nexus)
MsnSession *session = nexus->session;
char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf;
char *fs0,*fs;
- char *username, *password;
+ const char *username;
+ char *password;
char *tail;
#ifdef NEXUS_LOGIN_TWN
char *challenge_str;
@@ -147,7 +146,7 @@ msn_nexus_connect(MsnNexus *nexus)
msn_session_set_login_step(session, MSN_LOGIN_STEP_GET_COOKIE);
/*prepare the Windows Live ID authentication token*/
- username = g_strdup(purple_account_get_username(session->account));
+ username = purple_account_get_username(session->account);
password = g_strndup(purple_connection_get_password(session->account->gc), 16);
lc = (char *)g_hash_table_lookup(nexus->challenge_data, "lc");
@@ -170,7 +169,6 @@ msn_nexus_connect(MsnNexus *nexus)
if(!(lc && id && tw && ru && ct && kpp && kv && ver && tpf)){
purple_debug_error("MSN Nexus","WLM Authenticate Key Error!\n");
msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication Failed"));
- g_free(username);
g_free(password);
msn_nexus_destroy(nexus);
session->nexus = NULL;
diff --git a/libpurple/protocols/msn/notification.c b/libpurple/protocols/msn/notification.c
index 15dbb1b83f..92c62d58f3 100644
--- a/libpurple/protocols/msn/notification.c
+++ b/libpurple/protocols/msn/notification.c
@@ -414,7 +414,9 @@ msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
g_return_if_fail(cmd->payload_cb != NULL);
- purple_debug_info("MSNP14", "MSG payload:{%.*s}\n", (guint)(cmd->payload_len), cmd->payload);
+#if 0 /* glib on win32 doesn't correctly support precision modifiers for a string */
+ purple_debug_info("MSNP14", "MSG payload:{%.*s}\n", cmd->payload_len, cmd->payload);
+#endif
cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len);
}
}
@@ -647,8 +649,8 @@ msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_
{
MsnTransaction *trans;
purple_debug_info("MSN Notification","Sending ADL with payload: %s\n", payload);
- trans = msn_transaction_new(cmdproc, "ADL","%" G_GSIZE_FORMAT, strlen(payload));
- msn_transaction_set_payload(trans, payload, strlen(payload));
+ trans = msn_transaction_new(cmdproc, "ADL","%" G_GSIZE_FORMAT, payload_len);
+ msn_transaction_set_payload(trans, payload, payload_len);
msn_cmdproc_send_trans(cmdproc, trans);
}
@@ -1705,6 +1707,9 @@ ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
msn_user_set_currentmedia(user, &media);
else
msn_user_set_currentmedia(user, NULL);
+ g_free(media.title);
+ g_free(media.album);
+ g_free(media.artist);
g_free(str);
msn_user_update(user);
diff --git a/libpurple/protocols/msn/oim.c b/libpurple/protocols/msn/oim.c
index 36be11cdfc..3fb9348337 100644
--- a/libpurple/protocols/msn/oim.c
+++ b/libpurple/protocols/msn/oim.c
@@ -58,7 +58,7 @@ msn_oim_new(MsnSession *session)
oim = g_new0(MsnOim, 1);
oim->session = session;
- oim->oim_list = NULL;
+ oim->oim_list = NULL;
oim->run_id = rand_guid();
oim->challenge = NULL;
oim->send_queue = g_queue_new();
@@ -71,16 +71,18 @@ void
msn_oim_destroy(MsnOim *oim)
{
MsnOimSendReq *request;
-
- purple_debug_info("OIM","destroy the OIM \n");
+
+ purple_debug_info("OIM", "destroy the OIM %p\n", oim);
g_free(oim->run_id);
g_free(oim->challenge);
-
+
while((request = g_queue_pop_head(oim->send_queue)) != NULL){
msn_oim_free_send_req(request);
}
+
g_queue_free(oim->send_queue);
-
+ g_list_free(oim->oim_list);
+
g_free(oim);
}
@@ -91,7 +93,7 @@ msn_oim_new_send_req(const char *from_member, const char*friendname,
MsnOimSendReq *request;
request = g_new0(MsnOimSendReq, 1);
- request->from_member =g_strdup(from_member);
+ request->from_member = g_strdup(from_member);
request->friendname = g_strdup(friendname);
request->to_member = g_strdup(to_member);
request->oim_msg = g_strdup(msg);
@@ -472,7 +474,7 @@ msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg)
xmlnode *iu_node;
MsnSession *session = oim->session;
- purple_debug_info("MSNP14:OIM", "%s", xmlmsg);
+ purple_debug_info("MSNP14:OIM", "%s\n", xmlmsg);
node = xmlnode_from_str(xmlmsg, -1);
if (strcmp(node->name, "MD") != 0) {
diff --git a/libpurple/protocols/msn/page.c b/libpurple/protocols/msn/page.c
index 6d4d0d5c80..250a7221c3 100644
--- a/libpurple/protocols/msn/page.c
+++ b/libpurple/protocols/msn/page.c
@@ -39,14 +39,9 @@ msn_page_destroy(MsnPage *page)
{
g_return_if_fail(page != NULL);
- if (page->body != NULL)
- g_free(page->body);
-
- if (page->from_location != NULL)
- g_free(page->from_location);
-
- if (page->from_phone != NULL)
- g_free(page->from_phone);
+ g_free(page->body);
+ g_free(page->from_location);
+ g_free(page->from_phone);
g_free(page);
}
diff --git a/libpurple/protocols/msn/slpcall.c b/libpurple/protocols/msn/slpcall.c
index 4dcf4c2ead..9c9fc5ea70 100644
--- a/libpurple/protocols/msn/slpcall.c
+++ b/libpurple/protocols/msn/slpcall.c
@@ -71,14 +71,9 @@ msn_slp_call_destroy(MsnSlpCall *slpcall)
if (slpcall->timer)
purple_timeout_remove(slpcall->timer);
- if (slpcall->id != NULL)
- g_free(slpcall->id);
-
- if (slpcall->branch != NULL)
- g_free(slpcall->branch);
-
- if (slpcall->data_info != NULL)
- g_free(slpcall->data_info);
+ g_free(slpcall->id);
+ g_free(slpcall->branch);
+ g_free(slpcall->data_info);
for (e = slpcall->slplink->slp_msgs; e != NULL; )
{
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c
index 753ef5d5cc..7975725e25 100644
--- a/libpurple/protocols/msn/slplink.c
+++ b/libpurple/protocols/msn/slplink.c
@@ -101,11 +101,8 @@ msn_slplink_destroy(MsnSlpLink *slplink)
session = slplink->session;
- if (slplink->local_user != NULL)
- g_free(slplink->local_user);
-
- if (slplink->remote_user != NULL)
- g_free(slplink->remote_user);
+ g_free(slplink->local_user);
+ g_free(slplink->remote_user);
#if 0
if (slplink->directconn != NULL)
diff --git a/libpurple/protocols/msn/slpmsg.c b/libpurple/protocols/msn/slpmsg.c
index 9bade7d224..462efb937a 100644
--- a/libpurple/protocols/msn/slpmsg.c
+++ b/libpurple/protocols/msn/slpmsg.c
@@ -95,6 +95,7 @@ msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
msg->nak_cb = NULL;
msg->ack_data = NULL;
}
+ g_list_free(slpmsg->msgs);
slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg);
diff --git a/libpurple/protocols/msn/soap2.c b/libpurple/protocols/msn/soap2.c
index 850d21604f..45efcdcf32 100644
--- a/libpurple/protocols/msn/soap2.c
+++ b/libpurple/protocols/msn/soap2.c
@@ -261,7 +261,7 @@ msn_soap_handle_body(MsnSoapConnection *conn, MsnSoapMessage *response)
static void
msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond)
{
- MsnSoapConnection *conn = data;
+ MsnSoapConnection *conn = data;
int count = 0, cnt;
char buf[8192];
char *linebreak;
@@ -382,7 +382,7 @@ msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond)
}
if (!handled && conn->headers_done) {
- if (conn->buf->len - conn->handled_len >=
+ if (conn->buf->len - conn->handled_len >=
conn->body_len) {
xmlnode *node = xmlnode_from_str(cursor, conn->body_len);
@@ -394,8 +394,11 @@ msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond)
conn->message = NULL;
message->xml = node;
- if (!msn_soap_handle_body(conn, message))
+ if (!msn_soap_handle_body(conn, message)) {
+ msn_soap_message_destroy(message);
return;
+ }
+ msn_soap_message_destroy(message);
}
msn_soap_connection_handle_next(conn);
@@ -508,7 +511,7 @@ msn_soap_connection_run(gpointer data)
g_free(authstr);
g_free(body);
- }
+ }
}
return FALSE;
@@ -643,12 +646,12 @@ msn_soap_message_destroy(MsnSoapMessage *message)
}
void
-msn_soap_message_add_header(MsnSoapMessage *req,
+msn_soap_message_add_header(MsnSoapMessage *message,
const char *name, const char *value)
{
char *header = g_strdup_printf("%s: %s\r\n", name, value);
- req->headers = g_slist_prepend(req->headers, header);
+ message->headers = g_slist_prepend(message->headers, header);
}
static void
diff --git a/libpurple/protocols/msn/sync.c b/libpurple/protocols/msn/sync.c
index 77ed063ef5..7f727fc2b7 100644
--- a/libpurple/protocols/msn/sync.c
+++ b/libpurple/protocols/msn/sync.c
@@ -156,16 +156,13 @@ lst_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
for (c = tokens; *c != NULL; c++)
{
- char *id;
-
- id = *c;
- group_ids = g_slist_append(group_ids, g_strdup(id));
+ group_ids = g_slist_append(group_ids, *c);
}
- g_strfreev(tokens);
msn_got_lst_user(session, user, list_op, group_ids);
+ g_strfreev(tokens);
g_slist_free(group_ids);
}
else
diff --git a/libpurple/protocols/msn/userlist.c b/libpurple/protocols/msn/userlist.c
index 2fdb283a97..e867c173c1 100644
--- a/libpurple/protocols/msn/userlist.c
+++ b/libpurple/protocols/msn/userlist.c
@@ -349,8 +349,7 @@ msn_got_lst_user(MsnSession *session, MsnUser *user,
GSList *c;
for (c = group_ids; c != NULL; c = g_slist_next(c))
{
- char *group_id;
- group_id = c->data;
+ char *group_id = c->data;
msn_user_add_group_id(user, group_id);
}