Skip to content

Commit

Permalink
backport of commit 7df53af (#17053)
Browse files Browse the repository at this point in the history
Co-authored-by: Kyle Havlovitz <[email protected]>
  • Loading branch information
hc-github-team-consul-core and kyhavlov authored Apr 19, 2023
1 parent ee82e1d commit a9edaf9
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .changelog/17048.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
Fix an bug where decoding some Config structs with unset pointer fields could fail with `reflect: call of reflect.Value.Type on zero Value`.
```
2 changes: 1 addition & 1 deletion lib/map_walker.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func (w *mapWalker) MapElem(m, k, v reflect.Value) error {
return nil
}

if inner := v.Elem(); inner.Type() == typMapIfaceIface {
if inner := v.Elem(); inner.IsValid() && inner.Type() == typMapIfaceIface {
// map[interface{}]interface{}, attempt to weakly decode into string keys
var target map[string]interface{}
if err := mapstructure.WeakDecode(v.Interface(), &target); err != nil {
Expand Down
10 changes: 10 additions & 0 deletions lib/map_walker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ func TestMapWalk(t *testing.T) {
},
unexpected: true,
},
// ensure we don't panic from trying to call reflect.Value.Type
// on a nil pointer
"nil pointer": {
input: map[string]interface{}{
"foo": nil,
},
expected: map[string]interface{}{
"foo": nil,
},
},
// ensure nested maps get processed correctly
"nested": {
input: map[string]interface{}{
Expand Down

0 comments on commit a9edaf9

Please sign in to comment.