Skip to content

Commit abd7ea6

Browse files
committed
Stop using unsafe for EnvVar conversion
Signed-off-by: Stefan Büringer [email protected]
1 parent 49912a8 commit abd7ea6

File tree

2 files changed

+96
-18
lines changed

2 files changed

+96
-18
lines changed

api/bootstrap/kubeadm/v1beta1/conversion.go

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package v1beta1
1919
import (
2020
"fmt"
2121
"reflect"
22-
"unsafe"
2322

2423
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2524
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
@@ -359,7 +358,12 @@ func Convert_v1beta2_APIServer_To_v1beta1_APIServer(in *bootstrapv1.APIServer, o
359358
if in.ExtraEnvs == nil {
360359
out.ExtraEnvs = nil
361360
} else {
362-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
361+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
362+
for i := range *in.ExtraEnvs {
363+
if err := Convert_v1beta2_EnvVar_To_v1beta1_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
364+
return err
365+
}
366+
}
363367
}
364368
if err := convert_v1beta2_ExtraVolumes_To_v1beta1_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s); err != nil {
365369
return err
@@ -373,7 +377,12 @@ func Convert_v1beta2_ControllerManager_To_v1beta1_ControlPlaneComponent(in *boot
373377
if in.ExtraEnvs == nil {
374378
out.ExtraEnvs = nil
375379
} else {
376-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
380+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
381+
for i := range *in.ExtraEnvs {
382+
if err := Convert_v1beta2_EnvVar_To_v1beta1_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
383+
return err
384+
}
385+
}
377386
}
378387
return convert_v1beta2_ExtraVolumes_To_v1beta1_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
379388
}
@@ -384,7 +393,12 @@ func Convert_v1beta2_Scheduler_To_v1beta1_ControlPlaneComponent(in *bootstrapv1.
384393
if in.ExtraEnvs == nil {
385394
out.ExtraEnvs = nil
386395
} else {
387-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
396+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
397+
for i := range *in.ExtraEnvs {
398+
if err := Convert_v1beta2_EnvVar_To_v1beta1_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
399+
return err
400+
}
401+
}
388402
}
389403
return convert_v1beta2_ExtraVolumes_To_v1beta1_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
390404
}
@@ -409,7 +423,12 @@ func Convert_v1beta2_LocalEtcd_To_v1beta1_LocalEtcd(in *bootstrapv1.LocalEtcd, o
409423
if in.ExtraEnvs == nil {
410424
out.ExtraEnvs = nil
411425
} else {
412-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
426+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
427+
for i := range *in.ExtraEnvs {
428+
if err := Convert_v1beta2_EnvVar_To_v1beta1_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
429+
return err
430+
}
431+
}
413432
}
414433
out.ImageRepository = in.ImageRepository
415434
out.ImageTag = in.ImageTag
@@ -450,7 +469,12 @@ func Convert_v1beta1_APIServer_To_v1beta2_APIServer(in *APIServer, out *bootstra
450469
if in.ExtraEnvs == nil {
451470
out.ExtraEnvs = nil
452471
} else {
453-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
472+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
473+
for i := range in.ExtraEnvs {
474+
if err := Convert_v1beta1_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
475+
return err
476+
}
477+
}
454478
}
455479
if err := convert_v1beta1_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s); err != nil {
456480
return err
@@ -463,7 +487,12 @@ func Convert_v1beta1_ControlPlaneComponent_To_v1beta2_ControllerManager(in *Cont
463487
if in.ExtraEnvs == nil {
464488
out.ExtraEnvs = nil
465489
} else {
466-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
490+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
491+
for i := range in.ExtraEnvs {
492+
if err := Convert_v1beta1_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
493+
return err
494+
}
495+
}
467496
}
468497
return convert_v1beta1_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
469498
}
@@ -473,7 +502,12 @@ func Convert_v1beta1_ControlPlaneComponent_To_v1beta2_Scheduler(in *ControlPlane
473502
if in.ExtraEnvs == nil {
474503
out.ExtraEnvs = nil
475504
} else {
476-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
505+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
506+
for i := range in.ExtraEnvs {
507+
if err := Convert_v1beta1_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
508+
return err
509+
}
510+
}
477511
}
478512
return convert_v1beta1_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
479513
}
@@ -519,7 +553,12 @@ func Convert_v1beta1_LocalEtcd_To_v1beta2_LocalEtcd(in *LocalEtcd, out *bootstra
519553
if in.ExtraEnvs == nil {
520554
out.ExtraEnvs = nil
521555
} else {
522-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
556+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
557+
for i := range in.ExtraEnvs {
558+
if err := Convert_v1beta1_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
559+
return err
560+
}
561+
}
523562
}
524563
out.ImageRepository = in.ImageRepository
525564
out.ImageTag = in.ImageTag

bootstrap/kubeadm/types/upstreamv1beta4/conversion.go

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"math"
2121
"reflect"
2222
"time"
23-
"unsafe"
2423

