Fix RfcUriParser parsing for single char fragments

Prior to this commit, the `RfcUriParser` would ignore URI fragments if
their length is < 2. This commit fixes the length check to allow for
single char fragments when parsing URIs.

Fixes gh-36029
This commit is contained in:
Brian Clozel
2025-12-17 09:51:53 +01:00
parent 3d8d7ffa1e
commit df5b06dabc
2 changed files with 10 additions and 1 deletions
@@ -556,7 +556,7 @@ abstract class RfcUriParser {
}
public void captureFragmentIfNotEmpty() {
if (this.index > this.componentIndex + 1) {
if (this.index > this.componentIndex) {
this.fragment = captureComponent("fragment");
}
}
@@ -930,4 +930,13 @@ class UriComponentsBuilderTests {
assertThat(uri.toString()).isEqualTo("ws://localhost:7777/test");
}
@ParameterizedTest // gh-36029
@EnumSource
void singleCharFragment(ParserType parserType) {
URI uri = UriComponentsBuilder
.fromUriString("https://localhost/resource#a", parserType)
.build().toUri();
assertThat(uri.toString()).isEqualTo("https://localhost/resource#a");
}
}