diff --git a/doc/Changelog b/doc/Changelog index 1c69d1125..8b45447d9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +12 October 2016: Ralph + - Free view config elements. + 11 October 2016: Ralph - Added qname-minimisation-strict config option. - iana portlist update. diff --git a/services/view.c b/services/view.c index dbfd92840..1efe48588 100644 --- a/services/view.c +++ b/services/view.c @@ -166,6 +166,12 @@ views_apply_cfg(struct views* vs, struct config_file* cfg) lock_rw_unlock(&v->lock); return 0; } + /* local_zones, local_zones_nodefault and local_data + * are free'd from config_view by local_zones_apply_cfg. + * Set pointers to NULL. */ + cv->local_zones = NULL; + cv->local_data = NULL; + cv->local_zones_nodefault = NULL; } lock_rw_unlock(&v->lock); } diff --git a/util/config_file.c b/util/config_file.c index cce33de5a..f3c0b1ebe 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -170,6 +170,7 @@ config_create(void) cfg->out_ifs = NULL; cfg->stubs = NULL; cfg->forwards = NULL; + cfg->views = NULL; cfg->acls = NULL; cfg->harden_short_bufsize = 0; cfg->harden_large_queries = 0; @@ -993,6 +994,8 @@ config_delview(struct config_view* p) if(!p) return; free(p->name); config_deldblstrlist(p->local_zones); + config_delstrlist(p->local_zones_nodefault); + config_delstrlist(p->local_data); free(p); } @@ -1048,6 +1051,7 @@ config_delete(struct config_file* cfg) config_del_strarray(cfg->out_ifs, cfg->num_out_ifs); config_delstubs(cfg->stubs); config_delstubs(cfg->forwards); + config_delviews(cfg->views); config_delstrlist(cfg->donotqueryaddrs); config_delstrlist(cfg->root_hints); free(cfg->identity);