diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-10-04 12:35:48 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-10-05 12:22:43 +0200 |
commit | 51027656951988babd4724def5d934e4817fdd1f (patch) | |
tree | 7fd87c0a020f1359124f1d54e0c73efc268cedec /src/resolve/test-dns-packet.c | |
parent | 9886b6b13cfe4348f9bd2ab62bb1d821fdac7ab7 (diff) | |
download | systemd-51027656951988babd4724def5d934e4817fdd1f.tar.gz |
resolved: rework how we handle truncation in the stub resolver
When we a reply message gets longer than the client supports we need to
truncate the response and set the TC bit, and we already do that.
However, we are not supposed to send incomplete RRs in that case, but
instead truncate right at a record boundary. Do that.
This fixes the "Message parser reports malformed message packet."
warning the venerable "host" tool outputs when a very large response is
requested.
See: #6520
Diffstat (limited to 'src/resolve/test-dns-packet.c')
-rw-r--r-- | src/resolve/test-dns-packet.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c index 8cbe492526..00dde9b6bd 100644 --- a/src/resolve/test-dns-packet.c +++ b/src/resolve/test-dns-packet.c @@ -75,7 +75,7 @@ static void test_packet_from_file(const char* filename, bool canonical) { assert_se(packet_size > 0); assert_se(offset + 8 + packet_size <= data_size); - assert_se(dns_packet_new(&p, DNS_PROTOCOL_DNS, 0) >= 0); + assert_se(dns_packet_new(&p, DNS_PROTOCOL_DNS, 0, DNS_PACKET_SIZE_MAX) >= 0); assert_se(dns_packet_append_blob(p, data + offset + 8, packet_size, NULL) >= 0); assert_se(dns_packet_read_rr(p, &rr, NULL, NULL) >= 0); @@ -90,7 +90,7 @@ static void test_packet_from_file(const char* filename, bool canonical) { assert_se(dns_resource_record_to_wire_format(rr, canonical) >= 0); - assert_se(dns_packet_new(&p2, DNS_PROTOCOL_DNS, 0) >= 0); + assert_se(dns_packet_new(&p2, DNS_PROTOCOL_DNS, 0, DNS_PACKET_SIZE_MAX) >= 0); assert_se(dns_packet_append_blob(p2, rr->wire_format, rr->wire_format_size, NULL) >= 0); assert_se(dns_packet_read_rr(p2, &rr2, NULL, NULL) >= 0); |