1
mirror of https://github.com/hashcat/hashcat synced 2024-11-24 14:27:14 +01:00

Merge pull request #2932 from matrix/fix_segfault_cmdline_with_user

Fixed segfault in potfile_handle_show()
This commit is contained in:
Jens Steube 2021-08-13 09:04:37 +02:00 committed by GitHub
commit beaa4e0da1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 0 deletions

View File

@ -22,6 +22,7 @@
- Fixed out-of-boundary read in input_tokenizer() if the signature in the hash is longer than the length of the plugin's signature constant
- Fixed out-of-boundary read in the Stuffit5 module in hash_decode()
- Fixed random rule generator option --generate-rules-func-min by fixing switch() case to not select a not existing option group type
- Fixed segfault when a combination of the flags --user and --show is given and a hash was specified directly on the command line
- Fixed syntax check of HAS_VPERM macro in several kernel includes causing invalid error message for AMD GPUs on Windows
- Fixed uninitialized tmps variable in autotune for slow hashes by calling _init and _prepare kernel before calling _loop kernel

View File

@ -1119,6 +1119,49 @@ int hashes_init_stage1 (hashcat_ctx_t *hashcat_ctx)
int parser_status = PARSER_OK;
if (user_options->username == true)
{
char *user_buf = NULL;
int user_len = 0;
hlfmt_user (hashcat_ctx, hashlist_format, input_buf, input_len, &user_buf, &user_len);
// special case:
// both hash_t need to have the username info if the pwdump format is used (i.e. we have 2 hashes for 3000, both with same user)
u32 hashes_per_user = 1;
if (hashconfig->opts_type & OPTS_TYPE_HASH_SPLIT)
{
// the following conditions should be true if (hashlist_format == HLFMT_PWDUMP)
if (hash_len == 32)
{
hashes_per_user = 2;
}
}
for (u32 i = 0; i < hashes_per_user; i++)
{
user_t **user = &hashes_buf[hashes_cnt + i].hash_info->user;
*user = (user_t *) hcmalloc (sizeof (user_t));
user_t *user_ptr = *user;
if (user_buf != NULL)
{
user_ptr->user_name = hcstrdup (user_buf);
}
else
{
user_ptr->user_name = hcstrdup ("");
}
user_ptr->user_len = (u32) user_len;
}
}
if (hashconfig->opts_type & OPTS_TYPE_HASH_SPLIT)
{
if (hash_len == 32)