From 64c30a067832155bae2a5f22daebb0bd7729d30e Mon Sep 17 00:00:00 2001 From: Phillip Wittrock Date: Thu, 13 Feb 2020 15:02:04 -0800 Subject: [PATCH] fix nil dereference issue in fieldmeta --- kyaml/fieldmeta/fieldmeta.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/kyaml/fieldmeta/fieldmeta.go b/kyaml/fieldmeta/fieldmeta.go index 0e83a8767..b4d6383d4 100644 --- a/kyaml/fieldmeta/fieldmeta.go +++ b/kyaml/fieldmeta/fieldmeta.go @@ -17,7 +17,7 @@ import ( type FieldMeta struct { Schema spec.Schema - Extensions *XKustomize + Extensions XKustomize } type XKustomize struct { @@ -62,9 +62,22 @@ func (fm *FieldMeta) Read(n *yaml.RNode) error { return nil } +func isExtensionEmpty(x XKustomize) bool { + if x.FieldSetter != nil { + return false + } + if x.SetBy != "" { + return false + } + if len(x.PartialFieldSetters) > 0 { + return false + } + return true +} + // Write writes the FieldMeta to a node func (fm *FieldMeta) Write(n *yaml.RNode) error { - if fm.Extensions != nil { + if !isExtensionEmpty(fm.Extensions) { fm.Schema.VendorExtensible.AddExtension("x-kustomize", fm.Extensions) } else { delete(fm.Schema.VendorExtensible.Extensions, "x-kustomize")