summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Denis <github@pureftpd.org>2018-10-14 10:21:29 +0200
committerFrank Denis <github@pureftpd.org>2018-10-14 10:21:29 +0200
commitd05745816634d82a14bb8abb9c322c8b63be098f (patch)
treeb0a81cfc10349efc1b71ab064154e49dbb780af5
parentc25b1a7e8cc1757cc633a74dac31ac4f951757d8 (diff)
downloadphp-git-d05745816634d82a14bb8abb9c322c8b63be098f.tar.gz
ext/sodium: Avoid shifts wider than 32 bits on size_t values
Backport from PECL libsodium-php 2.0.10
-rw-r--r--ext/sodium/libsodium.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c
index e168aad105..08ac0f9ab2 100644
--- a/ext/sodium/libsodium.c
+++ b/ext/sodium/libsodium.c
@@ -3405,7 +3405,8 @@ PHP_FUNCTION(sodium_pad)
for (j = 0U; j <= xpadded_len; j++) {
ZSTR_VAL(padded)[j] = unpadded[i];
k -= st;
- st = (~(((((k >> 48) | (k >> 32) | (k >> 16) | k) & 0xffff) - 1U) >> 16)) & 1U;
+ st = (size_t) (~(((( (((uint64_t) k) >> 48) | (((uint64_t) k) >> 32) |
+ (k >> 16) | k) & 0xffff) - 1U) >> 16)) & 1U;
i += st;
}
#if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)