]> granicus.if.org Git - pdns/commitdiff
auth: Don't try to deallocate empty PG statements
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 19 Jul 2016 08:50:43 +0000 (10:50 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 19 Jul 2016 08:50:43 +0000 (10:50 +0200)
When a SPgSQLStatement is released without having been prepared,
we execute an invalid 'DEALLOCATE ' SQL command. This might happen
if the statement has not been used before being destroyed, for example.

modules/gpgsqlbackend/spgsql.cc

index 78393ed1e0abd658fabf3f7ee09c1f9a0bb5298f..7e4ef69dd2d8dfd15d1a0c023d5503839fba3fef 100644 (file)
@@ -184,9 +184,12 @@ private:
   void releaseStatement() {
     d_prepared = false;
     reset();
-    string cmd = string("DEALLOCATE " + d_stmt);
-    PGresult *res = PQexec(d_db(), cmd.c_str());
-    PQclear(res);
+    if (!d_stmt.empty()) {
+      string cmd = string("DEALLOCATE " + d_stmt);
+      PGresult *res = PQexec(d_db(), cmd.c_str());
+      PQclear(res);
+      d_stmt.clear();
+    }
   }
 
   void prepareStatement() {