From ba53e284e689987641f446fb71ddf1f31aee100b Mon Sep 17 00:00:00 2001 From: Anoop C S Date: Wed, 8 Jan 2020 10:24:24 -0800 Subject: [PATCH] s3: lib: dbwrap: Set rec->value_valid to avoid backtrace in `smbstatus` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Following backtrace is observed on executing `smbstatus` with at least one SMB client connection established: PANIC: assert failed at ../../lib/dbwrap/dbwrap.c(82): rec->value_valid PANIC (pid 350270): assert failed: rec->value_valid BACKTRACE: 15 stack frames: #0 /usr/local/lib/libsamba-util.so.0(log_stack_trace+0x1f) [0x7fbbd9b32047] #1 /usr/local/lib/libsmbconf.so.0(smb_panic_s3+0x74) [0x7fbbd9c1e6ff] #2 /usr/local/lib/libsamba-util.so.0(smb_panic+0x28) [0x7fbbd9b32012] #3 /usr/local/lib/samba/libdbwrap- samba4.so(dbwrap_record_get_value+0x86) [0x7fbbd95800ac] #4 /usr/local/lib/samba/libsmbd-base-samba4.so(+0x28f563) [0x7fbbd999e563] #5 /usr/local/lib/samba/libsamba-cluster-support-samba4.so(+0x7851) [0x7fbbd92c7851] #6 /usr/local/lib/samba/libsamba-cluster-support- samba4.so(ctdbd_traverse+0x4ca) [0x7fbbd92cc641] #7 /usr/local/lib/samba/libsamba-cluster-support-samba4.so(+0x73eb) [0x7fbbd92c73eb] #8 /usr/local/lib/samba/libsamba-cluster-support-samba4.so(+0x7a52) [0x7fbbd92c7a52] #9 /usr/local/lib/samba/libdbwrap-samba4.so(dbwrap_traverse_read+0x35) [0x7fbbd9580de5] #10 /usr/local/lib/samba/libsmbd-base- samba4.so(smbXsrv_tcon_global_traverse+0xc5) [0x7fbbd999e7d9] #11 smbstatus(connections_forall_read+0x114) [0x55d17872b8ee] #12 smbstatus(main+0x7b2) [0x55d17872a2f3] #13 /lib64/libc.so.6(__libc_start_main+0xf3) [0x7fbbd93a21a3] #14 smbstatus(_start+0x2e) [0x55d17872894e] Can not dump core: corepath not set up Assertion on rec->value_valid fails as it is uninitialized in the following functions: traverse_read_callback traverse_persistent_callback_read Signed-off-by: Anoop C S Reviewed-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Wed Jan 8 23:24:58 UTC 2020 on sn-devel-184 --- source3/lib/dbwrap/dbwrap_ctdb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source3/lib/dbwrap/dbwrap_ctdb.c b/source3/lib/dbwrap/dbwrap_ctdb.c index 434a356feef..ef667261359 100644 --- a/source3/lib/dbwrap/dbwrap_ctdb.c +++ b/source3/lib/dbwrap/dbwrap_ctdb.c @@ -1717,6 +1717,7 @@ static void traverse_read_callback(TDB_DATA key, TDB_DATA data, void *private_da rec.storev = db_ctdb_storev_deny; rec.delete_rec = db_ctdb_delete_deny; rec.private_data = NULL; + rec.value_valid = true; state->fn(&rec, state->private_data); state->count++; } @@ -1741,6 +1742,7 @@ static int traverse_persistent_callback_read(TDB_CONTEXT *tdb, TDB_DATA kbuf, TD rec.db = state->db; rec.key = kbuf; rec.value = dbuf; + rec.value_valid = true; rec.storev = db_ctdb_storev_deny; rec.delete_rec = db_ctdb_delete_deny; rec.private_data = NULL;