github-vet / github-vet/rangeloop-pointer-findings
finogeeks/Ligase: federation/federationapi/entry/send.go; 22 LoC
- Dominant language
- No language data
- Stars
- 0
- Forks
- 0
- PR merge metrics
- PR metrics pending
Description
Found a possible issue in [finogeeks/Ligase](https://www.github.com/finogeeks/Ligase) at [federation/federationapi/entry/send.go](https://github.com/finogeeks/Ligase/blob/8f19aecc37320cfe01878bc918d372276754d8a6/federation/federationapi/entry/send.go#L238-L259)
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 ev at line 257 may start a goroutine
[Click here to see the code in its original context.](https://github.com/finogeeks/Ligase/blob/8f19aecc37320cfe01878bc918d372276754d8a6/federation/federationapi/entry/send.go#L238-L259)
Click here to show the 22 line(s) of Go which triggered the analyzer.
```go
for _, ev := range pdus {
if ev.Type() != "m.room.message" {
continue
}
domain, _ := utils.DomainFromID(ev.Sender())
if common.CheckValidDomain(domain, config.GetFedConfig().GetServerName()) {
continue
}
destination, ok := feddomains.GetDomainHost(domain)
if !ok {
log.Errorf("ReciverConsumer.downloadMedia domain: %s", domain)
continue
}
var content map[string]interface{}
err := json.Unmarshal(ev.Content(), &content)
if err != nil {
continue
}
if fedutil.IsMediaEv(content) {
fedutil.DownloadFromNetdisk(domain, destination, &ev, content, fedClient)
}
}
```
Click here to show extra information the analyzer produced.
```
The following paths through the callgraph could lead to a goroutine:
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (onNewRoomEvent, 2) -> (StreamPosition, 1)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (startWorkerIfNeed, 0) -> (workerProcessor, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processProfile, 2) -> (BuildMembershipAndFireEvents, 7) -> (InputRoomEvents, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processRequest, 2) -> (PubObj, 2) -> (SendInvite, 3) -> (DoRequestAndParseResponse, 3) -> (Add, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (Level, 0) -> (Load, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnEvent, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (SendWithRetry, 5) -> (pubWithPartition, 6) -> (createTopic, 2) -> (Store, 2) -> (Uint64, 1) -> (sweetenFields, 1) -> (IncCheckReset, 2) -> (CAS, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processEvent, 5) -> (SendEvent, 5) -> (SendEvent, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (process, 2) -> (UpsertToken, 5) -> (upsertToken, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (process, 2) -> (UpsertToken, 5) -> (upsertToken, 5) -> (ExecContext, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processOnUnread, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNodeInst, 2) -> (CalcStringHashCode, 1) -> (Write, 1) -> (Unlock, 0) -> (Sleep, 1) -> (Timeout, 1) -> (Level, 0) -> (Load, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnMessage, 4) -> (process, 2) -> (UpsertToken, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (pubSync, 3) -> (Debugf, 5) -> (stop, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (onBackFillEvent, 2) -> (WriteEvent, 11) -> (insertEvent, 10)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processSync, 2) -> (processIncrementSync, 2) -> (responseSync, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnMessage, 4) -> (process, 2) -> (UpsertToken, 5) -> (upsertToken, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (PushData, 10)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processSyncLoad, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnReceipt, 2) -> (Infof, 8)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processSyncLoad, 2) -> (Errorf, 6) -> (getTimeLine, 1) -> (getSlot, 1)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processProfile, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNodeInst, 2) -> (CalcStringHashCode, 1) -> (Write, 1) -> (Unlock, 0) -> (Sleep, 1) -> (Timeout, 1) -> (String, 0) -> (FullPath, 0) -> (AppendInt, 1)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processEdu, 5) -> (SendEDU, 5) -> (SendEDU, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnMessage, 5) -> (UpdateRoomOffset, 2) -> (Index, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processSyncLoad, 2) -> (Errorf, 6)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNodeInst, 2) -> (CalcStringHashCode, 1) -> (Write, 1) -> (Unlock, 0) -> (Sleep, 1) -> (Timeout, 1) -> (GetInstance, 0) -> (newPrometheus, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processRequest, 2) -> (PubObj, 2) -> (SendInvite, 3) -> (DoRequestAndParseResponse, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (startChan, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (IncCheckReset, 2) -> (CAS, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (process, 2) -> (UpsertToken, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (SendWithRetry, 5) -> (pubWithPartition, 6) -> (createTopic, 2) -> (Store, 2) -> (Uint64, 1) -> (sweetenFields, 1) -> (Level, 0) -> (Load, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (onMessage, 2) -> (DomainFromID, 1) -> (SplitN, 3)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processStd, 5) -> (PubObj, 2) -> (addSTDEventStream, 5)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (callSync, 2) -> (PubObj, 2) -> (NewWriterLevel, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 4) -> (parseLicense, 0) -> (Errorf, 2) -> (log, 4) -> (newPrometheus, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (startWorkerIfNeed, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (processRequest, 2) -> (PubObj, 2)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (onNewRoomEvent, 2) -> (StreamPosition, 1) -> (upsertRoomState, 4)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 1) -> (OnMessage, 5) -> (UpdateRoomOffset, 2) -> (Index, 2) -> (PowerLevels, 0)
(DownloadFromNetdisk, 5) -> (SendWithRetry, 3) -> (getNode, 2) -> (GetChannel, 1) -> (loadConfig, 1) -> (Close, 0) -> (newZapLogger, 1) -> (ReplaceGlobals, 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: 8f19aecc37320cfe01878bc918d372276754d8a6
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.