From 033c0467dac4aa0eb64fc04a226da02f29e15c3b Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 20 May 2016 12:57:48 +0200 Subject: [PATCH] notifyd: prevent NULL deref segfault in notifyd_peer_destructor It seems it could happen that p->db == NULL in the list from notifyd_clean_peers_next(). This has been seen in a ctdb cluster when an node-internal ctdb interface is brought down. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11930 Signed-off-by: Michael Adam Reviewed-by: Volker Lendecke Autobuild-User(master): Volker Lendecke Autobuild-Date(master): Fri May 20 17:32:55 CEST 2016 on sn-devel-144 (cherry picked from commit 1c76746b637bc1867f85ba94786b89f22d1b0c32) --- source3/smbd/notifyd/notifyd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source3/smbd/notifyd/notifyd.c b/source3/smbd/notifyd/notifyd.c index 49fb9c9..45b029b 100644 --- a/source3/smbd/notifyd/notifyd.c +++ b/source3/smbd/notifyd/notifyd.c @@ -1246,7 +1246,10 @@ static int notifyd_peer_destructor(struct notifyd_peer *p) struct notifyd_state *state = p->state; size_t i; - dbwrap_traverse_read(p->db, notifyd_db_del_syswatches, NULL, NULL); + if (p->db != NULL) { + dbwrap_traverse_read(p->db, notifyd_db_del_syswatches, + NULL, NULL); + } for (i = 0; inum_peers; i++) { if (p == state->peers[i]) { -- 2.5.5