From 957a3602d98ab84649c67aec38945e136a59b7f3 Mon Sep 17 00:00:00 2001 From: cui Date: Wed, 7 Jan 2026 10:02:27 +0800 Subject: [PATCH] core/vm: avoid escape to heap (#33537) --- core/vm/contracts.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 00ddbebd6b..867746acc8 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -299,11 +299,11 @@ func (c *ecrecover) Run(input []byte) ([]byte, error) { } // We must make sure not to modify the 'input', so placing the 'v' along with // the signature needs to be done on a new allocation - sig := make([]byte, 65) - copy(sig, input[64:128]) + var sig [65]byte + copy(sig[:], input[64:128]) sig[64] = v // v needs to be at the end for libsecp256k1 - pubKey, err := crypto.Ecrecover(input[:32], sig) + pubKey, err := crypto.Ecrecover(input[:32], sig[:]) // make sure the public key is a valid one if err != nil { return nil, nil