From 2d3718151d4f4248618f5c9f3ea5765f91f39eef Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Fri, 16 Jan 2009 04:17:22 +0000 Subject: Fix a pointer arithmetic issue leading to incorrect peer data being copied. Allocate correct size for debugbuffer. Expect exact values on find keywords, not only prefix match. --- trackerlogic.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'trackerlogic.c') diff --git a/trackerlogic.c b/trackerlogic.c index d07851e..3ca266a 100644 --- a/trackerlogic.c +++ b/trackerlogic.c @@ -129,7 +129,7 @@ size_t add_peer_to_torrent_and_return_peers( ot_hash hash, ot_peer *peer, PROTO_ OT_PEERFLAG( peer ) |= PEER_FLAG_COMPLETED; } - *peer_dest = *peer; + memcpy( peer_dest, peer, sizeof(ot_peer) ); #ifdef WANT_SYNC if( proto == FLAG_MCA ) { mutex_bucket_unlock_by_hash( hash, delta_torrentcount ); @@ -156,8 +156,7 @@ static size_t return_peers_all( ot_peerlist *peer_list, char *reply ) { ot_peer * peers = (ot_peer*)bucket_list[bucket].data; size_t peer_count = bucket_list[bucket].size; while( peer_count-- ) { - memcpy(r,peers,OT_PEER_COMPARE_SIZE); - peers+=sizeof(ot_peer); + memcpy(r,peers++,OT_PEER_COMPARE_SIZE); r+=OT_PEER_COMPARE_SIZE; } } -- cgit v1.2.3