[PATCH 06/19] site: transport peers: fix incorrect stride when debug output enabled
Ian Jackson
ijackson at chiark.greenend.org.uk
Thu Jun 21 04:22:46 BST 2012
When there are multiple peer addresses, attempts to copy them from one
table of peers addresses to another with transport_peers_copy will go
wrong because the stride argument to transport_peers_debug is wrong -
we take sizeof() the pointer rather than of the array element.
This will typically cause a segfault if it happens, but the bug can
only be triggered if LOG_PEER_ADDRS debugging is enabled.
Signed-off-by: Ian Jackson <ijackson at chiark.greenend.org.uk>
---
site.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/site.c b/site.c
index b54b34e..fcc36d8 100644
--- a/site.c
+++ b/site.c
@@ -1603,7 +1603,7 @@ static void transport_peers_copy(struct site *st, transport_peers *dst,
dst->npeers=src->npeers;
memcpy(dst->peers, src->peers, sizeof(*dst->peers) * dst->npeers);
transport_peers_debug(st,dst,"copy",
- src->npeers, &src->peers->addr, sizeof(src->peers));
+ src->npeers, &src->peers->addr, sizeof(*src->peers));
}
void transport_xmit(struct site *st, transport_peers *peers,
--
1.7.2.5
More information about the sgo-software-discuss
mailing list