From rusty
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 26 May 2010 03:38:12 +0000 (13:38 +1000)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 26 May 2010 03:38:12 +0000 (13:38 +1000)
Fix a SEGV that could happend when deleting a public ip.

BZ62783

server/ctdb_takeover.c

index 0288dd2796ddf1ba24fbd2fb3c19b55dc7fc202a..ae6c0646aece8b7ab2d0ff79f5a17a2208acef53 100644 (file)
@@ -1653,7 +1653,9 @@ static void ctdb_tickle_sentenced_connections(struct event_context *ev, struct t
  */
 static int ctdb_killtcp_destructor(struct ctdb_kill_tcp *killtcp)
 {
-       killtcp->vnn->killtcp = NULL;
+       if (killtcp->vnn) {
+               killtcp->vnn->killtcp = NULL;
+       }
        return 0;
 }
 
@@ -2143,6 +2145,9 @@ int32_t ctdb_control_del_public_address(struct ctdb_context *ctdb, TDB_DATA inda
                                         vnn->iface, 
                                         talloc_strdup(mem_ctx, ctdb_addr_to_str(&vnn->public_address)),
                                         vnn->public_netmask_bits);
+                       if (vnn->killtcp) {
+                               vnn->killtcp->vnn = NULL;
+                       }
                        talloc_free(vnn);
                        if (ret != 0) {
                                return -1;