]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Better (actual) fix for leak reported by Coverity.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 1 May 2020 09:55:51 +0000 (11:55 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 1 May 2020 09:57:50 +0000 (11:57 +0200)
Always free errmsg; use two diffferent string vars to avoid shadowing.
Coverity 1401969.

pdns/ssqlite3.cc

index 34fc86da48dc59cdbe92c1e5d44a82dbb0414e90..bb91ba4f348b8e895e94e2cce34231f93f5d49b8 100644 (file)
@@ -236,15 +236,15 @@ void SSQLite3::execute(const string& query) {
   char *errmsg;
   int rc;
   if (sqlite3_exec(m_pDB, query.c_str(), NULL, NULL, &errmsg) == SQLITE_BUSY) {
+    std::string errstr1(errmsg);
+    sqlite3_free(errmsg);
     if (m_in_transaction) {
-      std::string errstr(errmsg);
-      sqlite3_free(errmsg);
-      throw("Failed to execute query: " + errstr);
+      throw("Failed to execute query: " + errstr1);
     } else {
       if ((rc = sqlite3_exec(m_pDB, query.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) && rc != SQLITE_DONE && rc != SQLITE_ROW) {
-        std::string errstr(errmsg);
+        std::string errstr2(errmsg);
         sqlite3_free(errmsg);
-        throw("Failed to execute query: " + errstr);
+        throw("Failed to execute query: " + errstr2);
       }
     }
   }