--- a/wp/wp-includes/sodium_compat/src/Core/Util.php Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/sodium_compat/src/Core/Util.php Fri Sep 05 18:40:08 2025 +0200
@@ -309,27 +309,26 @@
* @internal You should not use this directly from another application
*
* @param string $hexString
+ * @param string $ignore
* @param bool $strictPadding
* @return string (raw binary)
* @throws RangeException
* @throws TypeError
*/
- public static function hex2bin($hexString, $strictPadding = false)
+ public static function hex2bin($hexString, $ignore = '', $strictPadding = false)
{
/* Type checks: */
if (!is_string($hexString)) {
throw new TypeError('Argument 1 must be a string, ' . gettype($hexString) . ' given.');
}
+ if (!is_string($ignore)) {
+ throw new TypeError('Argument 2 must be a string, ' . gettype($hexString) . ' given.');
+ }
- /** @var int $hex_pos */
$hex_pos = 0;
- /** @var string $bin */
$bin = '';
- /** @var int $c_acc */
$c_acc = 0;
- /** @var int $hex_len */
$hex_len = self::strlen($hexString);
- /** @var int $state */
$state = 0;
if (($hex_len & 1) !== 0) {
if ($strictPadding) {
@@ -347,20 +346,18 @@
++$hex_pos;
/** @var int $c */
$c = $chunk[$hex_pos];
- /** @var int $c_num */
$c_num = $c ^ 48;
- /** @var int $c_num0 */
$c_num0 = ($c_num - 10) >> 8;
- /** @var int $c_alpha */
$c_alpha = ($c & ~32) - 55;
- /** @var int $c_alpha0 */
$c_alpha0 = (($c_alpha - 10) ^ ($c_alpha - 16)) >> 8;
if (($c_num0 | $c_alpha0) === 0) {
+ if ($ignore && $state === 0 && strpos($ignore, self::intToChr($c)) !== false) {
+ continue;
+ }
throw new RangeException(
'hex2bin() only expects hexadecimal characters'
);
}
- /** @var int $c_val */
$c_val = ($c_num0 & $c_num) | ($c_alpha & $c_alpha0);
if ($state === 0) {
$c_acc = $c_val * 16;
@@ -382,7 +379,6 @@
*/
public static function intArrayToString(array $ints)
{
- /** @var array<int, int> $args */
$args = $ints;
foreach ($args as $i => $v) {
$args[$i] = (int) ($v & 0xff);