diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c
index 6c6d1ee19642f21a6c398ee53518a1fa9d8569be..460819617390e01183084994564eca523911bf76 100644
--- a/src/knot/server/zones.c
+++ b/src/knot/server/zones.c
@@ -374,7 +374,7 @@ static int zones_zonefile_sync_from_ev(knot_zone_t *zone, zonedata_t *zd)
 }
 
 /*!
- * \brief Sync chagnes in zone to zonefile.
+ * \brief Sync changes in zone to zonefile.
  */
 int zones_flush_ev(event_t *e)
 {
@@ -1251,11 +1251,14 @@ static int zones_process_update_auth(knot_zone_t *zone,
 		if (ret != KNOT_EOK) {
 			log_zone_error("%s: Failed to sign incoming update %s\n",
 			               msg, knot_strerror(ret));
+			new_contents->zone = zone;
 			zones_store_changesets_rollback(transaction);
 			zones_free_merged_changesets(chgsets, sec_chs);
+			free(fake_zone);
 			return ret;
 		}
 		assert(dnssec_contents);
+		dnssec_contents->zone = zone;
 
 		// Plan zone resign if needed
 		zonedata_t *zd = (zonedata_t *)zone->data;
@@ -1264,8 +1267,10 @@ static int zones_process_update_auth(knot_zone_t *zone,
 		if (ret != KNOT_EOK) {
 			log_zone_error("%s: Failed to replan zone sign %s\n",
 			               msg, knot_strerror(ret));
+			new_contents->zone = zone;
 			zones_store_changesets_rollback(transaction);
 			zones_free_merged_changesets(chgsets, sec_chs);
+			free(fake_zone);
 			return ret;
 		}
 	}