From 4873dcbf1ede48d3a79be9abd997fb0b85d493fb Mon Sep 17 00:00:00 2001 From: Josh Date: Thu, 31 Oct 2024 16:59:27 -0400 Subject: fix(security): Handle IPv6 zone IDs used in link-local addresses Signed-off-by: Josh --- lib/private/Security/Ip/Address.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/private/Security') diff --git a/lib/private/Security/Ip/Address.php b/lib/private/Security/Ip/Address.php index e0bb906e82d..0e94ec2d9ea 100644 --- a/lib/private/Security/Ip/Address.php +++ b/lib/private/Security/Ip/Address.php @@ -11,6 +11,7 @@ namespace OC\Security\Ip; use InvalidArgumentException; use IPLib\Address\AddressInterface; use IPLib\Factory; +use IPLib\ParseStringFlag; use OCP\Security\Ip\IAddress; use OCP\Security\Ip\IRange; @@ -21,7 +22,7 @@ class Address implements IAddress { private readonly AddressInterface $ip; public function __construct(string $ip) { - $ip = Factory::parseAddressString($ip); + $ip = Factory::parseAddressString($ip, ParseStringFlag::MAY_INCLUDE_ZONEID); if ($ip === null) { throw new InvalidArgumentException('Given IP address can’t be parsed'); } @@ -29,7 +30,7 @@ class Address implements IAddress { } public static function isValid(string $ip): bool { - return Factory::parseAddressString($ip) !== null; + return Factory::parseAddressString($ip, ParseStringFlag::MAY_INCLUDE_ZONEID) !== null; } public function matches(IRange ... $ranges): bool { -- cgit v1.2.3