Skip to content

Commit f72a37f

Browse files
iltogasg2bcz
andauthored
Fix issue with 32bit architecture on big numbers' random generation (#1494)
* Fix issue with 32bit architecture on big numbers' random generation Co-authored-by: stefano galassi <stefano.galassi@blockchainzoo.com>
1 parent 16d6a67 commit f72a37f

File tree

4 files changed

+18
-18
lines changed

4 files changed

+18
-18
lines changed

core/blockchainsync/downloadBlockchain.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func (bd *BlockchainDownloader) DownloadFromPeer(feederPeer *model.Peer, chainBl
316316
}
317317

318318
monitoring.IncrementMainchainDownloadCycleDebugger(bd.ChainType, 51)
319-
initialPeerIdx := int(commonUtil.GetSecurePositiveRandom()) % len(peersSlice)
319+
initialPeerIdx := uint64(commonUtil.GetSecurePositiveRandom()) % uint64(len(peersSlice))
320320
nextPeerIdx := initialPeerIdx
321321
peerUsed := feederPeer
322322
blocksSegments := [][]*model.Block{}
@@ -326,7 +326,7 @@ func (bd *BlockchainDownloader) DownloadFromPeer(feederPeer *model.Peer, chainBl
326326
if start != uint32(0) {
327327
peerUsed = peersSlice[nextPeerIdx]
328328
nextPeerIdx++
329-
if nextPeerIdx >= len(peersSlice) {
329+
if nextPeerIdx >= uint64(len(peersSlice)) {
330330
nextPeerIdx = 0
331331
}
332332
if nextPeerIdx == initialPeerIdx {

p2p/strategy/nativeStrategy.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,11 @@ func (ns *NativeStrategy) GetAnyResolvedPeer() *model.Peer {
305305
if len(resolvedPeers) < 1 {
306306
return nil
307307
}
308-
randomIdx := int(util.GetSecurePositiveRandom())
308+
randomIdx := uint64(util.GetSecurePositiveRandom())
309309
if randomIdx != 0 {
310-
randomIdx %= len(resolvedPeers)
310+
randomIdx %= uint64(len(resolvedPeers))
311311
}
312-
idx := 0
312+
var idx uint64
313313
for _, peer := range resolvedPeers {
314314
if idx == randomIdx {
315315
return peer
@@ -365,8 +365,8 @@ func (ns *NativeStrategy) GetAnyUnresolvedPeer() *model.Peer {
365365
if len(unresolvedPeers) < 1 {
366366
return nil
367367
}
368-
randomIdx := int(util.GetSecurePositiveRandom()) % len(unresolvedPeers)
369-
idx := 0
368+
randomIdx := uint64(util.GetSecurePositiveRandom()) % uint64(len(unresolvedPeers))
369+
var idx uint64
370370
for _, peer := range unresolvedPeers {
371371
if idx == randomIdx {
372372
return peer
@@ -493,8 +493,8 @@ func (ns *NativeStrategy) GetAnyKnownPeer() *model.Peer {
493493
if len(knownPeers) < 1 {
494494
panic("No well known peer is found")
495495
}
496-
randomIdx := int(util.GetSecurePositiveRandom()) % len(knownPeers)
497-
idx := 0
496+
randomIdx := uint64(util.GetSecurePositiveRandom()) % uint64(len(knownPeers))
497+
var idx uint64
498498
for _, peer := range knownPeers {
499499
if idx == randomIdx {
500500
return peer

p2p/strategy/peerStrategyHelper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ func NewPeerStrategyHelper() *PeerStrategyHelper {
7676
func (ps *PeerStrategyHelper) GetRandomPeerWithoutRepetition(peers map[string]*model.Peer, mutex *sync.Mutex) *model.Peer {
7777
var (
7878
peer *model.Peer
79+
idx uint64
7980
)
80-
randomIdx := int(util.GetSecurePositiveRandom()) % len(peers)
81-
idx := 0
81+
randomIdx := uint64(util.GetSecurePositiveRandom()) % uint64(len(peers))
8282
for _, knownPeer := range peers {
8383
if idx == randomIdx {
8484
peer = knownPeer

p2p/strategy/priorityStrategy.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -968,11 +968,11 @@ func (ps *PriorityStrategy) GetAnyResolvedPeer() *model.Peer {
968968
if lengthResolvoedPeers < 1 {
969969
return nil
970970
}
971-
randomIdx := int(util.GetSecurePositiveRandom())
971+
randomIdx := uint64(util.GetSecurePositiveRandom())
972972
if randomIdx != 0 {
973-
randomIdx %= lengthResolvoedPeers
973+
randomIdx %= uint64(lengthResolvoedPeers)
974974
}
975-
idx := 0
975+
var idx uint64
976976
for _, peer := range ps.NodeConfigurationService.GetHost().ResolvedPeers {
977977
if idx == randomIdx {
978978
return peer
@@ -1106,8 +1106,8 @@ func (ps *PriorityStrategy) GetAnyUnresolvedPeer() *model.Peer {
11061106
if len(unresolvedPeers) < 1 {
11071107
return nil
11081108
}
1109-
randomIdx := int(util.GetSecurePositiveRandom()) % len(unresolvedPeers)
1110-
idx := 0
1109+
randomIdx := uint64(util.GetSecurePositiveRandom()) % uint64(len(unresolvedPeers))
1110+
var idx uint64
11111111
for _, peer := range unresolvedPeers {
11121112
if idx == randomIdx {
11131113
return peer
@@ -1310,8 +1310,8 @@ func (ps *PriorityStrategy) GetAnyKnownPeer() *model.Peer {
13101310
if len(knownPeers) < 1 {
13111311
panic("No well known peer is found")
13121312
}
1313-
randomIdx := int(util.GetSecurePositiveRandom()) % len(knownPeers)
1314-
idx := 0
1313+
randomIdx := uint64(util.GetSecurePositiveRandom()) % uint64(len(knownPeers))
1314+
var idx uint64
13151315
for _, peer := range knownPeers {
13161316
if idx == randomIdx {
13171317
return peer

0 commit comments

Comments
 (0)