[#57] core/object: Fix validation of linking object

Linking object carries only identifier of the parent object. Fix Validate
method of FormatValidator to not validate parent object of the linking
object.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
remotes/KirillovDenis/release/v0.21.1
Leonard Lyubich 2020-09-29 19:40:25 +03:00 committed by Alex Vanin
parent be322835af
commit 68178b8d74
1 changed files with 12 additions and 7 deletions

View File

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