From d4e7ea301972a7669229dc567ff5b3b1c865f2e9 Mon Sep 17 00:00:00 2001
From: Robert Edmonds <edmonds@users.noreply.github.com>
Date: Wed, 5 Jan 2022 16:46:04 -0500
Subject: [PATCH] pkt: initialize 'lower_qname' in knot_pkt_put_question()

---
 src/libknot/packet/pkt.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/libknot/packet/pkt.c b/src/libknot/packet/pkt.c
index 00f975b4ee..d870260b64 100644
--- a/src/libknot/packet/pkt.c
+++ b/src/libknot/packet/pkt.c
@@ -475,7 +475,7 @@ int knot_pkt_put_question(knot_pkt_t *pkt, const knot_dname_t *qname, uint16_t q
 	assert(pkt->size == KNOT_WIRE_HEADER_SIZE);
 	assert(pkt->rrset_count == 0);
 
-	/* Copy name wireformat. */
+	/* Copy name into wire format buffer. */
 	wire_ctx_t wire = wire_ctx_init(pkt->wire, pkt->max_size);
 	wire_ctx_set_offset(&wire, KNOT_WIRE_HEADER_SIZE);
 
@@ -486,6 +486,16 @@ int knot_pkt_put_question(knot_pkt_t *pkt, const knot_dname_t *qname, uint16_t q
 	}
 	wire_ctx_skip(&wire, qname_len);
 
+	/* Allocate lower_qname field. */
+	pkt->lower_qname = mm_alloc(&pkt->mm, qname_len);
+	if (pkt->lower_qname == NULL) {
+		return KNOT_ENOMEM;
+	}
+
+	/* Copy QNAME and canonicalize to lowercase. */
+	memcpy(pkt->lower_qname, qname, qname_len);
+	knot_dname_to_lower(pkt->lower_qname);
+
 	/* Copy QTYPE & QCLASS */
 	wire_ctx_write_u16(&wire, qtype);
 	wire_ctx_write_u16(&wire, qclass);
-- 
GitLab