]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
zone-update: sanitize freed pointers to avoid possible double free
authorJan Hak <jan.hak@nic.cz>
Fri, 8 Jan 2021 13:00:17 +0000 (14:00 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Tue, 12 Jan 2021 18:00:07 +0000 (19:00 +0100)
src/knot/updates/zone-update.c

index b18aaac34d92825f4b6664951525c0a62aa5bced..2408bb6c87ea81ef8122f5d53b3f986952fba111 100644 (file)
@@ -244,6 +244,7 @@ int zone_update_from_contents(zone_update_t *update, zone_t *zone_without_conten
                int ret = changeset_init(&update->change, zone_without_contents->name);
                if (ret != KNOT_EOK) {
                        free(update->a_ctx);
+                       update->a_ctx = NULL;
                        knot_sem_post(&update->zone->cow_lock);
                        return ret;
                }
@@ -252,6 +253,7 @@ int zone_update_from_contents(zone_update_t *update, zone_t *zone_without_conten
                if (update->change.soa_from == NULL) {
                        changeset_clear(&update->change);
                        free(update->a_ctx);
+                       update->a_ctx = NULL;
                        knot_sem_post(&update->zone->cow_lock);
                        return KNOT_ENOMEM;
                }
@@ -262,6 +264,7 @@ int zone_update_from_contents(zone_update_t *update, zone_t *zone_without_conten
        if (ret != KNOT_EOK) {
                changeset_clear(&update->change);
                free(update->a_ctx);
+               update->a_ctx = NULL;
                knot_sem_post(&update->zone->cow_lock);
                return ret;
        }