From 5c408f7fe4f0f0d3e09dc0277e5f8efdd588b543 Mon Sep 17 00:00:00 2001 From: Ekaterina Pavlova Date: Wed, 5 Jun 2024 11:51:44 +0300 Subject: [PATCH 1/2] core: adjust prevHeader nil check prevHeader is never nil. Refs #3419 Signed-off-by: Ekaterina Pavlova --- pkg/core/blockchain.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkg/core/blockchain.go b/pkg/core/blockchain.go index d5e090044..3e7984aa7 100644 --- a/pkg/core/blockchain.go +++ b/pkg/core/blockchain.go @@ -3017,12 +3017,7 @@ func (bc *Blockchain) verifyTxWitnesses(t *transaction.Transaction, block *block // verifyHeaderWitnesses is a block-specific implementation of VerifyWitnesses logic. func (bc *Blockchain) verifyHeaderWitnesses(currHeader, prevHeader *block.Header) error { - var hash util.Uint160 - if prevHeader == nil && currHeader.PrevHash.Equals(util.Uint256{}) { - hash = currHeader.Script.ScriptHash() - } else { - hash = prevHeader.NextConsensus - } + hash := prevHeader.NextConsensus _, err := bc.VerifyWitness(hash, currHeader, &currHeader.Script, HeaderVerificationGasLimit) return err } From 41109f442a3c7e0079de3de6245761a59c82f429 Mon Sep 17 00:00:00 2001 From: Ekaterina Pavlova Date: Tue, 21 May 2024 17:45:34 +0300 Subject: [PATCH 2/2] oracle: add length check o.MainCfg.NeoFS.Nodes Prevent the risk of a division by zero error when accessing the `o.MainCfg.NeoFS.Nodes[index]` array. Close #3419 Signed-off-by: Ekaterina Pavlova --- pkg/services/oracle/request.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/services/oracle/request.go b/pkg/services/oracle/request.go index 6267f55d0..1607fa56a 100644 --- a/pkg/services/oracle/request.go +++ b/pkg/services/oracle/request.go @@ -157,6 +157,11 @@ func (o *Oracle) processRequest(priv *keys.PrivateKey, req request) error { resp.Code = transaction.Error } case neofs.URIScheme: + if len(o.MainCfg.NeoFS.Nodes) == 0 { + o.Log.Warn("no NeoFS nodes configured", zap.String("url", req.Req.URL)) + resp.Code = transaction.Error + break + } ctx, cancel := context.WithTimeout(context.Background(), o.MainCfg.NeoFS.Timeout) defer cancel() index := (int(req.ID) + incTx.attempts) % len(o.MainCfg.NeoFS.Nodes)