--- a/libpurple/protocols/gg/lib/dcc7.c Sun Jan 27 17:56:04 2013 -0500 +++ b/libpurple/protocols/gg/lib/dcc7.c Tue Jan 29 14:45:07 2013 +0100 @@ -146,7 +146,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))) @@ -245,6 +245,7 @@ return -1; } + memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = addr; sin.sin_port = htons(port); @@ -655,7 +656,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;