diff --git a/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/StringParsingHelpers.Statistics.cs b/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/StringParsingHelpers.Statistics.cs index 80badaef43542f..315970f9fa11fd 100644 --- a/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/StringParsingHelpers.Statistics.cs +++ b/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/StringParsingHelpers.Statistics.cs @@ -407,15 +407,25 @@ internal static IPInterfaceStatisticsTable ParseInterfaceStatisticsTableFromFile { sr.ReadLine(); sr.ReadLine(); - int index = 0; + Span pieces = stackalloc Range[18]; // [0]-[16] used, +1 to ensure any additional segment goes into [17] while (!sr.EndOfStream) { string line = sr.ReadLine()!; if (line.Contains(name)) { - Span pieces = stackalloc Range[18]; // [0] skipped, [1]-[16] used, +1 to ensure any additional segment goes into [17] ReadOnlySpan lineSpan = line; - pieces = pieces.Slice(0, lineSpan.SplitAny(pieces, " :", StringSplitOptions.RemoveEmptyEntries)); + int pieceCount = lineSpan.SplitAny(pieces, " :", StringSplitOptions.RemoveEmptyEntries); + + if (pieceCount < 17) + { + continue; + } + + if (!lineSpan[pieces[0]].SequenceEqual(name)) + { + // The adapter name doesn't exactly match. + continue; + } return new IPInterfaceStatisticsTable() { @@ -438,7 +448,6 @@ internal static IPInterfaceStatisticsTable ParseInterfaceStatisticsTableFromFile CompressedPacketsTransmitted = ParseUInt64AndClampToInt64(lineSpan[pieces[16]]), }; } - index += 1; } throw ExceptionHelper.CreateForParseFailure(); diff --git a/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/NetworkFiles/dev b/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/NetworkFiles/dev index d87ec31fead0ba..922eae91096fc4 100644 --- a/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/NetworkFiles/dev +++ b/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/NetworkFiles/dev @@ -1,4 +1,5 @@ Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed +wlan0a: 20000 394 2 4 6 8 10 12 429496730000 208 1 2 3 4 5 6 wlan0: 26622 394 2 4 6 8 10 12 429496730000 208 1 2 3 4 5 6 lo: 18446744073709551615 302 0 0 0 0 0 0 30008 302 0 0 0 0 0 0