From cf0d40371602008c817bd8aed03e9def77e68c52 Mon Sep 17 00:00:00 2001 From: York Jasper Niebuhr Date: Wed, 8 Apr 2026 22:08:44 +0200 Subject: [PATCH] Randomizer fix --- selfpatch/src/spslr_randomizer.c | 2 ++ selfpatch/test/randomizer_test.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/selfpatch/src/spslr_randomizer.c b/selfpatch/src/spslr_randomizer.c index fbf8452..dc30981 100644 --- a/selfpatch/src/spslr_randomizer.c +++ b/selfpatch/src/spslr_randomizer.c @@ -335,6 +335,8 @@ static void __init do_swap(spslr_u32 target, spslr_u32 origin_idx, *get_rfield(target, origin_idx) = tmp; get_rfield(target, origin_idx)->offset = origin_region_ptr; origin_region_ptr += get_ofield(target, get_rfield(target, origin_idx)->oidx)->size; + + it--; // Must still look at the element now at it } else { for (spslr_u32 pull_it = it; pull_it > origin_idx + (spslr_u32)pulled; pull_it--) *get_rfield(target, pull_it) = *get_rfield(target, pull_it - 1); diff --git a/selfpatch/test/randomizer_test.c b/selfpatch/test/randomizer_test.c index 278c81f..640e072 100644 --- a/selfpatch/test/randomizer_test.c +++ b/selfpatch/test/randomizer_test.c @@ -284,7 +284,7 @@ static int check_target(spslr_u32 tidx) { int main(void) { srand((unsigned)time(NULL)); - spslr_u32 rounds = 1000; + spslr_u32 rounds = 100; for (spslr_u32 iter = 0; iter < rounds; iter++) { if (spslr_randomizer_init() < 0) {