Execute initDbSession() on DB reconnects 123/head
authorMichael Marley <michael@michaelmarley.com>
Thu, 23 Apr 2015 12:46:43 +0000 (08:46 -0400)
committerMichael Marley <michael@michaelmarley.com>
Thu, 23 Apr 2015 12:46:43 +0000 (08:46 -0400)
commit6605882f41331c80f7ac3a6992650a702ec71283
tree9b79ffae7dbe2b65632f41c1d32a812d284445f8
parent9e7ee3a501d5dce09982d92102b7f1873cd0d3db
Execute initDbSession() on DB reconnects

Previously, the initDbSession() function would only be run on the
initial connect.  Since the initDbSession() code in PostgreSQL is
used to fix the CVE-2013-4422 SQL Injection bug, this means that
Quassel was still vulnerable to that CVE if the PostgreSQL server
is restarted or the connection is lost at any point while Quassel
is running.

This bug also causes the Qt5 psql timezone fix to stop working
after a reconnect.

The fix is to disable Qt's automatic reconnecting, check the
connection status ourselves, and reconnect if necessary, executing
the initDbSession() function afterward.
src/core/abstractsqlstorage.cpp
src/core/abstractsqlstorage.h