From f37dde117746b382c9351ba68e280c87168a739a Mon Sep 17 00:00:00 2001 From: Kim De Mey Date: Wed, 13 Apr 2022 17:42:32 +0200 Subject: [PATCH] Fix two possible index errors on Portal wire protocol (#1061) --- fluffy/network/wire/portal_protocol.nim | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/fluffy/network/wire/portal_protocol.nim b/fluffy/network/wire/portal_protocol.nim index ed7ef3884..22001fce8 100644 --- a/fluffy/network/wire/portal_protocol.nim +++ b/fluffy/network/wire/portal_protocol.nim @@ -655,6 +655,20 @@ proc offer(p: PortalProtocol, o: OfferRequest): if acceptMessageResponse.isOk(): let m = acceptMessageResponse.get() + + let contentKeysLen = + case o.kind + of Direct: + o.contentList.len() + of Database: + o.contentKeys.len() + + if m.contentKeys.len() != contentKeysLen: + # TODO: + # When there is such system, the peer should get scored negatively here. + error "Accepted content key bitlist has invalid size" + return err("Accepted content key bitlist has invalid size") + let acceptedKeysAmount = m.contentKeys.countOnes() portal_content_keys_accepted.observe(acceptedKeysAmount.int64) if acceptedKeysAmount == 0: @@ -1003,7 +1017,8 @@ proc neighborhoodGossip*( # in data getting propagated in a wider id range. let closestNodes = await p.lookup(NodeId(contentId)) - for node in closestNodes[0..7]: # selecting closest 8 nodes + # Selecting closest 8 nodes to offer data + for node in closestNodes[0..