Don't accept empty input in DecodeInto

This commit is contained in:
Daniel Smith 2014-10-16 13:38:18 -07:00
parent 414ae795b2
commit 71126e79d1
2 changed files with 10 additions and 0 deletions

View File

@ -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

View File

@ -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) {