From b956ac0912fa76aa42add9ea1d033901b428f312 Mon Sep 17 00:00:00 2001
From: Lubos Slovak <lubos.slovak@nic.cz>
Date: Thu, 22 Aug 2013 13:25:55 +0200
Subject: [PATCH] Fixed owner setting of empty RRSIGs.

refs #4
---
 src/libknot/dnssec/zone-sign.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/libknot/dnssec/zone-sign.c b/src/libknot/dnssec/zone-sign.c
index eacfd9766..641442536 100644
--- a/src/libknot/dnssec/zone-sign.c
+++ b/src/libknot/dnssec/zone-sign.c
@@ -126,8 +126,8 @@ static int sign_rrset_one(knot_rrset_t *rrsigs,
 	uint32_t sig_incept = policy->now;
 	uint32_t sig_expire = sig_incept + policy->sign_lifetime;
 
-	rrsig_write_rdata(rdata, key, covered->owner, covered, sig_incept,
-			  sig_expire);
+	rrsig_write_rdata(rdata, key, knot_rrset_owner(covered), covered,
+	                  sig_incept, sig_expire);
 
 	// RFC 4034: The signature coveres RRSIG RDATA field (excluding the
 	// signature) and all matching RR records, which are ordered
@@ -171,8 +171,11 @@ static knot_rrset_t *create_empty_rrsigs_for(const knot_rrset_t *covered)
 {
 	assert(covered);
 
-	return knot_rrset_new(covered->owner, KNOT_RRTYPE_RRSIG,
-			      covered->rclass, covered->ttl);
+	// Owner must be copied
+	knot_dname_t *owner_copy = knot_dname_copy(knot_rrset_owner(covered));
+	return knot_rrset_new(owner_copy, KNOT_RRTYPE_RRSIG,
+	                      knot_rrset_class(covered),
+	                      knot_rrset_ttl(covered));
 }
 
 static bool is_valid_signature(const knot_rrset_t *rrsigs, size_t pos,
-- 
GitLab