From: Andrew Tridgell Date: Mon, 4 Jun 2007 12:28:52 +0000 (+1000) Subject: don't crash doing ctdb ip when not doing takeover X-Git-Tag: tevent-0.9.20~348^2~2570 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c939990ca36e6cca3eb8f270e204a399aec0e72;p=thirdparty%2Fsamba.git don't crash doing ctdb ip when not doing takeover (This used to be ctdb commit f341a97c13a77711a2daaa9a223123cc4c81e75e) --- diff --git a/ctdb/takeover/ctdb_takeover.c b/ctdb/takeover/ctdb_takeover.c index ced23249094..bf9d3982de8 100644 --- a/ctdb/takeover/ctdb_takeover.c +++ b/ctdb/takeover/ctdb_takeover.c @@ -692,7 +692,7 @@ void ctdb_release_all_ips(struct ctdb_context *ctdb) /* - + get list of public IPs */ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata) { @@ -701,7 +701,7 @@ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_c len = offsetof(struct ctdb_all_public_ips, ips) + ctdb->num_nodes*sizeof(struct ctdb_public_ip); - ips = talloc_size(outdata, len); + ips = talloc_zero_size(outdata, len); CTDB_NO_MEMORY(ctdb, ips); outdata->dsize = len; @@ -712,7 +712,9 @@ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_c ips->ips[i].vnn = i; ips->ips[i].takeover_vnn = ctdb->nodes[i]->takeover_vnn; ips->ips[i].sin.sin_family = AF_INET; - inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr); + if (ctdb->nodes[i]->public_address) { + inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr); + } } return 0;