]> 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)
committerSquid Anubis <squid-anubis@squid-cache.org>
Sat, 2 Jul 2022 10:48:14 +0000 (10:48 +0000)
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 f25277f1054db74129852f6591efdbd91befc662..3838071f1190ab718cc85e8f61382a30fa7ca3db 100644 (file)
@@ -198,13 +198,16 @@ static int session_active(const char *details, size_t len)
 {
 #if USE_BERKLEYDB
     DBT key = {};
-    DBT data = {};
-    key.data = (void *)details;
+    key.data = const_cast<char*>(details);
     key.size = len;
+
+    DBT data = {};
 #elif USE_TRIVIALDB
-    TDB_DATA key;
-    TDB_DATA data;
-    (void)len;
+    TDB_DATA key = {};
+    key.dptr = reinterpret_cast<decltype(key.dptr)>(const_cast<char*>(details));
+    key.dsize = len;
+
+    TDB_DATA data = {};
 #else
     (void)len;
 #endif