From f116c855aa03564aee8b0de8fbbf9603b0e33e1d Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Sun, 16 Jul 2023 15:01:32 -0400 Subject: [PATCH] Fix risk of division by zero --- evm/src/generation/prover_input.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/evm/src/generation/prover_input.rs b/evm/src/generation/prover_input.rs index af3ffe3a..5253a043 100644 --- a/evm/src/generation/prover_input.rs +++ b/evm/src/generation/prover_input.rs @@ -4,6 +4,7 @@ use std::str::FromStr; use anyhow::{bail, Error}; use ethereum_types::{BigEndianHash, H256, U256, U512}; use itertools::Itertools; +use num_bigint::BigUint; use plonky2::field::types::Field; use serde::{Deserialize, Serialize}; @@ -203,7 +204,11 @@ impl GenerationState { let m_biguint = mem_vec_to_biguint(m); let prod = a_biguint * b_biguint; - let quo = &prod / &m_biguint; + let quo = if m_biguint == BigUint::default() { + BigUint::default() + } else { + &prod / &m_biguint + }; let rem = prod - m_biguint * &quo; (biguint_to_mem_vec(rem), biguint_to_mem_vec(quo))