From 0afbb68b403a78b9680d30298d45bb167dd00efc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 20 Jun 2025 16:57:24 +0200 Subject: [PATCH] - xfr-tsig, other data content matches the other len when written. --- util/tsig.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/util/tsig.c b/util/tsig.c index 632356e33..6cdc93534 100644 --- a/util/tsig.c +++ b/util/tsig.c @@ -792,9 +792,12 @@ tsig_sign_query(struct tsig_data* tsig, struct sldns_buffer* pkt, sldns_buffer_write_u48(pkt, tsig->time_signed); sldns_buffer_write_u16(pkt, tsig->fudge); sldns_buffer_write_u16(pkt, tsig->error); - sldns_buffer_write_u16(pkt, tsig->other_len); - if(tsig->other_len != 0) + if(tsig->other_len == 6) { + sldns_buffer_write_u16(pkt, tsig->other_len); sldns_buffer_write_u48(pkt, tsig->other_time); + } else { + sldns_buffer_write_u16(pkt, 0); + } /* Sign it */ if(!tsig_algo_calc(key, pkt, tsig)) { @@ -827,9 +830,12 @@ tsig_sign_query(struct tsig_data* tsig, struct sldns_buffer* pkt, sldns_buffer_write(pkt, tsig->mac, tsig->mac_size); sldns_buffer_write_u16(pkt, tsig->original_query_id); sldns_buffer_write_u16(pkt, tsig->error); - sldns_buffer_write_u16(pkt, tsig->other_len); - if(tsig->other_len == 6) + if(tsig->other_len == 6) { + sldns_buffer_write_u16(pkt, tsig->other_len); sldns_buffer_write_u48(pkt, tsig->other_time); + } else { + sldns_buffer_write_u16(pkt, 0); + } LDNS_ARCOUNT_SET(sldns_buffer_begin(pkt), LDNS_ARCOUNT(sldns_buffer_begin(pkt))+1); -- 2.47.2