LookupServer: Fix serializing name data in DNS answers

When serializing a RR of type PTR, we should use the DNS name serialization
format, not a raw string.
This commit is contained in:
Sergey Bugaev 2021-02-14 15:17:27 +03:00 committed by Andreas Kling
commit 80f7489df0
Notes: sideshowbarker 2024-07-18 22:17:07 +09:00
3 changed files with 16 additions and 2 deletions

View file

@ -92,8 +92,14 @@ ByteBuffer DNSPacket::to_byte_buffer() const
stream << htons(answer.type());
stream << htons(answer.class_code());
stream << htonl(answer.ttl());
stream << htons(answer.record_data().length());
stream << answer.record_data().bytes();
if (answer.type() == T_PTR) {
DNSName name { answer.record_data() };
stream << htons(name.serialized_size());
stream << name;
} else {
stream << htons(answer.record_data().length());
stream << answer.record_data().bytes();
}
}
return stream.copy_into_contiguous_buffer();