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

sarahc0nn0r/ultranet: backend/lib/server.go; 5 LoC

Open
#7,570 0 comments 0 reactions 0 assignees View on GitHub
fresh tiny
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/server.go](https://github.com/sarahc0nn0r/ultranet/blob/45bb70e1d26173e7427c0eedbfb7c8d0d37d4837/backend/lib/server.go#L875-L879)

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.

> function call which takes a reference to hash at line 877 may start a goroutine

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

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

```go
for hash, requestInfo := range srv.requestedListings {
if requestInfo.PeerWhoSentInv.ID == pp.ID {
srv._removeRequestt(&hash)
}
}

```

Click here to show extra information the analyzer produced.

```
The following paths through the callgraph could lead to a goroutine:
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (New, 1) -> (NewFunc, 1) -> (print, 2) -> (printDepth, 3) -> (NewLogger, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_handleInboundConnections, 0) -> (_connectPeer, 2) -> (_logVersionSuccess, 0) -> (sendVerack, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (SendMessage, 2) -> (Disconnected, 0) -> (updateUserFields, 2) -> (UtxoEntryToResponse, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (miningWorkerController, 0) -> (launchWorkers, 1) -> (submitBlock, 1) -> (UpdateBlockTime, 1) -> (checkConnectBlock, 4)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (inHandler, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (miningWorkerController, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (messageHandler, 0) -> (_handleControlMessages, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (peerHandler, 0) -> (forAllPeers, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_startThread, 1) -> (Errorf, 1) -> (float32, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (Done, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_initiateOutboundConnections, 0) -> (_connectPeer, 2) -> (_logVersionSuccess, 0) -> (sendVerack, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (listenHandler, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewConnReq, 0) -> (Connect, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (dial, 4)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Write, 1) -> (severity, 1) -> (output, 5) -> (AddInt64, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (QueueMessage, 2) -> (QueueMessageWithEncoding, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (delete, 1) -> (delete, 5)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewConnReq, 0) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3) -> (HandleChannelOpen, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewConnReq, 0) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3) -> (HandleChannelOpen, 1) -> (forward, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (UpdateAndBroadcastBitcoinTxns, 0) -> (BroadcastTxn, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_maybeReplacePeer, 1) -> (_connectPeer, 2) -> (_logVersionSuccess, 0) -> (sendVerack, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (scanTable, 2) -> (Printf, 3) -> (String, 0) -> (WriteRune, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (blockHandler, 0) -> (current, 0) -> (IsCurrent, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (startSync, 0) -> (PushGetBlocksMsg, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Stop, 0) -> (Addr, 0) -> (V, 1) -> (getV, 1) -> (NewLogger, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (listenHandler, 1) -> (OnAccept, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (Close, 0) -> (CloseHandle, 1) -> (error, 1) -> (Uint32, 0) -> (nextBlock, 3) -> (solveBlock, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_maybeReplacePeer, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (AddSeeds, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (scanTable, 2) -> (Printf, 3) -> (String, 0) -> (WriteRune, 1) -> (NewLogger, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (messageHandler, 0) -> (_handleControlMessages, 1) -> (_handleBitcoinManagerUpdate, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewConnReq, 0) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (New, 1) -> (NewFunc, 1) -> (append, 2) -> (PutUvarint, 2) -> (NewLogger, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_initiateOutboundConnections, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_handleInboundConnections, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewLogger, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (get, 6)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Stop, 0) -> (Addr, 0) -> (V, 1) -> (getV, 1) -> (timeoutFlush, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (scanTable, 2) -> (Printf, 3) -> (String, 0) -> (WriteRune, 1) -> (delete, 5)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (reregisterNtfns, 0) -> (notifyReceivedInternal, 1) -> (NewNotifyReceivedCmd, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (Close, 0) -> (CloseHandle, 1) -> (error, 1) -> (Uint32, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (inHandler, 0) -> (OnSendHeaders, 2) -> (Reload, 1) -> (entriesByBlockHashes, 3) -> (GetBlockHeaderAsync, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3) -> (HandleChannelOpen, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (messageHandler, 0) -> (_handleControlMessages, 1) -> (_handleBitcoinManagerUpdate, 1) -> (LatestHeaderLocator, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (connHandler, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (nextBlock, 3) -> (solveBlock, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3) -> (HandleChannelOpen, 1) -> (forward, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (New, 1) -> (NewFunc, 1) -> (append, 2) -> (PutUvarint, 2) -> (NewLogger, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (peerHandler, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Get, 0) -> (getDataIterErr, 4) -> (getDataIter, 4) -> (MsgTx, 0) -> (get, 6)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (startSync, 0) -> (PushGetBlocksMsg, 2) -> (NewMsgGetBlocks, 1) -> (blockLocator, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Stop, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (jsonRPCRead, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (NewLogger, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (delete, 5)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_startAddressRelayer, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Stop, 0) -> (Addr, 0) -> (V, 1) -> (getV, 1) -> (NewLogger, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (_handleInboundConnections, 0) -> (_connectPeer, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (connHandler, 0) -> (handleFailedConn, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (blockHandler, 0) -> (current, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (reregisterNtfns, 0) -> (notifyReceivedInternal, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (startSync, 0) -> (PushGetBlocksMsg, 2) -> (NewMsgGetBlocks, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (Connect, 1) -> (Dial, 1) -> (Fail, 0) -> (NewClient, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (QueueMessageWithEncoding, 3)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (Stop, 0) -> (Addr, 0) -> (V, 1) -> (getV, 1) -> (get, 6)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (newTableOps, 1) -> (GetNoSync, 0)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (Lock, 0) -> (, 1) -> (, 0) -> (newLockOrder, 0) -> (print, 2) -> (printDepth, 3) -> (Connect, 1)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (scanTable, 2) -> (Printf, 3) -> (String, 0) -> (WriteRune, 1) -> (get, 6)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (scanTable, 2) -> (Printf, 3) -> (String, 0) -> (WriteRune, 1) -> (NewLogger, 2)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (Close, 0) -> (CloseHandle, 1) -> (error, 1) -> (Uint32, 0) -> (delete, 5)
(_removeRequestt, 1) -> (DeleteTxHash, 1) -> (deleteInvVect, 1) -> (Remove, 1) -> (New, 1) -> (NewFunc, 1) -> (print, 2) -> (printDepth, 3) -> (NewLogger, 1)

```

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.