Return 400 on invalid patch requests
Kubernetes-commit: 7e964387485f12432bbf616835e034436f52cb4c
This commit is contained in:
parent
93d9210bc7
commit
b19b440e6b
|
|
@ -36,6 +36,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/mergepatch"
|
"k8s.io/apimachinery/pkg/util/mergepatch"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/apiserver/pkg/admission"
|
"k8s.io/apiserver/pkg/admission"
|
||||||
"k8s.io/apiserver/pkg/audit"
|
"k8s.io/apiserver/pkg/audit"
|
||||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||||
|
|
@ -318,7 +319,9 @@ func (p *jsonPatcher) applyPatchToCurrentObject(currentObject runtime.Object) (r
|
||||||
// Construct the resulting typed, unversioned object.
|
// Construct the resulting typed, unversioned object.
|
||||||
objToUpdate := p.restPatcher.New()
|
objToUpdate := p.restPatcher.New()
|
||||||
if err := runtime.DecodeInto(p.codec, patchedObjJS, objToUpdate); err != nil {
|
if err := runtime.DecodeInto(p.codec, patchedObjJS, objToUpdate); err != nil {
|
||||||
return nil, err
|
return nil, errors.NewInvalid(schema.GroupKind{}, "", field.ErrorList{
|
||||||
|
field.Invalid(field.NewPath("patch"), string(patchedObjJS), err.Error()),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.fieldManager != nil {
|
if p.fieldManager != nil {
|
||||||
|
|
@ -583,7 +586,9 @@ func applyPatchToObject(
|
||||||
|
|
||||||
// Rather than serialize the patched map to JSON, then decode it to an object, we go directly from a map to an object
|
// Rather than serialize the patched map to JSON, then decode it to an object, we go directly from a map to an object
|
||||||
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(patchedObjMap, objToUpdate); err != nil {
|
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(patchedObjMap, objToUpdate); err != nil {
|
||||||
return err
|
return errors.NewInvalid(schema.GroupKind{}, "", field.ErrorList{
|
||||||
|
field.Invalid(field.NewPath("patch"), fmt.Sprintf("%+v", patchMap), err.Error()),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// Decoding from JSON to a versioned object would apply defaults, so we do the same here
|
// Decoding from JSON to a versioned object would apply defaults, so we do the same here
|
||||||
defaulter.Default(objToUpdate)
|
defaulter.Default(objToUpdate)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue