From: Volker Lendecke Date: Wed, 6 Nov 2024 10:51:04 +0000 (+0100) Subject: ctdb: Don't leak a pointer on talloc_realloc failure X-Git-Tag: tdb-1.4.13~629 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b1fd5c2280ee7f5a3caba0779bf5208c11359db;p=thirdparty%2Fsamba.git ctdb: Don't leak a pointer on talloc_realloc failure We should not directly overwrite the pointer we are realloc'ing Signed-off-by: Volker Lendecke Reviewed-by: Martin Schwenke --- diff --git a/ctdb/server/ctdb_takeover.c b/ctdb/server/ctdb_takeover.c index 1e6d6553e2c..d71c8863599 100644 --- a/ctdb/server/ctdb_takeover.c +++ b/ctdb/server/ctdb_takeover.c @@ -1517,6 +1517,7 @@ int32_t ctdb_control_tcp_add(struct ctdb_context *ctdb, bool tcp_update_needed) { struct ctdb_connection *p = (struct ctdb_connection *)indata.dptr; + struct ctdb_connection *tmp = NULL; struct ctdb_tcp_array *tcparray; struct ctdb_vnn *vnn; char conn_str[132] = { 0, }; @@ -1561,11 +1562,12 @@ int32_t ctdb_control_tcp_add(struct ctdb_context *ctdb, } /* A new tickle, we must add it to the array */ - tcparray->connections = talloc_realloc(tcparray, - tcparray->connections, - struct ctdb_connection, - tcparray->num + 1); - CTDB_NO_MEMORY(ctdb, tcparray->connections); + tmp = talloc_realloc(tcparray, + tcparray->connections, + struct ctdb_connection, + tcparray->num + 1); + CTDB_NO_MEMORY(ctdb, tmp); + tcparray->connections = tmp; tcparray->connections[tcparray->num].src = p->src; tcparray->connections[tcparray->num].dst = p->dst;