From cab6c18ed6433e741a824dfa9cbe9d2995158feb Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Tue, 8 Nov 2022 11:55:02 -0800 Subject: [PATCH] Check that `le_sum` won't overflow --- plonky2/src/gadgets/split_base.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plonky2/src/gadgets/split_base.rs b/plonky2/src/gadgets/split_base.rs index c539d784..9c85863f 100644 --- a/plonky2/src/gadgets/split_base.rs +++ b/plonky2/src/gadgets/split_base.rs @@ -3,6 +3,7 @@ use std::borrow::Borrow; use itertools::Itertools; use plonky2_field::extension::Extendable; use plonky2_field::types::Field; +use plonky2_util::log_floor; use crate::gates::base_sum::BaseSumGate; use crate::hash::hash_types::RichField; @@ -33,6 +34,11 @@ impl, const D: usize> CircuitBuilder { pub(crate) fn le_sum(&mut self, bits: impl Iterator>) -> Target { let bits = bits.map(|b| *b.borrow()).collect_vec(); let num_bits = bits.len(); + assert!( + num_bits <= log_floor(F::ORDER, 2), + "{} bits may overflow the field", + num_bits + ); if num_bits == 0 { return self.zero(); }