diff --git a/src/libsodium/crypto_pwhash/argon2/argon2-core.h b/src/libsodium/crypto_pwhash/argon2/argon2-core.h index 22ec39d1..a4b3eafb 100644 --- a/src/libsodium/crypto_pwhash/argon2/argon2-core.h +++ b/src/libsodium/crypto_pwhash/argon2/argon2-core.h @@ -152,8 +152,8 @@ static uint32_t index_alpha(const argon2_instance_t *instance, * Other lanes : (SYNC_POINTS - 1) last segments */ uint32_t reference_area_size; - uint64_t relative_position; - uint32_t start_position, absolute_position; + uint64_t relative_position, absolute_position; + uint32_t start_position; if (position->pass == 0) { /* First pass */ @@ -203,9 +203,9 @@ static uint32_t index_alpha(const argon2_instance_t *instance, } /* 1.2.6. Computing absolute position */ - absolute_position = (start_position + relative_position) % - instance->lane_length; /* absolute position */ - return absolute_position; + absolute_position = start_position + relative_position - instance->lane_length; + absolute_position += instance->lane_length & (absolute_position >> 32); + return (uint32_t) absolute_position; } /*