2524
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2625
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
@@ -193,7 +192,12 @@ func Convert_upstreamv1beta4_APIServer_To_v1beta2_APIServer(in *APIServer, out *
193192
if in.ExtraEnvs == nil {
194193
out.ExtraEnvs = nil
195194
} else {
196-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
195+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
196+
for i := range in.ExtraEnvs {
197+
if err := Convert_upstreamv1beta4_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
198+
return err
199+
}
200+
}
197201
}
198202
if err := convert_upstreamv1beta4_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s); err != nil {
199203
return err
@@ -213,7 +217,12 @@ func Convert_upstreamv1beta4_ControlPlaneComponent_To_v1beta2_ControllerManager(
213217
if in.ExtraEnvs == nil {
214218
out.ExtraEnvs = nil
215219
} else {
216-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
220+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
221+
for i := range in.ExtraEnvs {
222+
if err := Convert_upstreamv1beta4_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
223+
return err
224+
}
225+
}
217226
}
218227
return convert_upstreamv1beta4_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
219228
}
@@ -230,7 +239,12 @@ func Convert_upstreamv1beta4_ControlPlaneComponent_To_v1beta2_Scheduler(in *Cont
230239
if in.ExtraEnvs == nil {
231240
out.ExtraEnvs = nil
232241
} else {
233-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
242+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
243+
for i := range in.ExtraEnvs {
244+
if err := Convert_upstreamv1beta4_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
245+
return err
246+
}
247+
}
234248
}
235249
return convert_upstreamv1beta4_ExtraVolumes_To_v1beta2_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
236250
}
@@ -239,7 +253,12 @@ func Convert_upstreamv1beta4_LocalEtcd_To_v1beta2_LocalEtcd(in *LocalEtcd, out *
239253
if in.ExtraEnvs == nil {
240254
out.ExtraEnvs = nil
241255
} else {
242-
out.ExtraEnvs = (*[]bootstrapv1.EnvVar)(unsafe.Pointer(&in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
256+
out.ExtraEnvs = ptr.To(make([]bootstrapv1.EnvVar, len(in.ExtraEnvs)))
257+
for i := range in.ExtraEnvs {
258+
if err := Convert_upstreamv1beta4_EnvVar_To_v1beta2_EnvVar(&(in.ExtraEnvs)[i], &(*out.ExtraEnvs)[i], s); err != nil {
259+
return err
260+
}
261+
}
243262
}
244263
out.ImageRepository = in.ImageRepository
245264
out.ImageTag = in.ImageTag
@@ -345,7 +364,12 @@ func Convert_v1beta2_APIServer_To_upstreamv1beta4_APIServer(in *bootstrapv1.APIS
345364
if in.ExtraEnvs == nil {
346365
out.ExtraEnvs = nil
347366
} else {
348-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
367+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
368+
for i := range *in.ExtraEnvs {
369+
if err := Convert_v1beta2_EnvVar_To_upstreamv1beta4_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
370+
return err
371+
}
372+
}
349373
}
350374
if err := convert_v1beta2_ExtraVolumes_To_upstreamv1beta4_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s); err != nil {
351375
return err
@@ -366,7 +390,12 @@ func Convert_v1beta2_ControllerManager_To_upstreamv1beta4_ControlPlaneComponent(
366390
if in.ExtraEnvs == nil {
367391
out.ExtraEnvs = nil
368392
} else {
369-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
393+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
394+
for i := range *in.ExtraEnvs {
395+
if err := Convert_v1beta2_EnvVar_To_upstreamv1beta4_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
396+
return err
397+
}
398+
}
370399
}
371400
return convert_v1beta2_ExtraVolumes_To_upstreamv1beta4_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
372401
}
@@ -384,7 +413,12 @@ func Convert_v1beta2_Scheduler_To_upstreamv1beta4_ControlPlaneComponent(in *boot
384413
if in.ExtraEnvs == nil {
385414
out.ExtraEnvs = nil
386415
} else {
387-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
416+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
417+
for i := range *in.ExtraEnvs {
418+
if err := Convert_v1beta2_EnvVar_To_upstreamv1beta4_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
419+
return err
420+
}
421+
}
388422
}
389423
return convert_v1beta2_ExtraVolumes_To_upstreamv1beta4_ExtraVolumes(&in.ExtraVolumes, &out.ExtraVolumes, s)
390424
}
@@ -393,7 +427,12 @@ func Convert_v1beta2_LocalEtcd_To_upstreamv1beta4_LocalEtcd(in *bootstrapv1.Loca
393427
if in.ExtraEnvs == nil {
394428
out.ExtraEnvs = nil
395429
} else {
396-
out.ExtraEnvs = *(*[]EnvVar)(unsafe.Pointer(in.ExtraEnvs)) //nolint:gosec // copied over from generated code, fuzzer should detect if we run into issues
430+
out.ExtraEnvs = make([]EnvVar, len(*in.ExtraEnvs))
431+
for i := range *in.ExtraEnvs {
432+
if err := Convert_v1beta2_EnvVar_To_upstreamv1beta4_EnvVar(&(*in.ExtraEnvs)[i], &(out.ExtraEnvs)[i], s); err != nil {
433+
return err
434+
}
435+
}
397436
}
398437
out.ImageRepository = in.ImageRepository
399438
out.ImageTag = in.ImageTag

0 commit comments

Comments
 (0)