From 49fedbc51cafa64e4eb0eae9fb79ccbe2d4c6774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 29 Jun 2021 09:38:05 +0200 Subject: config: Fix handling of invalid OS env config overrides Fixes #8709 --- config/defaultConfigProvider.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'config') diff --git a/config/defaultConfigProvider.go b/config/defaultConfigProvider.go index 80353664e..9f1c44ee1 100644 --- a/config/defaultConfigProvider.go +++ b/config/defaultConfigProvider.go @@ -169,6 +169,9 @@ func (c *defaultConfigProvider) Set(k string, v interface{}) { } key, m := c.getNestedKeyAndMap(k, true) + if m == nil { + return + } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { @@ -289,6 +292,9 @@ func (c *defaultConfigProvider) Merge(k string, v interface{}) { } key, m := c.getNestedKeyAndMap(k, true) + if m == nil { + return + } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { @@ -422,7 +428,12 @@ func (c *defaultConfigProvider) getNestedKeyAndMap(key string, create bool) (str return "", nil } } - current = next.(maps.Params) + var ok bool + current, ok = next.(maps.Params) + if !ok { + // E.g. a string, not a map that we can store values in. + return "", nil + } } return parts[len(parts)-1], current } -- cgit v1.2.3