github-vet / github-vet/rangeloop-pointer-findings
grufwub/ircg: ircg.go; 25 LoC
- Dominant language
- No language data
- Stars
- 0
- Forks
- 0
- PR merge metrics
- PR metrics pending
Description
Found a possible issue in [grufwub/ircg](https://www.github.com/grufwub/ircg) at [ircg.go](https://github.com/grufwub/ircg/blob/40d6d4176216e8a66c3df3048c0747f6db975b52/ircg.go#L28-L52)
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 listener used in defer or goroutine at line 33
[Click here to see the code in its original context.](https://github.com/grufwub/ircg/blob/40d6d4176216e8a66c3df3048c0747f6db975b52/ircg.go#L28-L52)
Click here to show the 25 line(s) of Go which triggered the analyzer.
```go
for _, listener := range Serv.Listeners {
log.Printf("Now serving on: %s\n", listener.Listener.Addr().String())
go func() {
for {
/* Accept new connection */
conn, err := listener.Accept()
if err != nil {
log.Printf("Accept connection failed: %s\n", err.Error())
}
/* Run this in a separate goroutine to get straight back to accepting */
go func() {
/* Setup new client */
client := NewIrcClient(conn)
client.Init()
/* Add the client to the server client map */
Server.AddClient(client)
/* Start the client loop :) */
go client.Serve()
}()
}
}()
}
```
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: 40d6d4176216e8a66c3df3048c0747f6db975b52
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with ircg.go lines 28-52 at commit 40d6d4176216e8a66c3df3048c0747f6db975b52 and inspect how each listener is used inside the goroutine. Determine whether the captured range variable can make goroutines accept from the wrong listener; when decided, classify the finding with the requested reaction.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 42/100