Mercurial > pidgin.yaz
view plugins/crazychat/crazychat.c @ 13664:4132d997ccec
[gaim-migrate @ 16066]
Fix Coverity CID 45: Check to make sure a channel 2 ICBM actually
contains an IP address TLV before attempting to use it. This
avoids a crash when the server sends us an abnormal channel 2
ICBM. I'm not sure if that ever happens.
Fix Coverity CID 204: Don't attempt to send data over a FLAP
BOS connection that doesn't exist. This should never happen
because the account should get disconnected first.
Fix Coverity CID 205: Don't check that a variable 'od' which
we know is valid is not equal to NULL in aim_search_address()
in family_userlookup.c
Fix Coverity CID 206: Don't check that the variable 'od' which
we know is valid is not equal to NULL in aim_chat_join() in
family_oservice.c
Fix Coverity CID 207: I neglected to remove a "return;" line from
aim_admin_setnick() in family_admin.c which caused setting your
AIM screen name formatting to not work.
Fix Coverity CID 208: Remove a duplicate call to
gaim_connection_get_account() in peer_connection_propose() in peer.c.
Fix Coverity CID 209: Remove the unused variable "username" from
incomingim_chan2() in oscar.c.
Fix Coverity CID 210: Remove the unused variable "account"
from peer_connection_listen_cb() in peer.c.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 20 Apr 2006 04:45:06 +0000 |
parents | ed017b9c532d |
children |
line wrap: on
line source
#include <assert.h> #include <stdlib.h> #include <string.h> #include "cc_interface.h" struct cc_session_node { struct cc_session session; struct cc_session_node *next; }; struct cc_session *cc_find_session(struct crazychat *cc, char *handle) { struct cc_session_node *curr; assert(cc); assert(handle); curr = cc->sessions; while (curr) { struct cc_session *session = &curr->session; if (!strncmp(session->name, handle, strlen(session->name))) { return session; } curr = curr->next; } return NULL; } struct cc_session *cc_add_session(struct crazychat *cc, char *handle) { struct cc_session_node *curr; assert(cc); assert(handle); if (!cc->sessions) { cc->sessions = (struct cc_session_node*) malloc(sizeof(*cc->sessions)); memset(cc->sessions, 0, sizeof(*cc->sessions)); cc->sessions->session.cc = cc; cc->sessions->session.name = strdup(handle); return &cc->sessions->session; } else { if (!strncmp(cc->sessions->session.name, handle, strlen(cc->sessions->session.name))) { return &cc->sessions->session; } } curr = cc->sessions; while (curr->next) { struct cc_session *session = &curr->next->session; if (!strncmp(session->name, handle, strlen(session->name))) { return session; } curr = curr->next; } curr->next = (struct cc_session_node*)malloc(sizeof(*curr->next)); memset(curr->next, 0, sizeof(*curr->next)); curr->next->session.cc = cc; curr->next->session.name = strdup(handle); return &curr->next->session; } void cc_remove_session(struct crazychat *cc, struct cc_session *session) { struct cc_session_node *curr, *prev; assert(cc); assert(session); assert(cc->sessions); curr = cc->sessions; prev = NULL; while (curr) { if (&curr->session == session) { if (prev) { prev->next = curr->next; } else { cc->sessions = curr->next; } /* destroy curr */ free(curr); g_source_remove(session->timer_id); free(session->name); free(session); return; } prev = curr; curr = curr->next; } assert(0); }