From 7fff4c929aee4542ead786cc1eb0f1a30e06f3f6 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sat, 28 Jun 2025 07:04:44 +0200 Subject: [PATCH] Fixed a division by zero bug in fast hashes caused by hashes->st_salts_buf->salt_iter not being used. --- src/autotune.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/autotune.c b/src/autotune.c index df6d5529f..87637b29d 100644 --- a/src/autotune.c +++ b/src/autotune.c @@ -336,15 +336,20 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param { u32 start = kernel_loops_max; - start = MIN (start, smallest_repeat_double (hashes->st_salts_buf->salt_iter)); - start = MIN (start, smallest_repeat_double (hashes->st_salts_buf->salt_iter + 1)); + const u32 salt_iter = hashes->st_salts_buf->salt_iter; - if ((hashes->st_salts_buf->salt_iter % 125) == 0) start = MIN (start, 125); - if ((hashes->st_salts_buf->salt_iter + 1 % 125) == 0) start = MIN (start, 125); - - if ((start >= kernel_loops_min) && (start <= kernel_loops_max)) + if (salt_iter) { - kernel_loops_min_start = start; + start = MIN (start, smallest_repeat_double (hashes->st_salts_buf->salt_iter)); + start = MIN (start, smallest_repeat_double (hashes->st_salts_buf->salt_iter + 1)); + + if ((hashes->st_salts_buf->salt_iter % 125) == 0) start = MIN (start, 125); + if ((hashes->st_salts_buf->salt_iter + 1 % 125) == 0) start = MIN (start, 125); + + if ((start >= kernel_loops_min) && (start <= kernel_loops_max)) + { + kernel_loops_min_start = start; + } } } @@ -621,3 +626,4 @@ HC_API_CALL void *thread_autotune (void *p) return NULL; } +