]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
ext_session_acl: fix TDB key lookup (#1064)
authorFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 22 Jun 2022 21:05:42 +0000 (21:05 +0000)
committerAmos Jeffries <yadij@users.noreply.github.com>
Mon, 22 Aug 2022 15:09:12 +0000 (03:09 +1200)
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

index ba21b6e391d9f796712e2e9769d1d5171e997e45..d6ee15e2d05ac5bcd95da14804cd001778edea4f 100644 (file)
@@ -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<char*>(details);
     key.size = len;
+
+    DBT data = {};
 #elif USE_TRIVIALDB
-    TDB_DATA key;
-    TDB_DATA data;
+    TDB_DATA key = {};
+    key.dptr = reinterpret_cast<decltype(key.dptr)>(const_cast<char*>(details));
+    key.dsize = len;
+
+    TDB_DATA data = {};
+#else
+    (void)len;
 #endif
     if (fetchKey(key, &data)) {
         time_t timestamp;