mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-22 08:08:10 +00:00
Fixed bug in --stdout when multiple computing devices are active
This commit is contained in:
parent
6716447dfc
commit
a66c93ae1e
@ -82,6 +82,7 @@
|
|||||||
- Fixed bug in grep out-of-memory workaround on Unit Test
|
- Fixed bug in grep out-of-memory workaround on Unit Test
|
||||||
- Fixed bug in input_tokenizer when TOKEN_ATTR_FIXED_LENGTH is used and refactor modules
|
- Fixed bug in input_tokenizer when TOKEN_ATTR_FIXED_LENGTH is used and refactor modules
|
||||||
- Fixed bug in --stdout that caused certain rules to malfunction
|
- Fixed bug in --stdout that caused certain rules to malfunction
|
||||||
|
- Fixed bug in --stdout when multiple computing devices are active
|
||||||
- Fixed build failed for 10700 optimized with Apple Metal
|
- Fixed build failed for 10700 optimized with Apple Metal
|
||||||
- Fixed build failed for 13772 and 13773 with Apple Metal
|
- Fixed build failed for 13772 and 13773 with Apple Metal
|
||||||
- Fixed build failed for 18400 with Apple Metal
|
- Fixed build failed for 18400 with Apple Metal
|
||||||
|
@ -2122,6 +2122,8 @@ typedef struct outfile_ctx
|
|||||||
|
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
||||||
|
hc_thread_mutex_t mux_outfile;
|
||||||
|
|
||||||
} outfile_ctx_t;
|
} outfile_ctx_t;
|
||||||
|
|
||||||
typedef struct pot
|
typedef struct pot
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "backend.h"
|
#include "backend.h"
|
||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
#include "locking.h"
|
#include "locking.h"
|
||||||
|
#include "thread.h"
|
||||||
#include "outfile.h"
|
#include "outfile.h"
|
||||||
|
|
||||||
u32 outfile_format_parse (const char *format_string)
|
u32 outfile_format_parse (const char *format_string)
|
||||||
@ -506,6 +507,8 @@ int outfile_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
outfile_ctx->outfile_json = user_options->outfile_json;
|
outfile_ctx->outfile_json = user_options->outfile_json;
|
||||||
outfile_ctx->is_fifo = hc_path_is_fifo (outfile_ctx->filename);
|
outfile_ctx->is_fifo = hc_path_is_fifo (outfile_ctx->filename);
|
||||||
|
|
||||||
|
hc_thread_mutex_init (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,6 +516,8 @@ void outfile_destroy (hashcat_ctx_t *hashcat_ctx)
|
|||||||
{
|
{
|
||||||
outfile_ctx_t *outfile_ctx = hashcat_ctx->outfile_ctx;
|
outfile_ctx_t *outfile_ctx = hashcat_ctx->outfile_ctx;
|
||||||
|
|
||||||
|
hc_thread_mutex_delete (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
if (outfile_ctx->is_fifo == true && outfile_ctx->fp.pfp != NULL)
|
if (outfile_ctx->is_fifo == true && outfile_ctx->fp.pfp != NULL)
|
||||||
{
|
{
|
||||||
hc_unlockfile (&outfile_ctx->fp);
|
hc_unlockfile (&outfile_ctx->fp);
|
||||||
|
11
src/stdout.c
11
src/stdout.c
@ -12,6 +12,7 @@
|
|||||||
#include "mpsp.h"
|
#include "mpsp.h"
|
||||||
#include "backend.h"
|
#include "backend.h"
|
||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
|
#include "thread.h"
|
||||||
#include "stdout.h"
|
#include "stdout.h"
|
||||||
|
|
||||||
static void out_flush (out_t *out)
|
static void out_flush (out_t *out)
|
||||||
@ -59,6 +60,10 @@ int process_stdout (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
|||||||
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
|
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
|
||||||
user_options_t *user_options = hashcat_ctx->user_options;
|
user_options_t *user_options = hashcat_ctx->user_options;
|
||||||
|
|
||||||
|
// prevent wrong candidates in output when backend_ctx->backend_devices_active > 1
|
||||||
|
|
||||||
|
hc_thread_mutex_lock (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
char *filename = outfile_ctx->filename;
|
char *filename = outfile_ctx->filename;
|
||||||
|
|
||||||
out_t out;
|
out_t out;
|
||||||
@ -69,6 +74,8 @@ int process_stdout (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
|||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "%s: %s", filename, strerror (errno));
|
event_log_error (hashcat_ctx, "%s: %s", filename, strerror (errno));
|
||||||
|
|
||||||
|
hc_thread_mutex_unlock (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +85,8 @@ int process_stdout (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
|||||||
|
|
||||||
event_log_error (hashcat_ctx, "%s: %s", filename, strerror (errno));
|
event_log_error (hashcat_ctx, "%s: %s", filename, strerror (errno));
|
||||||
|
|
||||||
|
hc_thread_mutex_unlock (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -341,5 +350,7 @@ int process_stdout (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
|||||||
hc_fclose (&out.fp);
|
hc_fclose (&out.fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hc_thread_mutex_unlock (outfile_ctx->mux_outfile);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user