fix(security): Handle IPv6 zone IDs used in link-local addresses

Signed-off-by: Josh <josh.t.richards@gmail.com>
This commit is contained in:
Josh 2024-10-31 16:59:27 -04:00 committed by GitHub
parent 8a13f28476
commit 4873dcbf1e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 cant 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 {