Revision 0929705a119ad01036c1fc5803c535b81db622f6
markdoliner at pidgin.im
markdoliner at pidgin.im
Sun Mar 25 13:10:47 EDT 2007
o -----------------------------------------------------------------
| Revision: 0929705a119ad01036c1fc5803c535b81db622f6
| Ancestor: 5f2ade60742df3494a35555c993685f4436f72ec
| Author: markdoliner at pidgin.im
| Date: 2007-03-25T17:04:27
| Branch: im.pidgin.pidgin
|
| Modified files:
| libpurple/protocols/bonjour/bonjour.c
|
| ChangeLog:
|
| Fix some reads of invalid memory when shutting down bonjour when there
| are bonjour buddies in your buddy list. We were iterating through the
| blist and removing people as we go, which meant we were deleting
| bnode and then trying to access bnode->next
|
| ============================================================
| --- libpurple/protocols/bonjour/bonjour.c c6c146a8bc1d5da209c8c5841402cbf7aff6fea1
| +++ libpurple/protocols/bonjour/bonjour.c a345c390a97ff0719faf1e1240d787d2a84a0691
| @@ -58,7 +58,7 @@ bonjour_removeallfromlocal(PurpleConnect
| {
| PurpleAccount *account = purple_connection_get_account(gc);
| PurpleBuddyList *blist;
| - PurpleBlistNode *gnode, *cnode, *bnode;
| + PurpleBlistNode *gnode, *cnode, *cnodenext, *bnode, *bnodenext;
| PurpleBuddy *buddy;
|
| blist = purple_get_blist();
| @@ -70,12 +70,14 @@ bonjour_removeallfromlocal(PurpleConnect
| {
| if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
| continue;
| - for (cnode = gnode->child; cnode; cnode = cnode->next)
| + for (cnode = gnode->child; cnode; cnode = cnodenext)
| {
| + cnodenext = cnode->next;
| if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
| continue;
| - for (bnode = cnode->child; bnode; bnode = bnode->next)
| + for (bnode = cnode->child; bnode; bnode = bnodenext)
| {
| + bnodenext = bnode->next;
| if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
| continue;
| buddy = (PurpleBuddy *)bnode;
To get the patch for this revision, please do this:
mtn log --last 1 --diffs --from 0929705a119ad01036c1fc5803c535b81db622f6
More information about the Commits
mailing list