]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb: Don't leak a pointer on talloc_realloc failure
authorVolker Lendecke <vl@samba.org>
Wed, 6 Nov 2024 10:51:04 +0000 (11:51 +0100)
committerMartin Schwenke <martins@samba.org>
Wed, 6 Nov 2024 23:03:42 +0000 (23:03 +0000)
We should not directly overwrite the pointer we are realloc'ing

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/server/ctdb_takeover.c

index 1e6d6553e2cbda2bdd4d4e040984f3895326d0ce..d71c886359982600c1a262325b315be7f7740505 100644 (file)
@@ -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;