diff -r 777039ec6a98 -r 0d7ead568881 libpurple/protocols/gg/lib/dcc7.c --- a/libpurple/protocols/gg/lib/dcc7.c Sun Jan 27 05:57:39 2013 -0500 +++ b/libpurple/protocols/gg/lib/dcc7.c Tue Jan 29 15:38:45 2013 +0100 @@ -140,7 +140,7 @@ for (tmp = sess->dcc7_list; tmp; tmp = tmp->next) { if (empty) { - if (tmp->peer_uin == uin && !tmp->state == GG_STATE_WAITING_FOR_ACCEPT) + if (tmp->peer_uin == uin /*&& tmp->state != GG_STATE_WAITING_FOR_ACCEPT*/) return tmp; } else { if (!memcmp(&tmp->cid, &id, sizeof(id))) @@ -239,6 +239,7 @@ return -1; } + memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = addr; sin.sin_port = htons(port); @@ -649,7 +650,7 @@ s.uin_to = gg_fix32(tmp->peer_uin); s.size = gg_fix32(tmp->size); - strncpy((char*) s.filename, (char*) tmp->filename, GG_DCC7_FILENAME_LEN); + memcpy((char*) s.filename, (char*) tmp->filename, GG_DCC7_FILENAME_LEN); tmp->state = GG_STATE_WAITING_FOR_ACCEPT; tmp->timeout = GG_DCC7_TIMEOUT_FILE_ACK;