From 296afbc315bf4bf7c95b4a1928112888c01a765a Mon Sep 17 00:00:00 2001 From: Kangzhi Shi Date: Sun, 28 Nov 2021 11:15:49 +0200 Subject: [PATCH] fix #3468 SaturatedSliceIter overflow --- vm/src/builtins/slice.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vm/src/builtins/slice.rs b/vm/src/builtins/slice.rs index 68e5d6886..add827d7d 100644 --- a/vm/src/builtins/slice.rs +++ b/vm/src/builtins/slice.rs @@ -368,13 +368,15 @@ impl SaturatedSliceIter { impl Iterator for SaturatedSliceIter { type Item = usize; + fn next(&mut self) -> Option { if self.len == 0 { return None; } self.len -= 1; let ret = self.index as usize; - self.index += self.step; + // SAFETY: if index is overflowed, len should be zero + self.index = self.index.wrapping_add(self.step); Some(ret) } }