From: Corey Farrell Date: Wed, 15 Aug 2018 19:49:01 +0000 (-0400) Subject: res_resolver_unbound: Fix leak of config nameserver strings. X-Git-Tag: 17.0.0-rc1~419^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a83c464d9d2368256b425f62562cd979cf2a2e06;p=thirdparty%2Fasterisk.git res_resolver_unbound: Fix leak of config nameserver strings. Change-Id: I3f396316bb40d1ae6e91f5f688042420f1a540ed --- diff --git a/res/res_resolver_unbound.c b/res/res_resolver_unbound.c index 25f61509aa..89a934c8f2 100644 --- a/res/res_resolver_unbound.c +++ b/res/res_resolver_unbound.c @@ -432,20 +432,22 @@ static int unbound_config_preapply(struct unbound_config *cfg) if (cfg->global->nameservers) { struct ao2_iterator it_nameservers; - const char *nameserver; + char *nameserver; it_nameservers = ao2_iterator_init(cfg->global->nameservers, 0); - while ((nameserver = ao2_iterator_next(&it_nameservers))) { + while (!res && (nameserver = ao2_iterator_next(&it_nameservers))) { res = ub_ctx_set_fwd(cfg->global->state->resolver->context, (UNBOUND_CHAR *)nameserver); if (res) { ast_log(LOG_ERROR, "Failed to add nameserver '%s' to unbound resolver: %s\n", nameserver, ub_strerror(res)); - ao2_iterator_destroy(&it_nameservers); - return -1; } + ao2_ref(nameserver, -1); } ao2_iterator_destroy(&it_nameservers); + if (res) { + return -1; + } } if (!strcmp(cfg->global->resolv, "system")) {