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()