From e7b35f1ea2eea92bd46b4f5beb2dfd6dafe1d7a1 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 --- source3/lib/ctdbd_conn.c | 5 +++++ source3/smbd/process.c | 3 +++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c index 21bd96d..b259cb0 100644 --- a/source3/lib/ctdbd_conn.c +++ b/source3/lib/ctdbd_conn.c @@ -1360,6 +1360,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 98de361..a15b9de 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -2355,6 +2355,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 -- 1.7.1