mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #25709 from asalkeld/null-deref
Automatic merge from submit-queue Check for an empty value in validateField ```release-note * Fix a panic when args was not supplied with any values. ``` reflect.TypeOf() can take a nil (it then returns a nil), but Kind() panics on a nil. Now the user gets the following output: ./kubectl.sh --server=http://localhost:8080 create -f ../../test-files/test-rc.yaml error validating "../../test-files/test-rc.yaml": error validating data: unexpected nil value for field spec.template.spec.containers[0].args[0]; if you choose to ignore these errors, turn validation off with --validate=false fixes #20627 and fixes #26927
This commit is contained in:
		@@ -297,6 +297,10 @@ func (s *SwaggerSchema) isGenericArray(p swagger.ModelProperty) bool {
 | 
			
		||||
var versionRegexp = regexp.MustCompile(`^v.+\..*`)
 | 
			
		||||
 | 
			
		||||
func (s *SwaggerSchema) validateField(value interface{}, fieldName, fieldType string, fieldDetails *swagger.ModelProperty) []error {
 | 
			
		||||
	allErrs := []error{}
 | 
			
		||||
	if reflect.TypeOf(value) == nil {
 | 
			
		||||
		return append(allErrs, fmt.Errorf("unexpected nil value for field %v", fieldName))
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: caesarxuchao: because we have multiple group/versions and objects
 | 
			
		||||
	// may reference objects in other group, the commented out way of checking
 | 
			
		||||
	// if a filedType is a type defined by us is outdated. We use a hacky way
 | 
			
		||||
@@ -310,7 +314,6 @@ func (s *SwaggerSchema) validateField(value interface{}, fieldName, fieldType st
 | 
			
		||||
		// if strings.HasPrefix(fieldType, apiVersion) {
 | 
			
		||||
		return s.ValidateObject(value, fieldName, fieldType)
 | 
			
		||||
	}
 | 
			
		||||
	allErrs := []error{}
 | 
			
		||||
	switch fieldType {
 | 
			
		||||
	case "string":
 | 
			
		||||
		// Be loose about what we accept for 'string' since we use IntOrString in a couple of places
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user