50 lines
1.9 KiB
Diff
50 lines
1.9 KiB
Diff
|
|
From 238b18b8ac339c09e11a913b913dffe03902edb5 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Milan Broz <gmazyland@gmail.com>
|
||
|
|
Date: Wed, 13 Mar 2019 08:24:15 +0100
|
||
|
|
Subject: [PATCH 293/324] Upstream fixes to bundled Argon2 code.
|
||
|
|
|
||
|
|
Wait for already running threads if a thread creation failed.
|
||
|
|
Use explicit_bzero() on recent glibc versions.
|
||
|
|
(Without fixed logic, we have already macro definition through automake.)
|
||
|
|
|
||
|
|
Fixes #444.
|
||
|
|
---
|
||
|
|
lib/crypto_backend/argon2/core.c | 7 +++++--
|
||
|
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/lib/crypto_backend/argon2/core.c b/lib/crypto_backend/argon2/core.c
|
||
|
|
index 8e0a2a5..f5b0067 100644
|
||
|
|
--- a/lib/crypto_backend/argon2/core.c
|
||
|
|
+++ b/lib/crypto_backend/argon2/core.c
|
||
|
|
@@ -125,7 +125,7 @@ void NOT_OPTIMIZED secure_wipe_memory(void *v, size_t n) {
|
||
|
|
SecureZeroMemory(v, n);
|
||
|
|
#elif defined memset_s
|
||
|
|
memset_s(v, n, 0, n);
|
||
|
|
-#elif defined(__OpenBSD__)
|
||
|
|
+#elif defined(HAVE_EXPLICIT_BZERO)
|
||
|
|
explicit_bzero(v, n);
|
||
|
|
#else
|
||
|
|
static void *(*const volatile memset_sec)(void *, int, size_t) = &memset;
|
||
|
|
@@ -299,7 +299,7 @@ static int fill_memory_blocks_mt(argon2_instance_t *instance) {
|
||
|
|
|
||
|
|
for (r = 0; r < instance->passes; ++r) {
|
||
|
|
for (s = 0; s < ARGON2_SYNC_POINTS; ++s) {
|
||
|
|
- uint32_t l;
|
||
|
|
+ uint32_t l, ll;
|
||
|
|
|
||
|
|
/* 2. Calling threads */
|
||
|
|
for (l = 0; l < instance->lanes; ++l) {
|
||
|
|
@@ -324,6 +324,9 @@ static int fill_memory_blocks_mt(argon2_instance_t *instance) {
|
||
|
|
sizeof(argon2_position_t));
|
||
|
|
if (argon2_thread_create(&thread[l], &fill_segment_thr,
|
||
|
|
(void *)&thr_data[l])) {
|
||
|
|
+ /* Wait for already running threads */
|
||
|
|
+ for (ll = 0; ll < l; ++ll)
|
||
|
|
+ argon2_thread_join(thread[ll]);
|
||
|
|
rc = ARGON2_THREAD_FAIL;
|
||
|
|
goto fail;
|
||
|
|
}
|
||
|
|
--
|
||
|
|
2.19.1
|
||
|
|
|