Mercurial > pidgin
diff libpurple/protocols/msn/nexus.c @ 22832:f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
leaking.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Sat, 03 May 2008 23:51:43 +0000 |
parents | f5874552b8d5 |
children | d756a0477c06 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/nexus.c Sat May 03 21:03:13 2008 +0000 +++ b/libpurple/protocols/msn/nexus.c Sat May 03 23:51:43 2008 +0000 @@ -52,6 +52,7 @@ 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 @@ 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 @@ 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_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 @@ 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;