INNER CODE UNIT · C
c
jedisct1/libsodium-php · libsodium.c:3916
c = tail[-i];
is_barrier =
(( (acc - 1U) & (pad_len - 1U) & ((c ^ 0x80) - 1U) ) >> 8) & 1U;
acc |= c;
pad_len |= i & (1U + ~is_barrier);
valid |= (unsigned char) is_barrier;
}
unpadded_len = padded_len - 1U - pad_len;
ret = (int) (valid - 1U);
}
#endif
if (ret != 0 || unpadded_len > LONG_MAX) {
zend_throw_exception(sodium_exception_ce, "invalid padding", 0);
return;
}
unpadded = zend_string_init(padded, padded_len, 0);
PHP_SODIUM_ZSTR_TRUNCATE(unpadded, unpadded_len);