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) {