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
1.4
Russell Bryant 18 years ago
parent 6ed2b5c1b2
commit 52a37f77c7

@ -9026,20 +9026,16 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
ast_sched_del(sched, peer->expire); ast_sched_del(sched, peer->expire);
peer->expire = -1; peer->expire = -1;
ast_clear_flag(peer, IAX_DYNAMIC); ast_clear_flag(peer, IAX_DYNAMIC);
if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) { if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr))
ast_string_field_free_pools(peer);
return peer_unref(peer); return peer_unref(peer);
}
if (!peer->addr.sin_port) if (!peer->addr.sin_port)
peer->addr.sin_port = htons(IAX_DEFAULT_PORTNO); peer->addr.sin_port = htons(IAX_DEFAULT_PORTNO);
} }
if (!maskfound) if (!maskfound)
inet_aton("255.255.255.255", &peer->mask); inet_aton("255.255.255.255", &peer->mask);
} else if (!strcasecmp(v->name, "defaultip")) { } else if (!strcasecmp(v->name, "defaultip")) {
if (ast_get_ip(&peer->defaddr, v->value)) { if (ast_get_ip(&peer->defaddr, v->value))
ast_string_field_free_pools(peer);
return peer_unref(peer); return peer_unref(peer);
}
} else if (!strcasecmp(v->name, "sourceaddress")) { } else if (!strcasecmp(v->name, "sourceaddress")) {
peer_set_srcaddr(peer, v->value); peer_set_srcaddr(peer, v->value);
} else if (!strcasecmp(v->name, "permit") || } else if (!strcasecmp(v->name, "permit") ||

Loading…
Cancel
Save