in FixAntenna/NetCore/Message/FixTypes.cs [460:534]
public static bool isInvalidTimeOnly(byte[] buffer, int offset, int count)
{
try
{
if (count != 8 && count != 12 && count != 15 && count != 18)
{
return true;
}
if (buffer[offset + 2] != (byte)':' || buffer[offset + 5] != (byte)':')
{
return true;
}
var hour = ParseNumberPart(buffer, offset, offset + 2);
if (hour < 0 || hour > 23)
{
return true;
}
var minute = ParseNumberPart(buffer, offset + 3, offset + 5);
if (minute < 0 || minute > 59)
{
return true;
}
var second = ParseNumberPart(buffer, offset + 6, offset + 8);
if (second < 0 || second > 60)
{
return true;
}
if (count >= 12)
{
if (buffer[offset + 8] != (byte)'.')
{
return true;
}
switch (count)
{
case 12:
var millis = ParseNumberPart(buffer, offset + 9, offset + 12);
if (millis < 0 || millis > 999)
{
return true;
}
break;
case 15:
var micros = ParseNumberPart(buffer, offset + 9, offset + 15);
if (micros < 0 || micros > 999999)
{
return true;
}
break;
case 18:
var nanos = ParseNumberPart(buffer, offset + 9, offset + 18);
if (nanos < 0 || nanos > 999999999)
{
return true;
}
break;
}
}
}
catch (Exception)
{
return true;
}
return false;
}