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)); writer.Write(reader.Read(esc_pos));
reader.Advance(EscapeTag.Length); 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(reader.RemainingSpan[..2], NumberStyles.AllowHexSpecifier, null, out var b))
if (byte.TryParse(digits, NumberStyles.AllowHexSpecifier, null, out var escaped_char))
{ {
writer.Write((char)escaped_char); converted = true;
escapedChar = (char)b;
reader.Advance(2);
}
}
if (converted)
{
writer.Write(escapedChar);
} }
else else
{ {
writer.Write(EscapeTag); writer.Write(EscapeTag);
writer.Write(digits);
}
} }
esc_pos = reader.RemainingSpan.IndexOf(EscapeTag); esc_pos = reader.RemainingSpan.IndexOf(EscapeTag);