Commit 332a03b0 authored by Tim Hockin's avatar Tim Hockin

Merge pull request #1844 from lavalamp/fix

Don't accept empty input in DecodeInto
parents 792bd214 71126e79
......@@ -17,6 +17,7 @@ limitations under the License.
package conversion
import (
"errors"
"fmt"
"gopkg.in/v1/yaml"
......@@ -73,6 +74,12 @@ func (s *Scheme) Decode(data []byte) (interface{}, error) {
// If obj's version doesn't match that in data, an attempt will be made to convert
// data into obj's version.
func (s *Scheme) DecodeInto(data []byte, obj interface{}) error {
if len(data) == 0 {
// This is valid YAML, but it's a bad idea not to return an error
// for an empty string-- that's almost certainly not what the caller
// was expecting.
return errors.New("empty input")
}
dataVersion, dataKind, err := s.DataVersionAndKind(data)
if err != nil {
return err
......
......@@ -290,6 +290,9 @@ func TestBadJSONRejection(t *testing.T) {
if err := s.DecodeInto(badJSONKindMismatch, &TestType1{}); err == nil {
t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch)
}
if err := s.DecodeInto([]byte(``), &TestType1{}); err == nil {
t.Errorf("Did not give error for empty data")
}
}
func TestBadJSONRejectionForSetInternalVersion(t *testing.T) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment