From: Russell Bryant Date: Mon, 3 Sep 2007 18:57:53 +0000 (+0000) Subject: Remove a couple of calls to ast_string_field_free_pools() on peers in error X-Git-Tag: 1.4.12~142 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=52a37f77c7e7f7c2e7cfabd3a20f0814e1a95ae0;p=thirdparty%2Fasterisk.git Remove a couple of calls to ast_string_field_free_pools() on peers in error handling blocks in the code for building peers. The peer object destructor does this and doing it twice will cause a crash. (closes issue #10625, reported by and patched by pnlarsson) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@81433 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 775e7473bd..d968219b6b 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -9026,20 +9026,16 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st ast_sched_del(sched, peer->expire); peer->expire = -1; ast_clear_flag(peer, IAX_DYNAMIC); - if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) { - ast_string_field_free_pools(peer); + if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) return peer_unref(peer); - } if (!peer->addr.sin_port) peer->addr.sin_port = htons(IAX_DEFAULT_PORTNO); } if (!maskfound) inet_aton("255.255.255.255", &peer->mask); } else if (!strcasecmp(v->name, "defaultip")) { - if (ast_get_ip(&peer->defaddr, v->value)) { - ast_string_field_free_pools(peer); + if (ast_get_ip(&peer->defaddr, v->value)) return peer_unref(peer); - } } else if (!strcasecmp(v->name, "sourceaddress")) { peer_set_srcaddr(peer, v->value); } else if (!strcasecmp(v->name, "permit") ||