diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-includes/sodium_compat/src/Core/Util.php --- 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 $args */ $args = $ints; foreach ($args as $i => $v) { $args[$i] = (int) ($v & 0xff);