aboutsummaryrefslogtreecommitdiffstats
path: root/libar2_hash_buf_size.c
diff options
context:
space:
mode:
Diffstat (limited to 'libar2_hash_buf_size.c')
-rw-r--r--libar2_hash_buf_size.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libar2_hash_buf_size.c b/libar2_hash_buf_size.c
index 109969f..3010a8a 100644
--- a/libar2_hash_buf_size.c
+++ b/libar2_hash_buf_size.c
@@ -3,13 +3,14 @@
size_t
-libar2_hash_buf_size(struct libar2_argon2_parameters *params)
+libar2_hash_buf_size(const struct libar2_argon2_parameters *params)
{
if (params->hashlen <= 64)
return params->hashlen;
- if (params->hashlen > SIZE_MAX / 128 * 64 - 31) {
+ if (params->hashlen > SIZE_MAX - 31 ||
+ ((params->hashlen + 31) | 31) == SIZE_MAX) {
errno = EOVERFLOW;
return 0;
}
- return (params->hashlen + 31) / 64 * 128;
+ return ((params->hashlen + 31) | 31) + 1;
}