diff --git a/src/shared.c b/src/shared.c index 1a86da7a8..e1a0835ed 100644 --- a/src/shared.c +++ b/src/shared.c @@ -8485,15 +8485,16 @@ void ascii_digest (char *out_buf, uint salt_pos, uint digest_pos) pstoken_t *pstokens = (pstoken_t *) data.esalts_buf; pstoken_t *pstoken = &pstokens[salt_pos]; - uint mysalt_len = pstoken->salt_len > 512 ? 512 : pstoken->salt_len; + uint mysalt = pstoken->salt_len > 512 ? 512 : pstoken->salt_len; - u8 pstoken_tmp[mysalt_len + 1]; + char pstoken_tmp[1024 + 1]; + u8 *salt_buf_ptr = (u8 *) pstoken->salt_buf; - memset(pstoken_tmp, 0, mysalt_len + 1); + memset(pstoken_tmp, 0, sizeof (pstoken_tmp)); - for (uint i = 0; i < mysalt_len; i++) + for (uint i = 0; i < mysalt; i++) { - snprintf((char *)(pstoken_tmp + i), (size_t)2, "%02x", pstoken->salt_buf[i]); + snprintf(&pstoken_tmp[i*2], 2, "%02x", salt_buf_ptr[i]); } snprintf (out_buf, len-1, "%08x%08x%08x%08x%08x:%s",