diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2009-11-19 14:58:30 +0000 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2009-11-19 14:58:30 +0000 | 
| commit | 20e830b641638bc580e1a58b68fc3c5837e76807 (patch) | |
| tree | 1a4c4ea448cf170af9bd702a26398ead75d0b420 /protocols/jabber/jabber_util.c | |
| parent | 76c85b4c79d533ca7a780df381ccda5b9ab2934c (diff) | |
Fixed a facepalm kind of NULL pointer dereference bug.
Diffstat (limited to 'protocols/jabber/jabber_util.c')
| -rw-r--r-- | protocols/jabber/jabber_util.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c index 6c37c2ef..ec23919e 100644 --- a/protocols/jabber/jabber_util.c +++ b/protocols/jabber/jabber_util.c @@ -462,7 +462,7 @@ struct jabber_buddy *jabber_buddy_by_jid( struct im_connection *ic, char *jid_,  		char *set;  		head = g_hash_table_lookup( jd->buddies, jid ); -		bud = head->next ? head->next : head; +		bud = ( head && head->next ) ? head->next : head;  		g_free( jid ); @@ -545,7 +545,7 @@ struct jabber_buddy *jabber_buddy_by_ext_jid( struct im_connection *ic, char *ji  int jabber_buddy_remove( struct im_connection *ic, char *full_jid_ )  {  	struct jabber_data *jd = ic->proto_data; -	struct jabber_buddy *head, *bud, *prev, *bi; +	struct jabber_buddy *bud, *prev, *bi;  	char *s, *full_jid;  	full_jid = jabber_normalize( full_jid_ ); @@ -553,9 +553,10 @@ int jabber_buddy_remove( struct im_connection *ic, char *full_jid_ )  	if( ( s = strchr( full_jid, '/' ) ) )  		*s = 0; -	if( ( head = g_hash_table_lookup( jd->buddies, full_jid ) ) ) +	if( ( bud = g_hash_table_lookup( jd->buddies, full_jid ) ) )  	{ -		bud = head->next ? head->next : head; +		if( bud->next ) +			bud = bud->next;  		/* If there's only one item in the list (and if the resource  		   matches), removing it is simple. (And the hash reference | 
