Skip to content

Commit 7d9607a

Browse files
committed
chacha: safer outputting: 0..4 loop
1 parent 7fa7c43 commit 7d9607a

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

rand_chacha/src/guts.rs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -159,22 +159,13 @@ fn refill_wide_impl<Mach: Machine>(
159159
let sc = m.unpack(state.c);
160160
let sd = [m.unpack(state.d), d1, d2, d3];
161161
state.d = d4.into();
162-
out[0..4].copy_from_slice(&(a[0] + k).to_lanes());
163-
out[4..8].copy_from_slice(&(b[0] + sb).to_lanes());
164-
out[8..12].copy_from_slice(&(c[0] + sc).to_lanes());
165-
out[12..16].copy_from_slice(&(d[0] + sd[0]).to_lanes());
166-
out[16..20].copy_from_slice(&(a[1] + k).to_lanes());
167-
out[20..24].copy_from_slice(&(b[1] + sb).to_lanes());
168-
out[24..28].copy_from_slice(&(c[1] + sc).to_lanes());
169-
out[28..32].copy_from_slice(&(d[1] + sd[1]).to_lanes());
170-
out[32..36].copy_from_slice(&(a[2] + k).to_lanes());
171-
out[36..40].copy_from_slice(&(b[2] + sb).to_lanes());
172-
out[40..44].copy_from_slice(&(c[2] + sc).to_lanes());
173-
out[44..48].copy_from_slice(&(d[2] + sd[2]).to_lanes());
174-
out[48..52].copy_from_slice(&(a[3] + k).to_lanes());
175-
out[52..56].copy_from_slice(&(b[3] + sb).to_lanes());
176-
out[56..60].copy_from_slice(&(c[3] + sc).to_lanes());
177-
out[60..64].copy_from_slice(&(d[3] + sd[3]).to_lanes());
162+
for i in 0..4 {
163+
let i4 = i * 4;
164+
out[i4..(i4+4)].copy_from_slice(&(a[i] + k).to_lanes());
165+
out[(i4+4)..(i4+8)].copy_from_slice(&(b[i] + sb).to_lanes());
166+
out[(i4+8)..(i4+12)].copy_from_slice(&(c[i] + sc).to_lanes());
167+
out[(i4+12)..(i4+16)].copy_from_slice(&(d[i] + sd[i]).to_lanes());
168+
}
178169
}
179170

180171
dispatch!(m, Mach, {

0 commit comments

Comments
 (0)