diff --git a/pkg/core/object/fmt.go b/pkg/core/object/fmt.go index c0e8102ed..7d1bfc9f0 100644 --- a/pkg/core/object/fmt.go +++ b/pkg/core/object/fmt.go @@ -35,14 +35,19 @@ func (v *FormatValidator) Validate(obj *Object) error { return errNilCID } - for ; obj.GetID() != nil; obj = NewFromSDK(obj.GetParent()) { - if err := v.validateSignatureKey(obj); err != nil { - return errors.Wrapf(err, "(%T) could not validate signature key", v) - } + if err := v.validateSignatureKey(obj); err != nil { + return errors.Wrapf(err, "(%T) could not validate signature key", v) + } - if err := object.CheckHeaderVerificationFields(obj.SDK()); err != nil { - return errors.Wrapf(err, "(%T) could not validate header fields", v) - } + if err := object.CheckHeaderVerificationFields(obj.SDK()); err != nil { + return errors.Wrapf(err, "(%T) could not validate header fields", v) + } + + par := NewFromSDK(obj.GetParent()) + + // validate parent object header + if par.GetID() != nil && len(obj.GetChildren()) == 0 { + return v.Validate(par) } return nil