From 7e08a4ab157b2be82c286c65ae18fa9199aeba80 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 22 Nov 2021 14:01:41 +0100 Subject: [PATCH] Fix getting subnet of ipv4 mapped ipv6 addresses Signed-off-by: Vincent Petry --- lib/private/Security/Normalizer/IpAddress.php | 2 ++ tests/lib/Security/Normalizer/IpAddressTest.php | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/lib/private/Security/Normalizer/IpAddress.php b/lib/private/Security/Normalizer/IpAddress.php index 705235413e4..656487d8ce4 100644 --- a/lib/private/Security/Normalizer/IpAddress.php +++ b/lib/private/Security/Normalizer/IpAddress.php @@ -103,6 +103,8 @@ class IpAddress { $this->ip, 32 ); + } elseif (substr(strtolower($this->ip), 0, 7) === '::ffff:') { + return '::ffff:' . $this->getIPv4Subnet(substr($this->ip, 7), 32); } return $this->getIPv6Subnet( $this->ip, diff --git a/tests/lib/Security/Normalizer/IpAddressTest.php b/tests/lib/Security/Normalizer/IpAddressTest.php index b202ecd7234..7492e182c32 100644 --- a/tests/lib/Security/Normalizer/IpAddressTest.php +++ b/tests/lib/Security/Normalizer/IpAddressTest.php @@ -38,6 +38,10 @@ class IpAddressTest extends TestCase { '192.168.0.123', '192.168.0.123/32', ], + [ + '::ffff:192.168.0.123', + '::ffff:192.168.0.123/32', + ], [ '2001:0db8:85a3:0000:0000:8a2e:0370:7334', '2001:db8:85a3::/64',