aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Security
diff options
context:
space:
mode:
authorJosh <josh.t.richards@gmail.com>2024-10-31 16:59:27 -0400
committerGitHub <noreply@github.com>2024-10-31 16:59:27 -0400
commit4873dcbf1ede48d3a79be9abd997fb0b85d493fb (patch)
tree5af4c4d7231395369bc374af94d5e92d6bda67ed /lib/private/Security
parent8a13f284765bd4606984e7d925c32ae6e82b8a27 (diff)
downloadnextcloud-server-4873dcbf1ede48d3a79be9abd997fb0b85d493fb.tar.gz
nextcloud-server-4873dcbf1ede48d3a79be9abd997fb0b85d493fb.zip
fix(security): Handle IPv6 zone IDs used in link-local addresses
Signed-off-by: Josh <josh.t.richards@gmail.com>
Diffstat (limited to 'lib/private/Security')
-rw-r--r--lib/private/Security/Ip/Address.php5
1 files changed, 3 insertions, 2 deletions
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 {