From: jsteube Date: Sun, 26 Jun 2016 13:55:23 +0000 (+0200) Subject: Fix race condition in thread_keypress X-Git-Tag: v3.00~15 X-Git-Url: https://www.flypig.org.uk/git/?p=hashcat.git;a=commitdiff_plain;h=5c338de519115f64477d2918511fa1ee7921763f Fix race condition in thread_keypress --- diff --git a/src/hashcat.c b/src/hashcat.c index 4baaa90..e57f4ba 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -18201,11 +18201,6 @@ int main (int argc, char **argv) local_free (c_threads); - if ((data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT) && (data.devices_status != STATUS_BYPASS)) - { - data.devices_status = STATUS_EXHAUSTED; - } - logfile_sub_var_uint ("status-after-work", data.devices_status); data.restore = 0; @@ -18265,11 +18260,11 @@ int main (int argc, char **argv) global_free (subid); - // from this point we handle bypass as exhausted + // from this point we handle bypass as running if (data.devices_status == STATUS_BYPASS) { - data.devices_status = STATUS_EXHAUSTED; + data.devices_status = STATUS_RUNNING; } // finalize task @@ -18337,6 +18332,11 @@ int main (int argc, char **argv) // wait for non-interactive threads + if ((data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT)) + { + data.devices_status = STATUS_EXHAUSTED; + } + for (uint thread_idx = 0; thread_idx < ni_threads_cnt; thread_idx++) { hc_thread_wait (1, &ni_threads[thread_idx]);