From: <nos...@us...> - 2006-11-22 20:10:24
|
Revision: 17813 http://svn.sourceforge.net/gaim/?rev=17813&view=rev Author: nosnilmot Date: 2006-11-22 12:10:01 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Don't crash when getting info on someone on jabber with no resource name Modified Paths: -------------- trunk/libgaim/protocols/jabber/buddy.c Modified: trunk/libgaim/protocols/jabber/buddy.c =================================================================== --- trunk/libgaim/protocols/jabber/buddy.c 2006-11-22 18:47:42 UTC (rev 17812) +++ trunk/libgaim/protocols/jabber/buddy.c 2006-11-22 20:10:01 UTC (rev 17813) @@ -602,7 +602,7 @@ GString *info_text; char *resource_name; JabberBuddyResource *jbr; - JabberBuddyInfoResource *jbir; + JabberBuddyInfoResource *jbir = NULL; GList *resources; /* not yet */ @@ -650,8 +650,9 @@ jbr = resources->data; if(jbr->status) purdy = gaim_strdup_withhtml(jbr->status); - g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", - _("Resource"), jbr->name); + if(jbr->name) + g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", + _("Resource"), jbr->name); g_string_append_printf(info_text, "<b>%s:</b> %d<br/>", _("Priority"), jbr->priority); g_string_append_printf(info_text, "<b>%s:</b> %s%s%s<br/>", @@ -661,7 +662,9 @@ if(purdy) g_free(purdy); - jbir = g_hash_table_lookup(jbi->resources, jbr->name); + if(jbr->name) + jbir = g_hash_table_lookup(jbi->resources, jbr->name); + if(jbir) { if(jbir->idle_seconds > 0) { g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-15 02:40:36
|
Revision: 18001 http://svn.sourceforge.net/gaim/?rev=18001&view=rev Author: thekingant Date: 2006-12-14 18:40:27 -0800 (Thu, 14 Dec 2006) Log Message: ----------- Update our Jabber vcard even when the buddy icon is null. This allows users to remove their buddy icon. Modified Paths: -------------- trunk/libgaim/protocols/jabber/buddy.c Modified: trunk/libgaim/protocols/jabber/buddy.c =================================================================== --- trunk/libgaim/protocols/jabber/buddy.c 2006-12-15 00:40:56 UTC (rev 18000) +++ trunk/libgaim/protocols/jabber/buddy.c 2006-12-15 02:40:27 UTC (rev 18001) @@ -386,8 +386,7 @@ char *avatar_file = NULL; struct tag_attr *tag_attr; - if(js->avatar_hash) - g_free(js->avatar_hash); + g_free(js->avatar_hash); js->avatar_hash = NULL; /* @@ -396,55 +395,53 @@ vc_node = info ? xmlnode_from_str(info, -1) : NULL; avatar_file = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gc->account)); - if(!vc_node && avatar_file) { + if(!vc_node) { vc_node = xmlnode_new("vCard"); for(tag_attr = vcard_tag_attr_list; tag_attr->attr != NULL; ++tag_attr) xmlnode_set_attrib(vc_node, tag_attr->attr, tag_attr->value); } - if(vc_node) { - if (vc_node->name && - !g_ascii_strncasecmp(vc_node->name, "vCard", 5)) { - GError *error = NULL; - gchar *avatar_data_tmp; - guchar *avatar_data; - gsize avatar_len; + if (vc_node->name && + !g_ascii_strncasecmp(vc_node->name, "vCard", 5)) { + GError *error = NULL; + gchar *avatar_data_tmp; + guchar *avatar_data; + gsize avatar_len; - if(avatar_file && g_file_get_contents(avatar_file, &avatar_data_tmp, &avatar_len, &error)) { - xmlnode *photo, *binval; - gchar *enc; - int i; - unsigned char hashval[20]; - char *p, hash[41]; + if(avatar_file && g_file_get_contents(avatar_file, &avatar_data_tmp, &avatar_len, &error)) { + xmlnode *photo, *binval; + gchar *enc; + int i; + unsigned char hashval[20]; + char *p, hash[41]; - avatar_data = (guchar *) avatar_data_tmp; - photo = xmlnode_new_child(vc_node, "PHOTO"); - binval = xmlnode_new_child(photo, "BINVAL"); - enc = gaim_base64_encode(avatar_data, avatar_len); + avatar_data = (guchar *) avatar_data_tmp; + photo = xmlnode_new_child(vc_node, "PHOTO"); + binval = xmlnode_new_child(photo, "BINVAL"); + enc = gaim_base64_encode(avatar_data, avatar_len); - gaim_cipher_digest_region("sha1", (guchar *)avatar_data, - avatar_len, sizeof(hashval), - hashval, NULL); + gaim_cipher_digest_region("sha1", (guchar *)avatar_data, + avatar_len, sizeof(hashval), + hashval, NULL); - p = hash; - for(i=0; i<20; i++, p+=2) - snprintf(p, 3, "%02x", hashval[i]); - js->avatar_hash = g_strdup(hash); + p = hash; + for(i=0; i<20; i++, p+=2) + snprintf(p, 3, "%02x", hashval[i]); + js->avatar_hash = g_strdup(hash); - xmlnode_insert_data(binval, enc, -1); - g_free(enc); - g_free(avatar_data); - } else if (error != NULL) { - g_error_free(error); - } - g_free(avatar_file); - - iq = jabber_iq_new(js, JABBER_IQ_SET); - xmlnode_insert_child(iq->node, vc_node); - jabber_iq_send(iq); - } else { - xmlnode_free(vc_node); + xmlnode_insert_data(binval, enc, -1); + g_free(enc); + g_free(avatar_data); + } else if (error != NULL) { + g_error_free(error); } + g_free(avatar_file); + + iq = jabber_iq_new(js, JABBER_IQ_SET); + xmlnode_insert_child(iq->node, vc_node); + jabber_iq_send(iq); + } else { + xmlnode_free(vc_node); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2007-04-01 18:59:14
|
Revision: 18227 http://svn.sourceforge.net/gaim/?rev=18227&view=rev Author: thekingant Date: 2007-04-01 11:59:15 -0700 (Sun, 01 Apr 2007) Log Message: ----------- sf patch #1684297, from Atamyrat Hezretguliyev This patch fixes a bug in buddy.c, jabber_buddy_remove_id function. l->data is accessed after l is freed, which crashes GAIM. Modified Paths: -------------- trunk/libgaim/protocols/jabber/buddy.c Modified: trunk/libgaim/protocols/jabber/buddy.c =================================================================== --- trunk/libgaim/protocols/jabber/buddy.c 2007-04-01 17:37:40 UTC (rev 18226) +++ trunk/libgaim/protocols/jabber/buddy.c 2007-04-01 18:59:15 UTC (rev 18227) @@ -732,8 +732,9 @@ while(l) { if(!strcmp(id, l->data)) { + gpointer tmp = l->data; jbi->ids = g_slist_remove(jbi->ids, l->data); - g_free(l->data); + g_free(tmp); return; } l = l->next; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |