Skip to content

Commit a30cdaf

Browse files
committed
fix: prevent implicit memory aliasing in for loops
In golang the iteration variable is reused. At each iteration, the value of the next element in the range expression is assigned to the iteration variable; "provider" doesn't change, only its value changes. Hence, the expression &provider is referring to the same location in memory. The recommended solution for the issue is to redeclare "provider" inside the for loop. For more information: golang/go#56010 https://husni.dev/beware-of-implicit-memory-aliasing-in-go-foor-loop/
1 parent 5f66be4 commit a30cdaf

File tree

4 files changed

+8
-0
lines changed

4 files changed

+8
-0
lines changed

internal/controller/genericprovider/bootstrapprovider_wrapper.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ type BootstrapProviderListWrapper struct {
6464

6565
func (b *BootstrapProviderListWrapper) GetItems() []GenericProvider {
6666
providers := []GenericProvider{}
67+
6768
for _, provider := range b.Items {
69+
provider := provider
6870
providers = append(providers, &BootstrapProviderWrapper{&provider})
6971
}
7072

internal/controller/genericprovider/controlplaneprovider_wrapper.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ type ControlPlaneProviderListWrapper struct {
6464

6565
func (c *ControlPlaneProviderListWrapper) GetItems() []GenericProvider {
6666
providers := []GenericProvider{}
67+
6768
for _, provider := range c.Items {
69+
provider := provider
6870
providers = append(providers, &ControlPlaneProviderWrapper{&provider})
6971
}
7072

internal/controller/genericprovider/coreprovider_wrapper.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ type CoreProviderListWrapper struct {
6464

6565
func (c *CoreProviderListWrapper) GetItems() []GenericProvider {
6666
providers := []GenericProvider{}
67+
6768
for _, provider := range c.Items {
69+
provider := provider
6870
providers = append(providers, &CoreProviderWrapper{&provider})
6971
}
7072

internal/controller/genericprovider/infrastructureprovider_wrapper.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ type InfrastructureProviderListWrapper struct {
6464

6565
func (i *InfrastructureProviderListWrapper) GetItems() []GenericProvider {
6666
providers := []GenericProvider{}
67+
6768
for _, provider := range i.Items {
69+
provider := provider
6870
providers = append(providers, &InfrastructureProviderWrapper{&provider})
6971
}
7072

0 commit comments

Comments
 (0)