summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Denis <github@pureftpd.org>2018-10-14 10:37:37 +0200
committerFrank Denis <github@pureftpd.org>2018-10-14 10:37:37 +0200
commitbf48d0c475c0c1312fbf763d221d94e87cf480d0 (patch)
tree57f9f03cac6f731ed2eec4b88ff8ccefe1aa3a30
parent15ba7df2245ac177a965346e7ec96a4ab3300839 (diff)
downloadphp-git-bf48d0c475c0c1312fbf763d221d94e87cf480d0.tar.gz
ext/sodium: Fix sodium_pad() with blocksize >= 256
Backport from PECL libsodium-php 2.0.12
-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 a5f892fb7a..5462700f6c 100644
--- a/ext/sodium/libsodium.c
+++ b/ext/sodium/libsodium.c
@@ -3424,7 +3424,8 @@ PHP_FUNCTION(sodium_pad)
tail = &ZSTR_VAL(padded)[xpadded_len];
mask = 0U;
for (i = 0; i < blocksize; i++) {
- barrier_mask = (unsigned char) (((i ^ xpadlen) - 1U) >> 8);
+ barrier_mask = (unsigned char)
+ (((i ^ xpadlen) - 1U) >> ((sizeof(size_t) - 1U) * CHAR_BIT));
tail[-i] = (tail[-i] & mask) | (0x80 & barrier_mask);
mask |= barrier_mask;
}