Skip to content

Commit 09e0e72

Browse files
authored
Fix edge-case Uri IPv4 parsing regression (#121947)
1 parent bf17d45 commit 09e0e72

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/libraries/System.Private.Uri/src/System/IPv4AddressHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal static partial class IPv4AddressHelper
1313
// Parse and canonicalize
1414
internal static string ParseCanonicalName(string str, int start, int end, ref bool isLoopback)
1515
{
16-
long result = ParseNonCanonical(str.AsSpan(start), out _, true);
16+
long result = ParseNonCanonical(str.AsSpan(start, end - start), out _, true);
1717

1818
Debug.Assert(result != Invalid, $"Failed to parse after already validated: {str}");
1919

src/libraries/System.Private.Uri/tests/FunctionalTests/UncTest.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,15 @@ public static void UncWithBidiControlCharacters_CanBeParsed(string uriString)
149149
Assert.True(uri.IsUnc);
150150
Assert.Empty(uri.Host);
151151
}
152+
153+
[Fact]
154+
public static void UncWithTrailingSpaces_CanBeParsed()
155+
{
156+
Uri uri = new Uri("//9\n");
157+
Assert.True(uri.IsUnc);
158+
Assert.Equal(UriHostNameType.IPv4, uri.HostNameType);
159+
Assert.Equal("0.0.0.9", uri.Host);
160+
Assert.Equal(@"\\0.0.0.9", uri.LocalPath);
161+
}
152162
}
153163
}

0 commit comments

Comments
 (0)