Skip to content

Commit b5a94e4

Browse files
fix: guard Eq for [T] to avoid OOB on length mismatch (#9453)
Co-authored-by: Tom French <[email protected]>
1 parent 1748cbe commit b5a94e4

File tree

166 files changed

+314
-305
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+314
-305
lines changed

noir_stdlib/src/cmp.nr

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,10 @@ where
117117
{
118118
fn eq(self, other: [T]) -> bool {
119119
let mut result = self.len() == other.len();
120-
for i in 0..self.len() {
121-
result &= self[i].eq(other[i]);
120+
if result {
121+
for i in 0..self.len() {
122+
result &= self[i].eq(other[i]);
123+
}
122124
}
123125
result
124126
}
@@ -542,7 +544,7 @@ where
542544
}
543545

544546
mod cmp_tests {
545-
use crate::cmp::{max, min};
547+
use super::{Eq, max, min};
546548

547549
#[test]
548550
fn sanity_check_min() {
@@ -559,4 +561,11 @@ mod cmp_tests {
559561
assert_eq(max(1_u64, 1), 1);
560562
assert_eq(max(255_u8, 0), 255);
561563
}
564+
565+
#[test]
566+
fn correctly_handles_unequal_length_slices() {
567+
let slice_1 = &[0, 1, 2, 3];
568+
let slice_2 = &[0, 1, 2];
569+
assert(!slice_1.eq(slice_2));
570+
}
562571
}

tooling/nargo_cli/tests/snapshots/compile_success_empty/arithmetic_generics/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/assign_mutation_in_lvalue/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/numeric_generics/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/numeric_generics_explicit/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/regression_bignum/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/serialize_1/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/compile_success_empty/serialize_4/execute__tests__expanded.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/execution_success/a_6/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/nargo_cli/tests/snapshots/execution_success/a_6/execute__tests__force_brillig_true_inliner_0.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)