Verify data is array/slice when decoding a slice
diff --git a/mapstructure.go b/mapstructure.go index 35b11df..8f3ded9 100644 --- a/mapstructure.go +++ b/mapstructure.go
@@ -119,6 +119,12 @@ func decodeSlice(name string, data interface{}, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) + dataValKind := dataVal.Kind() + if dataValKind != reflect.Array && dataValKind != reflect.Slice { + return fmt.Errorf( + "'%s': source data must be an array or slice, got %s", name, dataValKind) + } + valType := val.Type() valElemType := valType.Elem()