diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/IpAddressMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/IpAddressMatcher.java index a235b59dd99..f8a02176de8 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/IpAddressMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/IpAddressMatcher.java @@ -130,4 +130,11 @@ private InetAddress parseAddress(String address) { } } + @Override + public String toString() { + String hostAddress = this.requiredAddress.getHostAddress(); + return (this.nMaskBits < 0) ? "IpAddress [" + hostAddress + "]" + : "IpAddress [" + hostAddress + "/" + this.nMaskBits + "]"; + } + } diff --git a/web/src/test/java/org/springframework/security/web/util/matcher/IpAddressMatcherTests.java b/web/src/test/java/org/springframework/security/web/util/matcher/IpAddressMatcherTests.java index ce702bfbebb..72246c999fa 100644 --- a/web/src/test/java/org/springframework/security/web/util/matcher/IpAddressMatcherTests.java +++ b/web/src/test/java/org/springframework/security/web/util/matcher/IpAddressMatcherTests.java @@ -153,4 +153,18 @@ public void constructorWhenRequiredAddressIsEmptyThenThrowsIllegalArgumentExcept .withMessage("ipAddress cannot be empty"); } + // gh-16795 + @Test + public void toStringWhenCidrIsProvidedThenReturnsIpAddressWithCidr() { + IpAddressMatcher matcher = new IpAddressMatcher("192.168.1.0/24"); + assertThat(matcher.toString()).hasToString("IpAddress [192.168.1.0/24]"); + } + + // gh-16795 + @Test + public void toStringWhenOnlyIpIsProvidedThenReturnsIpAddressOnly() { + IpAddressMatcher matcher = new IpAddressMatcher("127.0.0.1"); + assertThat(matcher.toString()).hasToString("IpAddress [127.0.0.1]"); + } + }