Fix Kea Dhcp parser

This commit is contained in:
Jöran Malek 2023-12-16 00:22:22 +01:00
parent 1f51a65f35
commit 3ce0297682

View file

@ -28,18 +28,26 @@ public static class KeaDhcpLease
{
writer.Write(reader.Read(esc_pos));
reader.Advance(EscapeTag.Length);
if (EscapeTag.Length <= reader.RemainingCount - 2)
bool converted = false;
char escapedChar = default;
if (reader.RemainingCount >= 2)
{
var digits = reader.Read(2);
if (byte.TryParse(digits, NumberStyles.AllowHexSpecifier, null, out var escaped_char))
if (byte.TryParse(reader.RemainingSpan[..2], NumberStyles.AllowHexSpecifier, null, out var b))
{
writer.Write((char)escaped_char);
converted = true;
escapedChar = (char)b;
reader.Advance(2);
}
}
if (converted)
{
writer.Write(escapedChar);
}
else
{
writer.Write(EscapeTag);
writer.Write(digits);
}
}
esc_pos = reader.RemainingSpan.IndexOf(EscapeTag);