From 7742238495992e166d297dcaa27853905451a633 Mon Sep 17 00:00:00 2001 From: Poorna Krishnamoorthy Date: Tue, 24 Nov 2020 20:43:11 -0800 Subject: [PATCH] fix: marshaling stack overflow in noncurrentversion lifecycle config (#10971) --- pkg/bucket/lifecycle/lifecycle_test.go | 6 ++++++ pkg/bucket/lifecycle/noncurrentversion.go | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/bucket/lifecycle/lifecycle_test.go b/pkg/bucket/lifecycle/lifecycle_test.go index ad25b8050..e4ad92dd5 100644 --- a/pkg/bucket/lifecycle/lifecycle_test.go +++ b/pkg/bucket/lifecycle/lifecycle_test.go @@ -189,6 +189,12 @@ func TestMarshalLifecycleConfig(t *testing.T) { Filter: Filter{Prefix: "prefix-1"}, Expiration: Expiration{Date: ExpirationDate(midnightTS)}, }, + { + Status: "Enabled", + Filter: Filter{Prefix: "prefix-1"}, + Expiration: Expiration{Date: ExpirationDate(midnightTS)}, + NoncurrentVersionTransition: NoncurrentVersionTransition{NoncurrentDays: 2, StorageClass: "TEST"}, + }, }, } b, err := xml.MarshalIndent(&lc, "", "\t") diff --git a/pkg/bucket/lifecycle/noncurrentversion.go b/pkg/bucket/lifecycle/noncurrentversion.go index f23c6121a..d1912cdfc 100644 --- a/pkg/bucket/lifecycle/noncurrentversion.go +++ b/pkg/bucket/lifecycle/noncurrentversion.go @@ -52,7 +52,8 @@ func (n NoncurrentVersionTransition) MarshalXML(e *xml.Encoder, start xml.StartE if n.NoncurrentDays == ExpirationDays(0) { return nil } - return e.EncodeElement(&n, start) + type noncurrentVersionTransitionWrapper NoncurrentVersionTransition + return e.EncodeElement(noncurrentVersionTransitionWrapper(n), start) } // IsDaysNull returns true if days field is null