From 322eef2942df6d7555090432dd8d651fac7491a3 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Mon, 11 May 2026 15:02:55 +0100 Subject: [PATCH] RfcParser rejects invalid IPv6 host Fix gh-36787 --- .../java/org/springframework/web/util/RfcUriParser.java | 8 ++++++-- .../web/util/UriComponentsBuilderTests.java | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java b/spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java index c87c2a7b123..3198e93590a 100644 --- a/spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java +++ b/spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java @@ -241,12 +241,16 @@ abstract class RfcUriParser { parser.index(++i); parser.captureHost(); if (parser.hasNext()) { - if (parser.charAtIndex() == ':') { + char next = parser.charAtIndex(); + if (next == ':') { parser.advanceTo(PORT, i + 1); } - else { + else if (next == '/') { parser.advanceTo(PATH, i); } + else { + fail(parser, "Bad authority"); + } } break; case ':': diff --git a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java index e8729d97d9b..fc0a40a54c3 100644 --- a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java @@ -267,7 +267,10 @@ class UriComponentsBuilderTests { @EnumSource void fromUriStringInvalidIPv6Host(ParserType parserType) { assertThatIllegalArgumentException().isThrownBy(() -> - UriComponentsBuilder.fromUriString("http://[1abc:2abc:3abc::5ABC:6abc:8080/resource", parserType)); + UriComponentsBuilder.fromUriString("https://[1abc:2abc:3abc::5ABC:6abc:8080/resource", parserType)); + + assertThatIllegalArgumentException().isThrownBy(() -> + UriComponentsBuilder.fromUriString("https://[1abc:2abc:3abc::5ABC:6abc]resource", parserType)); } @ParameterizedTest // gh-36759