Skip to content

Commit 670b77d

Browse files
authored
Merge pull request #917 from dmvolod/fix-remove-finalizer
🐛 controllerutil.RemoveFinalizer can occurs slice bounds out of range exception
2 parents a457e27 + 01dbf9d commit 670b77d

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

pkg/controller/controllerutil/controllerutil.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,10 @@ func AddFinalizerWithError(o runtime.Object, finalizer string) error {
262262
// RemoveFinalizer accepts a metav1 object and removes the provided finalizer if present.
263263
func RemoveFinalizer(o metav1.Object, finalizer string) {
264264
f := o.GetFinalizers()
265-
for i, e := range f {
266-
if e == finalizer {
265+
for i := 0; i < len(f); i++ {
266+
if f[i] == finalizer {
267267
f = append(f[:i], f[i+1:]...)
268+
i--
268269
}
269270
}
270271
o.SetFinalizers(f)

pkg/controller/controllerutil/controllerutil_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,12 @@ var _ = Describe("Controllerutil", func() {
445445
controllerutil.RemoveFinalizer(deploy, testFinalizer)
446446
Expect(deploy.ObjectMeta.GetFinalizers()).To(Equal([]string{}))
447447
})
448+
449+
It("should remove all equal finalizers if present", func() {
450+
deploy.SetFinalizers(append(deploy.Finalizers, testFinalizer, testFinalizer))
451+
controllerutil.RemoveFinalizer(deploy, testFinalizer)
452+
Expect(deploy.ObjectMeta.GetFinalizers()).To(Equal([]string{}))
453+
})
448454
})
449455
})
450456
})

0 commit comments

Comments
 (0)