diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-includes/sodium_compat/src/File.php --- a/wp/wp-includes/sodium_compat/src/File.php Tue Oct 22 16:11:46 2019 +0200 +++ b/wp/wp-includes/sodium_compat/src/File.php Tue Dec 15 13:49:49 2020 +0100 @@ -679,7 +679,11 @@ } /* Security checks */ - if (ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) { + if ( + (ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240) + && + ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32)) + ) { throw new SodiumException('S < L - Invalid signature'); } if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) { @@ -841,7 +845,7 @@ if (!is_string($plaintext)) { throw new SodiumException('Could not read input file'); } - $first32 = ftell($ifp); + $first32 = self::ftell($ifp); /** @var string $subkey */ $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key); @@ -875,7 +879,7 @@ ); // Pre-write 16 blank bytes for the Poly1305 tag - $start = ftell($ofp); + $start = self::ftell($ofp); fwrite($ofp, str_repeat("\x00", 16)); /** @var string $c */ @@ -926,7 +930,7 @@ $block0 = null; $subkey = null; } - $end = ftell($ofp); + $end = self::ftell($ofp); /* * Write the Poly1305 authentication tag that provides integrity @@ -1043,7 +1047,7 @@ $mlen = 0 ) { /** @var int $pos */ - $pos = ftell($ifp); + $pos = self::ftell($ifp); /** @var int $iter */ $iter = 1; @@ -1106,7 +1110,7 @@ } /** @var int $originalPosition */ - $originalPosition = ftell($fp); + $originalPosition = self::ftell($fp); // Move file pointer to beginning of file fseek($fp, 0, SEEK_SET); @@ -1314,7 +1318,7 @@ if (!is_string($plaintext)) { throw new SodiumException('Could not read input file'); } - $first32 = ftell($ifp); + $first32 = self::ftell($ifp); /** @var string $subkey */ $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key); @@ -1348,7 +1352,7 @@ ); // Pre-write 16 blank bytes for the Poly1305 tag - $start = ftell($ofp); + $start = self::ftell($ofp); fwrite($ofp, str_repeat("\x00", 16)); /** @var string $c */ @@ -1399,7 +1403,7 @@ $block0 = null; $subkey = null; } - $end = ftell($ofp); + $end = self::ftell($ofp); /* * Write the Poly1305 authentication tag that provides integrity @@ -1515,7 +1519,7 @@ $mlen = 0 ) { /** @var int $pos */ - $pos = ftell($ifp); + $pos = self::ftell($ifp); /** @var int $iter */ $iter = 1; @@ -1540,4 +1544,18 @@ fseek($ifp, $pos, SEEK_SET); return $res; } + + /** + * @param resource $resource + * @return int + * @throws SodiumException + */ + private static function ftell($resource) + { + $return = ftell($resource); + if (!is_int($return)) { + throw new SodiumException('ftell() returned false'); + } + return (int) $return; + } }