From 47ac9795ed3d17d20cefd5c6decf34eb4f13672e Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan.kadlec@nic.cz>
Date: Thu, 5 Dec 2013 22:20:38 +0100
Subject: [PATCH] Leak fix.

---
 src/libknot/dnssec/zone-events.c | 10 +++++++---
 src/libknot/dnssec/zone-nsec.c   |  3 ++-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/libknot/dnssec/zone-events.c b/src/libknot/dnssec/zone-events.c
index ec92fffea4..0f97a2c414 100644
--- a/src/libknot/dnssec/zone-events.c
+++ b/src/libknot/dnssec/zone-events.c
@@ -247,6 +247,7 @@ int knot_dnssec_sign_changeset(const knot_zone_contents_t *zone,
 		log_zone_error("%s Failed to sign changeset (%s)\n", msgpref,
 		               knot_strerror(ret));
 		knot_free_zone_keys(&zone_keys);
+		free(msgpref);
 		return ret;
 	}
 
@@ -256,9 +257,10 @@ int knot_dnssec_sign_changeset(const knot_zone_contents_t *zone,
 	knot_zone_clear_sorted_changes(sorted_changes);
 	hattrie_free(sorted_changes);
 	if (ret != KNOT_EOK) {
-		log_zone_error("Failed to fix NSEC(3) chain (%s)\n",
+		log_zone_error("%s Failed to fix NSEC(3) chain (%s)\n", msgpref,
 		               knot_strerror(ret));
 		knot_free_zone_keys(&zone_keys);
+		free(msgpref);
 		return ret;
 	}
 
@@ -266,9 +268,10 @@ int knot_dnssec_sign_changeset(const knot_zone_contents_t *zone,
 	ret = knot_zone_sign_nsecs_in_changeset(&zone_keys, &policy,
 	                                        out_ch);
 	if (ret != KNOT_EOK) {
-		log_zone_error("Failed to sign changeset (%s)\n",
+		log_zone_error("%s Failed to sign changeset (%s)\n", msgpref,
 		               knot_strerror(ret));
 		knot_free_zone_keys(&zone_keys);
+		free(msgpref);
 		return ret;
 	}
 
@@ -278,10 +281,11 @@ int knot_dnssec_sign_changeset(const knot_zone_contents_t *zone,
 	                                &zone_keys, &policy,
 	                                out_ch);
 	if (ret != KNOT_EOK) {
-		log_zone_error("Failed to sign SOA RR (%s)\n",
+		log_zone_error("%s Failed to sign SOA RR (%s)\n", msgpref,
 		               knot_strerror(ret));
 	}
 	knot_free_zone_keys(&zone_keys);
+	free(msgpref);
 
 	*used_lifetime = policy.sign_lifetime;
 	*used_refresh = policy.sign_refresh;
diff --git a/src/libknot/dnssec/zone-nsec.c b/src/libknot/dnssec/zone-nsec.c
index 09d96e23bf..8d79bff7dd 100644
--- a/src/libknot/dnssec/zone-nsec.c
+++ b/src/libknot/dnssec/zone-nsec.c
@@ -1156,7 +1156,8 @@ static int fix_nsec_chain(knot_dname_t *a, knot_dname_t *b, void *d)
 	                                                         a);
 	const knot_node_t *b_node = knot_zone_contents_find_node(fix_data->zone,
 	                                                         b);
-	if (b_node == NULL || knot_node_is_non_auth(b_node)) {
+	assert(b_node);
+	if (knot_node_is_non_auth(b_node)) {
 		// Nothing to fix in this node
 		return NSEC_NODE_SKIP;
 	}
-- 
GitLab