fix: do not allow overwriting the mapstructure output

Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
Mark Sagi-Kazar 2024-06-24 18:14:40 +02:00 committed by Márk Sági-Kazár
parent 7dbe493dd1
commit 5964efa262

View file

@ -949,7 +949,6 @@ func (v *Viper) decodeStructKeys(input any, opts ...DecoderConfigOption) ([]stri
func defaultDecoderConfig(output any, opts ...DecoderConfigOption) *mapstructure.DecoderConfig { func defaultDecoderConfig(output any, opts ...DecoderConfigOption) *mapstructure.DecoderConfig {
c := &mapstructure.DecoderConfig{ c := &mapstructure.DecoderConfig{
Metadata: nil, Metadata: nil,
Result: output,
WeaklyTypedInput: true, WeaklyTypedInput: true,
DecodeHook: mapstructure.ComposeDecodeHookFunc( DecodeHook: mapstructure.ComposeDecodeHookFunc(
mapstructure.StringToTimeDurationHookFunc(), mapstructure.StringToTimeDurationHookFunc(),
@ -957,9 +956,14 @@ func defaultDecoderConfig(output any, opts ...DecoderConfigOption) *mapstructure
stringToWeakSliceHookFunc(","), stringToWeakSliceHookFunc(","),
), ),
} }
for _, opt := range opts { for _, opt := range opts {
opt(c) opt(c)
} }
// Do not allow overwriting the output
c.Result = output
return c return c
} }