prevent sdk panics in 2 specific cases
Fix 2 specific panics in the sdk when reading nil or computed maps from various configurations. The legacy sdk code is too dependent on undefined behavior to attempt to find and fix the root cause at this point. Since the code is essentially frozen for future development, these changes are specifically targeted to only prevent panics from within providers. Because any code effected by these changes would have panicked, there cannot be anything depending on the behavior, and these should be safe to fix.
This commit is contained in:
parent
fe11724678
commit
cd3ac50ddb
|
@ -219,6 +219,9 @@ func (r *ConfigFieldReader) readMap(k string, schema *Schema) (FieldReadResult,
|
|||
v, _ := r.Config.Get(key)
|
||||
result[ik] = v
|
||||
}
|
||||
case nil:
|
||||
// the map may have been empty on the configuration, so we leave the
|
||||
// empty result
|
||||
default:
|
||||
panic(fmt.Sprintf("unknown type: %#v", mraw))
|
||||
}
|
||||
|
|
|
@ -95,7 +95,9 @@ func (r *DiffFieldReader) readMap(
|
|||
return FieldReadResult{}, err
|
||||
}
|
||||
if source.Exists {
|
||||
result = source.Value.(map[string]interface{})
|
||||
// readMap may return a nil value, or an unknown value placeholder in
|
||||
// some cases, causing the type assertion to panic if we don't assign the ok value
|
||||
result, _ = source.Value.(map[string]interface{})
|
||||
resultSet = true
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue