github-vet / github-vet/rangeloop-pointer-findings

sarahc0nn0r/ultranet: backend/lib/frontend_server.go; 27 LoC

Open
#7,564 0 comments 0 reactions 0 assignees View on GitHub
fresh small
Dominant language
No language data
Stars
0
Forks
0
PR merge metrics
PR metrics pending

Description

Found a possible issue in [sarahc0nn0r/ultranet](https://www.github.com/sarahc0nn0r/ultranet) at [backend/lib/frontend_server.go](https://github.com/sarahc0nn0r/ultranet/blob/45bb70e1d26173e7427c0eedbfb7c8d0d37d4837/backend/lib/frontend_server.go#L3720-L3746)

Below is the message reported by the analyzer for this snippet of code. Beware that the analyzer only reports the first
issue it finds, so please do not limit your consideration to the contents of the below message.

> range-loop variable ultraPeer used in defer or goroutine at line 3733

[Click here to see the code in its original context.](https://github.com/sarahc0nn0r/ultranet/blob/45bb70e1d26173e7427c0eedbfb7c8d0d37d4837/backend/lib/frontend_server.go#L3720-L3746)

Click here to show the 27 line(s) of Go which triggered the analyzer.

```go
for _, ultraPeer := range fes.backendServer.cmgr.GetAllPeers() {
if !strings.Contains(ultraPeer.addrStr, ip+fmt.Sprintf(":%d", protocolPort)) {
continue
}
// If we get here it means we're dealing with the peer we just connected to.

// Send a GetHeaders message to the Peer to start the headers sync.
// Note that we include an empty BlockHash as the stopHash to indicate we want as
// many headers as the Peer can give us.
// Note: We don't need to acquire the ChainLock because our parent does it.
locator := latestLocator(
fes.blockchain.headerTip(), fes.blockchain.bestHeaderChain, fes.blockchain.bestHeaderChainMap)
go func() {
ultraPeer.PushGetHeadersMsg(locator, &BlockHash{})
}()

// After sending GetHeaders above, make the peer the syncPeer.
fes.backendServer.syncPeer = ultraPeer

// At this point the peer shoud be connected. Add their address to the addrmgr
// in case the user wants to connect again in the future. Set the source to be
// the address itself since we don't have anything else.
fes.backendServer.cmgr.addrMgr.AddAddress(netAddr, netAddr)

connectPeerDone <- true
return
}

```

Leave a reaction on this issue to contribute to the project by classifying this instance as a **Bug** :-1:, **Mitigated** :+1:, or **Desirable Behavior** :rocket:
See the descriptions of the classifications [here](https://github.com/github-vet/rangeclosure-findings#how-can-i-help) for more information.

commit ID: 45bb70e1d26173e7427c0eedbfb7c8d0d37d4837

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.