Skip to content
This repository was archived by the owner on Aug 5, 2020. It is now read-only.

Commit 2582640

Browse files
authored
bug(k8s): unintentional variable shadowing (#92)
* bug(k8s): unintentional variable shadowing Enforce block scope heap reference when referring to for-loop enumerated variables by address; otherwise all internal assignments inside for loop refer to the same address: the address of the enumerated variable in the final iteration. * test(k8s): added basic RunningK8sData coverage
1 parent 6aa120a commit 2582640

2 files changed

Lines changed: 355 additions & 8 deletions

File tree

k8s/k8s.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ func (rkd *runningK8sData) DaemonSets() ([]*models.K8sResource, error) {
6969
}
7070
ret := make([]*models.K8sResource, len(ds))
7171
for i, d := range ds {
72+
d2 := d // grab a value copy of "d" to enforce block scope heap reference, and avoid shadowing non-block scope "d"
7273
daemonSet := &models.K8sResource{
73-
Data: &d,
74+
Data: &d2,
7475
}
7576
ret[i] = daemonSet
7677
}
@@ -85,8 +86,9 @@ func (rkd *runningK8sData) Deployments() ([]*models.K8sResource, error) {
8586
}
8687
ret := make([]*models.K8sResource, len(ds))
8788
for i, d := range ds {
89+
d2 := d // grab a value copy of "d" to enforce block scope heap reference, and avoid shadowing non-block scope "d"
8890
dep := &models.K8sResource{
89-
Data: &d,
91+
Data: &d2,
9092
}
9193
ret[i] = dep
9294
}
@@ -101,8 +103,9 @@ func (rkd *runningK8sData) Events() ([]*models.K8sResource, error) {
101103
}
102104
ret := make([]*models.K8sResource, len(events))
103105
for i, e := range events {
106+
e2 := e // grab a value copy of "e" to enforce block scope heap reference, and avoid shadowing non-block scope "e"
104107
event := &models.K8sResource{
105-
Data: &e,
108+
Data: &e2,
106109
}
107110
ret[i] = event
108111
}
@@ -117,8 +120,9 @@ func (rkd *runningK8sData) Nodes() ([]*models.K8sResource, error) {
117120
}
118121
ret := make([]*models.K8sResource, len(nodes))
119122
for i, n := range nodes {
123+
n2 := n // grab a value copy of "n" to enforce block scope heap reference, and avoid shadowing non-block scope "n"
120124
node := &models.K8sResource{
121-
Data: &n,
125+
Data: &n2,
122126
}
123127
ret[i] = node
124128
}
@@ -133,8 +137,9 @@ func (rkd *runningK8sData) Pods() ([]*models.K8sResource, error) {
133137
}
134138
ret := make([]*models.K8sResource, len(pods))
135139
for i, p := range pods {
140+
p2 := p // grab a value copy of "p" to enforce block scope heap reference, and avoid shadowing non-block scope "p"
136141
pod := &models.K8sResource{
137-
Data: &p,
142+
Data: &p2,
138143
}
139144
ret[i] = pod
140145
}
@@ -149,8 +154,9 @@ func (rkd *runningK8sData) ReplicaSets() ([]*models.K8sResource, error) {
149154
}
150155
ret := make([]*models.K8sResource, len(rs))
151156
for i, r := range rs {
157+
r2 := r // grab a value copy of "r" to enforce block scope heap reference, and avoid shadowing non-block scope "r"
152158
replicaSet := &models.K8sResource{
153-
Data: &r,
159+
Data: &r2,
154160
}
155161
ret[i] = replicaSet
156162
}
@@ -165,8 +171,9 @@ func (rkd *runningK8sData) ReplicationControllers() ([]*models.K8sResource, erro
165171
}
166172
ret := make([]*models.K8sResource, len(rcs))
167173
for i, rc := range rcs {
174+
rc2 := rc // grab a value copy of "rc" to enforce block scope heap reference, and avoid shadowing non-block scope "rc"
168175
replicationController := &models.K8sResource{
169-
Data: &rc,
176+
Data: &rc2,
170177
}
171178
ret[i] = replicationController
172179
}
@@ -181,8 +188,9 @@ func (rkd *runningK8sData) Services() ([]*models.K8sResource, error) {
181188
}
182189
ret := make([]*models.K8sResource, len(services))
183190
for i, s := range services {
191+
s2 := s // grab a value copy of "s" to enforce block scope heap reference, and avoid shadowing non-block scope "s"
184192
service := &models.K8sResource{
185-
Data: &s,
193+
Data: &s2,
186194
}
187195
ret[i] = service
188196
}

0 commit comments

Comments
 (0)