mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
Don't accept empty input in DecodeInto
This commit is contained in:
parent
414ae795b2
commit
71126e79d1
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package conversion
|
package conversion
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gopkg.in/v1/yaml"
|
"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
|
// If obj's version doesn't match that in data, an attempt will be made to convert
|
||||||
// data into obj's version.
|
// data into obj's version.
|
||||||
func (s *Scheme) DecodeInto(data []byte, obj interface{}) error {
|
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)
|
dataVersion, dataKind, err := s.DataVersionAndKind(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -290,6 +290,9 @@ func TestBadJSONRejection(t *testing.T) {
|
|||||||
if err := s.DecodeInto(badJSONKindMismatch, &TestType1{}); err == nil {
|
if err := s.DecodeInto(badJSONKindMismatch, &TestType1{}); err == nil {
|
||||||
t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch)
|
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) {
|
func TestBadJSONRejectionForSetInternalVersion(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user