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

hjimmy/tg-origin: source/pkg/serviceaccounts/oauthclient/oauthclientregistry.go; 13 LoC

Open
#13,815 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 [hjimmy/tg-origin](https://www.github.com/hjimmy/tg-origin) at [source/pkg/serviceaccounts/oauthclient/oauthclientregistry.go](https://github.com/hjimmy/tg-origin/blob/07e45cb8ec631f158f6c7c29330a9cdeae9f4a29/source/pkg/serviceaccounts/oauthclient/oauthclientregistry.go#L359-L371)

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 m at line 366 may start a goroutine

[Click here to see the code in its original context.](https://github.com/hjimmy/tg-origin/blob/07e45cb8ec631f158f6c7c29330a9cdeae9f4a29/source/pkg/serviceaccounts/oauthclient/oauthclientregistry.go#L359-L371)

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

```go
for _, m := range modelsMap {
gk := m.getGroupKind()
if gk == legacyRouteGroupKind {
gk = routeGroupKind // support legacy route group without doing extra API calls
}
if len(m.name) == 0 && gk == emptyGroupKind { // Is this a static redirect URI?
uri := redirectURI{} // No defaults wanted
uri.merge(&m)
data = append(data, uri)
} else if _, ok := groupKindModelToURI[gk]; ok { // a GroupKind is valid if we have a namesToObjMapperFunc to handle it
groupKindModelListMapper[gk] = append(groupKindModelListMapper[gk], m)
}
}

```

Click here to show extra information the analyzer produced.

```
The following graphviz dot graph describes paths through the callgraph that could lead to a function calling a goroutine:
digraph G {
"(add, 1)" -> {"(post, 1)";"(newWatchBroadcast, 3)";"(newWatchBroadcasts, 1)";"(New, 1)";"(Update, 1)";"(Get, 1)";}
"(copyPipes, 7)" -> {}
"(Get, 0)" -> {"(Get, 2)";"(Get, 3)";"(Get, 5)";}
"(Create, 3)" -> {"(Validate, 2)";"(CreateBricks, 3)";"(DestroyBricks, 3)";"(Destroy, 2)";}
"(startThinPoolWatcher, 1)" -> {}
"(NewMainKubelet, 31)" -> {}
"(Remove, 2)" -> {"(Do, 2)";}
"(add, 2)" -> {"(New, 1)";"(Get, 1)";"(delete, 2)";"(replace, 2)";"(Get, 0)";"(Put, 1)";"(add, 1)";"(Add, 2)";}
"(CopyConsole, 7)" -> {}
"(addEndpoint, 1)" -> {}
"(UpdatePod, 1)" -> {}
"(NewBroker, 3)" -> {}
"(forward, 3)" -> {}
"(Commit, 2)" -> {"(Register, 3)";}
"(NewListener, 2)" -> {"(NewTimeoutListener, 5)";}
"(callSSA, 6)" -> {"(runFrame, 1)";}
"(Search, 2)" -> {"(List, 1)";}
"(Read, 2)" -> {"(Copy, 4)";}
"(newWatchBroadcast, 3)" -> {"(update, 1)";}
"(handleHttps, 2)" -> {}
"(ConfigureTransport, 1)" -> {"(configureTransport, 1)";}
"(NewServer, 1)" -> {"(startNode, 3)";"(restartNode, 2)";"(restartAsStandaloneNode, 2)";"(openBackend, 1)";"(NewServerTLS, 2)";}
"(Contains, 1)" -> {"(Compare, 1)";"(index, 1)";}
"(Grant, 1)" -> {"(Add, 1)";"(Contains, 1)";}
"(Copy, 4)" -> {"(Execute, 4)";}
"(DestroyBricks, 3)" -> {"(createDestroyConcurrently, 4)";}
"(pullImageWithReference, 6)" -> {}
"(run, 4)" -> {"(NewDynamicResourceConsumer, 12)";"(Interpret, 5)";}
"(scaleUp, 5)" -> {"(run, 4)";}
"(Do, 2)" -> {"(Put, 2)";"(Put, 3)";"(RoundTrip, 1)";}
"(handle, 1)" -> {}
"(Prepare, 3)" -> {"(CreateVolume, 1)";}
"(Register, 3)" -> {"(startThinPoolWatcher, 1)";"(startZfsWatcher, 1)";}
"(startZfsWatcher, 1)" -> {}
"(FromURL, 2)" -> {"(Dial, 3)";}
"(initInformers, 1)" -> {}
"(configureTransport, 1)" -> {"(addConnIfNeeded, 3)";}
"(Do, 1)" -> {"(Prepare, 3)";"(Prepare, 2)";"(Handle, 2)";"(Open, 2)";}
"(load, 1)" -> {"(parsePackageFiles, 2)";}
"(parsePackageFiles, 2)" -> {"(parseFiles, 6)";}
"(Snapshot, 2)" -> {}
"(addPod, 1)" -> {"(AddPod, 1)";}
"(newResourceConsumer, 18)" -> {}
"(merge, 1)" -> {"(copy, 2)";"(Revoke, 1)";"(add, 2)";"(Insert, 1)";"(Grant, 1)";}
"(Build, 1)" -> {"(ForEachPackage, 2)";"(NewKubernetesSource, 1)";}
"(Build, 0)" -> {"(Build, 1)";}
"(RoundTrip, 1)" -> {"(awaitOpenSlotForRequest, 1)";"(DetailedRoundTrip, 1)";"(Dial, 2)";}
"(Terminate, 1)" -> {}
"(Upload, 3)" -> {"(update, 1)";}
"(remove, 1)" -> {"(Remove, 2)";}
"(Register, 2)" -> {"(addEndpoint, 1)";}
"(run, 1)" -> {"(forward, 3)";"(schedule, 1)";"(setupIO, 6)";}
"(newLeaseUpdater, 3)" -> {}
"(ConsoleFromFile, 1)" -> {"(newMaster, 1)";}
"(Copy, 2)" -> {"(Write, 1)";"(Put, 1)";"(From, 1)";"(Get, 0)";"(ServeHTTP, 2)";"(Get, 1)";}
"(recvtty, 2)" -> {"(ConsoleFromFile, 1)";}
"(updatePod, 2)" -> {"(AddPod, 1)";"(addPod, 1)";}
"(Put, 3)" -> {"(Put, 2)";"(Commit, 2)";}
"(clientHandshake, 2)" -> {"(newClientTransport, 6)";}
"(newOOMCollector, 1)" -> {}
"(newAsyncIDTokenVerifier, 3)" -> {}
"(Set, 1)" -> {"(New, 2)";}
"(callRemoteBalancer, 2)" -> {}
"(shutdownDaemon, 1)" -> {}
"(getURL, 1)" -> {"(RoundTrip, 1)";}
"(DetailedRoundTrip, 1)" -> {"(getConn, 1)";}
"(PullImage, 7)" -> {"(pullImageWithReference, 6)";}
"(schedule, 1)" -> {"(Schedule, 2)";}
"(CreateControllerContext, 4)" -> {}
"(NewGroup, 3)" -> {"(newServer, 2)";}
"(TarWithOptions, 2)" -> {}
"(Accept, 2)" -> {}
"(Delete, 3)" -> {"(Get, 5)";"(run, 1)";}
"(New, 3)" -> {"(newLocalFakeStorage, 2)";}
"(snap, 2)" -> {"(Snapshot, 3)";}
"(Register, 1)" -> {"(Register, 2)";}
"(withAggregator, 4)" -> {"(createAggregatorServer, 3)";}
"(RestartNode, 1)" -> {}
"(create, 2)" -> {"(Snapshot, 3)";}
"(visitInstr, 2)" -> {}
"(prepareStatement, 2)" -> {"(Prepare, 1)";}
"(Handle, 1)" -> {"(List, 1)";}
"(ForEachPackage, 2)" -> {"(allPackages, 3)";}
"(Apply, 2)" -> {"(Diff, 3)";}
"(Init, 1)" -> {"(Init, 4)";}
"(Execute, 3)" -> {"(StreamContainerIO, 3)";}
"(CreateBricks, 3)" -> {"(createDestroyConcurrently, 4)";}
"(RemoveMember, 2)" -> {"(removeMember, 2)";}
"(serverHandshake, 1)" -> {"(newServerTransport, 4)";}
"(Get, 1)" -> {"(Get, 2)";"(New, 2)";"(Parse, 1)";"(Get, 3)";"(getURL, 1)";"(Get, 0)";"(Do, 2)";}
"(Close, 1)" -> {"(Dispatch, 3)";}
"(NewDynamicResourceConsumer, 12)" -> {"(newResourceConsumer, 18)";}
"(getConn, 1)" -> {}
"(tlsDialWithDialer, 4)" -> {}
"(Update, 3)" -> {"(Accept, 2)";}
"(Create, 1)" -> {"(Update, 1)";"(Add, 1)";"(Set, 1)";"(Apply, 1)";"(New, 1)";"(Get, 1)";"(delete, 2)";"(Create, 2)";"(create, 1)";}
"(setupIO, 6)" -> {"(recvtty, 2)";"(setupProcessPipes, 3)";}
"(restartAsStandaloneNode, 2)" -> {"(RestartNode, 1)";}
"(AddPod, 1)" -> {"(UpdatePod, 1)";}
"(pullImage, 1)" -> {"(PullImage, 7)";}
"(parse, 2)" -> {"(Init, 1)";}
"(wait, 1)" -> {}
"(dial, 2)" -> {"(NewServerConn, 2)";"(NewClientConn, 3)";}
"(pull, 4)" -> {}
"(newServer, 2)" -> {}
"(RunKubelet, 4)" -> {"(startKubelet, 5)";"(CreateAndInitKubelet, 31)";}
"(StartUpdater, 2)" -> {"(newLeaseUpdater, 3)";}
"(Put, 2)" -> {"(Save, 3)";}
"(NewServer, 2)" -> {"(NewServer, 1)";}
"(NewClientConn, 3)" -> {"(clientHandshake, 2)";}
"(New, 9)" -> {"(CopyConsole, 7)";"(copyPipes, 7)";}
"(addConnIfNeeded, 3)" -> {}
"(Destroy, 2)" -> {"(checkBricksCanBeDestroyed, 3)";}
"(Schedule, 2)" -> {"(PrioritizeNodes, 6)";}
"(CreateAndInitKubelet, 31)" -> {"(NewMainKubelet, 31)";}
"(runFrame, 1)" -> {"(visitInstr, 2)";}
"(Start, 1)" -> {"(start, 1)";"(copyPipes, 7)";"(Start, 2)";"(start, 2)";"(Run, 1)";"(NewServer, 1)";"(Dial, 3)";}
"(Verifier, 1)" -> {"(newAsyncIDTokenVerifier, 3)";}
"(Init, 4)" -> {"(ListenPipe, 2)";"(NewTCPSocket, 2)";}
"(PrioritizeNodes, 6)" -> {}
"(RunShort, 2)" -> {"(create, 2)";"(mount, 2)";}
"(handleControlSocketChange, 2)" -> {}
"(New, 5)" -> {"(configureKubeConfigForClientCertRotation, 2)";}
"(Do, 3)" -> {}
"(Validate, 2)" -> {}
"(New, 2)" -> {"(Init, 1)";"(Put, 2)";"(Dial, 2)";"(loadPlugins, 1)";"(NewSession, 2)";"(Start, 1)";"(Register, 1)";"(NewServer, 2)";}
"(NewSession, 2)" -> {}
"(start, 1)" -> {"(handleControlSocketChange, 2)";"(Init, 4)";"(CopyConsole, 7)";"(copyPipes, 7)";"(NewDaemon, 4)";"(shutdownDaemon, 1)";}
"(implements, 1)" -> {"(Build, 1)";}
"(Spec, 1)" -> {"(FromURL, 2)";}
"(ServeHTTP, 2)" -> {"(serveStatus, 2)";"(tryUpgrade, 2)";"(RoundTrip, 1)";"(List, 1)";"(handle, 1)";"(handleHttps, 2)";"(Start, 1)";"(Check, 1)";"(RemoveMember, 2)";"(serveUpgrade, 2)";"(Validate, 2)";"(Do, 2)";}
"(get, 1)" -> {"(SetTransportDefaults, 1)";"(Upload, 3)";"(Do, 1)";"(Get, 1)";"(Add, 2)";"(load, 1)";"(FromBytes, 1)";"(Get, 2)";"(delete, 2)";"(Read, 2)";}
"(Get, 2)" -> {"(Open, 2)";"(Do, 2)";"(Accept, 2)";"(Validate, 1)";"(implements, 1)";"(getURL, 1)";"(handle, 1)";"(Parse, 1)";"(New, 2)";"(Get, 3)";"(Put, 3)";}
"(List, 2)" -> {}
"(create, 1)" -> {"(Write, 1)";"(New, 2)";"(Create, 3)";}
"(Watch, 1)" -> {"(Watch, 2)";}
"(newLocalFakeStorage, 2)" -> {"(NewServer, 1)";}
"(executeExecNewPod, 4)" -> {}
"(NewUnsecuredEtcd3TestClientServer, 1)" -> {"(NewClusterV3, 2)";}
"(FromBytes, 1)" -> {"(Write, 1)";}
"(snapshotPath, 4)" -> {}
"(dial, 3)" -> {"(tlsDial, 3)";}
"(Dispatch, 3)" -> {}
"(Write, 1)" -> {"(Capture, 2)";"(Execute, 2)";"(wait, 1)";}
"(Put, 1)" -> {"(Update, 3)";"(Write, 1)";"(Put, 3)";}
"(Upgrade, 7)" -> {"(pull, 4)";}
"(insert, 1)" -> {"(Update, 1)";}
"(Open, 2)" -> {"(newArchiveFromGuest, 1)";"(newArchiveToGuest, 1)";"(Dispatch, 3)";"(ServeHTTP, 2)";}
"(validateImage, 1)" -> {"(Validate, 2)";}
"(UpdateTransport, 4)" -> {"(updateTransport, 5)";}
"(Revoke, 1)" -> {"(Contains, 1)";"(Remove, 1)";"(DeleteRange, 2)";"(delete, 2)";"(Set, 2)";}
"(Parse, 1)" -> {"(handle, 1)";"(Build, 0)";"(parse, 2)";}
"(replace, 2)" -> {"(Parse, 1)";"(New, 1)";"(Execute, 2)";"(index, 1)";}
"(allPackages, 3)" -> {}
"(update, 1)" -> {"(UpdatePod, 2)";}
"(NewServerConn, 2)" -> {"(serverHandshake, 1)";}
"(serveUpgrade, 2)" -> {}
"(Get, 5)" -> {"(WaitUntilFreshAndGet, 3)";}
"(call, 5)" -> {"(callSSA, 6)";}
"(run, 3)" -> {"(RunKubelet, 4)";"(UpdateTransport, 4)";}
"(Snapshot, 3)" -> {"(Snapshot, 2)";}
"(setUp, 1)" -> {"(NewUnsecuredEtcd3TestClientServer, 1)";}
"(Set, 2)" -> {"(Do, 3)";"(New, 1)";"(Get, 1)";"(Set, 1)";"(Put, 3)";}
"(CreateVolume, 1)" -> {}
"(newArchiveFromGuest, 1)" -> {}
"(Exec, 1)" -> {"(Run, 1)";}
"(configureKubeConfigForClientCertRotation, 2)" -> {"(RefreshCertificateAfterExpiry, 4)";}
"(Prepare, 2)" -> {"(Prepare, 1)";}
"(createDestroyConcurrently, 4)" -> {}
"(DeleteRange, 2)" -> {"(Do, 2)";"(Set, 1)";}
"(Add, 1)" -> {"(add, 1)";"(Search, 2)";"(watch, 3)";"(delete, 1)";"(delete, 2)";"(New, 1)";"(Add, 2)";"(Parse, 1)";}
"(start, 2)" -> {}
"(NewClient, 1)" -> {"(newClient, 1)";}
"(initializeAndStartHeartbeat, 4)" -> {}
"(WaitUntilFreshAndGet, 3)" -> {"(waitUntilFreshAndBlock, 2)";}
"(Apply, 1)" -> {"(Apply, 3)";"(Put, 2)";}
"(index, 1)" -> {"(update, 1)";}
"(Dial, 2)" -> {"(dial, 3)";"(Dial, 3)";}
"(UpdatePod, 2)" -> {"(updatePod, 2)";}
"(Compare, 1)" -> {"(parse, 2)";}
"(Add, 2)" -> {"(index, 1)";"(Spec, 1)";"(Do, 2)";"(Validate, 1)";"(New, 1)";"(Search, 2)";}
"(Delete, 2)" -> {"(stop, 1)";"(Do, 2)";"(Accept, 2)";"(endpointURL, 2)";"(Delete, 3)";}
"(parseFiles, 6)" -> {}
"(From, 1)" -> {"(Run, 3)";}
"(Run, 3)" -> {"(run, 3)";}
"(Watch, 2)" -> {}
"(waitUntilFreshAndBlock, 2)" -> {}
"(removeMember, 2)" -> {"(Terminate, 1)";}
"(StartNode, 2)" -> {}
"(loadPlugins, 1)" -> {"(Init, 1)";}
"(validateContainer, 1)" -> {"(Validate, 2)";}
"(List, 1)" -> {"(List, 2)";}
"(watch, 3)" -> {"(Watch, 1)";"(New, 2)";"(Run, 1)";}
"(createAggregatorServer, 3)" -> {}
"(Dial, 3)" -> {"(NewClientConn, 3)";}
"(post, 1)" -> {"(RoundTrip, 1)";}
"(newWatchBroadcasts, 1)" -> {}
"(Check, 1)" -> {}
"(NewSSHTunnelList, 4)" -> {}
"(ListenPipe, 2)" -> {}
"(startNode, 3)" -> {"(StartNode, 2)";}
"(Open, 1)" -> {"(New, 1)";"(Exec, 1)";"(prepareStatement, 2)";"(Handle, 1)";"(Open, 2)";}
"(Execute, 4)" -> {"(executeExecNewPod, 4)";}
"(Diff, 3)" -> {"(Diff, 2)";}
"(newClientTransport, 6)" -> {}
"(StreamContainerIO, 3)" -> {}
"(startKubelet, 5)" -> {}
"(newMaster, 1)" -> {"(setUp, 1)";}
"(BuildHandlerChain, 5)" -> {}
"(NewDaemon, 4)" -> {}
"(copy, 2)" -> {"(Open, 1)";"(get, 1)";"(Create, 1)";"(findObject, 2)";"(Copy, 2)";}
"(tryUpgrade, 2)" -> {}
"(Prepare, 1)" -> {"(Upgrade, 7)";"(Pull, 8)";"(pullImage, 1)";}
"(setupProcessPipes, 3)" -> {}
"(Handle, 2)" -> {"(implements, 1)";}
"(NewServerTLS, 2)" -> {"(newServer, 2)";"(NewGroup, 3)";}
"(wrapTLS, 4)" -> {"(newTLSListener, 2)";}
"(NewTCPSocket, 2)" -> {"(NewListener, 2)";}
"(NewTimeoutListener, 5)" -> {"(wrapTLS, 4)";}
"(mount, 2)" -> {"(attachScale, 4)";}
"(Remove, 1)" -> {"(Close, 1)";"(Remove, 2)";"(delete, 2)";"(New, 1)";"(Get, 1)";"(Delete, 2)";"(remove, 1)";"(Delete, 1)";"(Search, 2)";"(index, 1)";}
"(startControllers, 5)" -> {}
"(awaitOpenSlotForRequest, 1)" -> {}
"(endpointURL, 2)" -> {"(List, 2)";}
"(Get, 3)" -> {"(Build, 0)";"(RoundTrip, 1)";"(Get, 5)";}
"(updateTransport, 5)" -> {}
"(newServerTransport, 4)" -> {}
"(Capture, 2)" -> {"(Init, 1)";}
"(tlsDial, 3)" -> {"(tlsDialWithDialer, 4)";}
"(Run, 1)" -> {"(BuildHandlerChain, 5)";"(Register, 2)";"(CreateControllerContext, 4)";"(withAggregator, 4)";"(run, 1)";"(create, 2)";"(StreamContainerIO, 3)";"(startControllers, 5)";"(NewSSHTunnelList, 4)";}
"(Update, 1)" -> {"(Build, 0)";"(update, 1)";}
"(Execute, 2)" -> {"(Run, 3)";}
"(Apply, 3)" -> {"(Apply, 2)";}
"(NewClusterV3, 2)" -> {"(Launch, 1)";}
"(newClient, 1)" -> {"(dial, 2)";}
"(checkBricksCanBeDestroyed, 3)" -> {}
"(restartNode, 2)" -> {"(RestartNode, 1)";}
"(Start, 2)" -> {"(initializeAndStartHeartbeat, 4)";"(callRemoteBalancer, 2)";"(NewServer, 1)";}
"(Pull, 8)" -> {"(pull, 4)";}
"(RefreshCertificateAfterExpiry, 4)" -> {}
"(Diff, 2)" -> {"(TarWithOptions, 2)";}
"(newTLSListener, 2)" -> {}
"(Insert, 1)" -> {"(Delete, 1)";"(Add, 1)";"(insert, 1)";}
"(serveStatus, 2)" -> {}
"(attachScale, 4)" -> {"(scaleUp, 5)";}
"(delete, 2)" -> {"(Remove, 2)";"(Delete, 3)";"(Delete, 1)";}
"(Create, 2)" -> {"(Put, 2)";"(CreateVolume, 1)";"(New, 9)";"(validateImage, 1)";"(Create, 3)";"(Apply, 3)";"(initInformers, 1)";"(Check, 1)";"(Validate, 1)";"(validateContainer, 1)";"(Write, 1)";}
"(newArchiveToGuest, 1)" -> {}
"(Run, 2)" -> {"(Register, 2)";"(Execute, 3)";"(StartUpdater, 2)";"(Build, 0)";"(RunSnap, 2)";"(FromURL, 2)";"(Start, 2)";"(Start, 1)";"(Prepare, 1)";"(implements, 1)";"(run, 1)";"(List, 2)";"(Apply, 3)";"(Run, 1)";"(Save, 3)";"(List, 1)";"(Create, 3)";"(RunShort, 2)";}
"(openBackend, 1)" -> {}
"(Launch, 1)" -> {}
"(findObject, 2)" -> {"(get, 1)";}
"(SetTransportDefaults, 1)" -> {"(ConfigureTransport, 1)";}
"(NewKubernetesSource, 1)" -> {}
"(Interpret, 5)" -> {"(call, 5)";}
"(New, 1)" -> {"(newOOMCollector, 1)";"(New, 5)";"(New, 3)";"(Update, 1)";"(Read, 2)";"(Start, 1)";"(Run, 2)";"(Register, 1)";"(Verifier, 1)";"(newClient, 1)";"(NewClient, 1)";"(Parse, 1)";"(Get, 0)";"(NewBroker, 3)";"(New, 2)";"(Run, 1)";"(Handle, 2)";}
"(Delete, 1)" -> {"(Delete, 2)";"(Parse, 1)";"(Get, 2)";"(Delete, 3)";"(Do, 2)";"(Remove, 2)";}
"(Validate, 1)" -> {"(Validate, 2)";"(New, 2)";}
"(Save, 3)" -> {"(snapshotPath, 4)";}
"(RunSnap, 2)" -> {"(snap, 2)";}
"(stop, 1)" -> {}
"(delete, 1)" -> {"(Delete, 3)";}
}

```

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: 07e45cb8ec631f158f6c7c29330a9cdeae9f4a29

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.