core/vm: avoid escape to heap #33537 (#1944)

This commit is contained in:
Daniel Liu 2026-01-19 13:55:04 +08:00 committed by GitHub
parent 3e1f75eafb
commit 6aaad7b72f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -228,11 +228,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, crypto.SignatureLength)
copy(sig, input[64:128])
var sig [crypto.SignatureLength]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