From 17bd8b2815df9dec8c66a27b3c440c02ca44ebb5 Mon Sep 17 00:00:00 2001 From: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:50:53 +0800 Subject: [PATCH] feat: allow at most 4 inputs for `Bn256Pairing` precompile (#581) * feat: allow at most 4 inputs for `Bn256Pairing` precompile * mv core/vm/testdata/precompiles/bn256Pairing.json core/vm/testdata/precompiles/fail-bn256Pairing.json --- core/vm/contracts.go | 4 ++++ .../precompiles/{bn256Pairing.json => fail-bn256Pairing.json} | 0 2 files changed, 4 insertions(+) rename core/vm/testdata/precompiles/{bn256Pairing.json => fail-bn256Pairing.json} (100%) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 2a4b097af4..83e1f68552 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -585,6 +585,10 @@ var ( // runBn256Pairing implements the Bn256Pairing precompile, referenced by both // Byzantium and Istanbul operations. func runBn256Pairing(input []byte) ([]byte, error) { + // Allow at most 4 inputs + if len(input) > 4*192 { + return nil, errBadPairingInput + } // Handle some corner cases cheaply if len(input)%192 > 0 { return nil, errBadPairingInput diff --git a/core/vm/testdata/precompiles/bn256Pairing.json b/core/vm/testdata/precompiles/fail-bn256Pairing.json similarity index 100% rename from core/vm/testdata/precompiles/bn256Pairing.json rename to core/vm/testdata/precompiles/fail-bn256Pairing.json