From 642c6ba2b9c581bacfcb9a6cb4c5c95d446263ce Mon Sep 17 00:00:00 2001 From: Christian Ambach Date: Thu, 19 May 2011 18:13:40 +0200 Subject: [PATCH] Fix Bug 8152 - smbd crash in release_ip() release_ip() needs the private_data, but it was never saved away to feed it into release_ip() later Autobuild-User: Christian Ambach Autobuild-Date: Thu May 19 21:21:14 CEST 2011 on sn-devel-104 --- source3/lib/ctdbd_conn.c | 5 +++++ source3/smbd/process.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c index d27186996e6..f42290695a7 100644 --- a/source3/lib/ctdbd_conn.c +++ b/source3/lib/ctdbd_conn.c @@ -1358,6 +1358,11 @@ NTSTATUS ctdbd_register_ips(struct ctdbd_connection *conn, } conn->release_ip_handler = release_ip_handler; + /* + * store the IP address of the server socket for later + * comparison in release_ip() + */ + conn->release_ip_priv = private_data; /* * We want to be told about IP releases diff --git a/source3/smbd/process.c b/source3/smbd/process.c index d58baeb930d..5f9845cba05 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -2358,6 +2358,9 @@ static void release_ip(const char *ip, void *priv) p = addr + 7; } + DEBUG(10, ("Got release IP message for %s, " + "our address is %s\n", ip, p)); + if ((strcmp(p, ip) == 0) || ((p != addr) && strcmp(addr, ip) == 0)) { /* we can't afford to do a clean exit - that involves database writes, which would potentially mean we