diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index 12582da222ad..a1818ce38c9a 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -242,9 +242,12 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) if (sequenceLength != 0) { + if (sequenceLength > 4) + { + return false; + } + ++sequenceCount; - lastSequence = i - sequenceLength; - sequenceLength = 0; } // these sequence counts are -1 because it is implied in end-of-sequence @@ -252,7 +255,6 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) const int ExpectedSequenceCount = 8; return !expectingNumber && - (sequenceLength <= 4) && (haveCompressor ? (sequenceCount < ExpectedSequenceCount) : (sequenceCount == ExpectedSequenceCount)) && !needsClosingBracket; }