From e95ed123bb7a64f6cb1bca7ab0ea2c01669a9f2d Mon Sep 17 00:00:00 2001 From: Francesco Chemolli Date: Wed, 22 Jun 2022 21:05:42 +0000 Subject: [PATCH] ext_session_acl: fix TDB key lookup (#1064) When built with Samba TrivialDB, ext_session_acl would never successfully look a session up due to an uninitialized key argument. As a result, the helper would be unable to validate that an user had logged in. Broken since TrivialDB support was added in acd207a. Detected by Coverity. CID 1441979: Uninitialized scalar variable (UNINIT). --- src/acl/external/session/ext_session_acl.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/acl/external/session/ext_session_acl.cc b/src/acl/external/session/ext_session_acl.cc index ba21b6e391..d6ee15e2d0 100644 --- a/src/acl/external/session/ext_session_acl.cc +++ b/src/acl/external/session/ext_session_acl.cc @@ -197,13 +197,19 @@ copyValue(void *dst, const DB_ENTRY *src, size_t sz) static int session_active(const char *details, size_t len) { #if USE_BERKLEYDB - DBT key = {0}; - DBT data = {0}; - key.data = (void *)details; + DBT key = {}; + key.data = const_cast(details); key.size = len; + + DBT data = {}; #elif USE_TRIVIALDB - TDB_DATA key; - TDB_DATA data; + TDB_DATA key = {}; + key.dptr = reinterpret_cast(const_cast(details)); + key.dsize = len; + + TDB_DATA data = {}; +#else + (void)len; #endif if (fetchKey(key, &data)) { time_t timestamp; -- 2.47.3