SSH: Fix some potential crashes.

Change-Id: I102e35c3dcd3725f357c91d9f0a77ab28d881b0d
Reviewed-by: Oliver Wolff <oliver.wolff@nokia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com>
This commit is contained in:
Christian Kandeler
2012-06-05 15:18:55 +02:00
parent e4b3cc7417
commit a437ede424
5 changed files with 14 additions and 9 deletions

View File

@@ -108,8 +108,10 @@ bool operator!=(const SshConnectionParameters &p1, const SshConnectionParameters
// TODO: Mechanism for checking the host key. First connection to host: save, later: compare
SshConnection::SshConnection(const SshConnectionParameters &serverInfo)
: d(new Internal::SshConnectionPrivate(this, serverInfo))
{
doStaticInitializationsIfNecessary();
d = new Internal::SshConnectionPrivate(this, serverInfo);
connect(d, SIGNAL(connected()), this, SIGNAL(connected()),
Qt::QueuedConnection);
connect(d, SIGNAL(dataAvailable(QString)), this,
@@ -202,8 +204,6 @@ SshConnectionPrivate::SshConnectionPrivate(SshConnection *conn,
m_connParams(serverInfo), m_error(SshNoError), m_ignoreNextPacket(false),
m_conn(conn)
{
doStaticInitializationsIfNecessary();
setupPacketHandlers();
m_socket->setProxy(m_connParams.proxyType == SshConnectionParameters::DefaultProxy
? QNetworkProxy::DefaultProxy : QNetworkProxy::NoProxy);

View File

@@ -154,7 +154,7 @@ public:
if (doDelete) {
disconnect(connection, 0, this, 0);
m_deprecatedConnections.removeAll(connection);
delete connection;
connection->deleteLater();
}
}

View File

@@ -76,7 +76,8 @@ GenericLinuxDeviceTester::GenericLinuxDeviceTester(QObject *parent)
GenericLinuxDeviceTester::~GenericLinuxDeviceTester()
{
delete d->connection;
if (d->connection)
d->connection->deleteLater();
delete d;
}
@@ -186,10 +187,12 @@ void GenericLinuxDeviceTester::handlePortListReady()
void GenericLinuxDeviceTester::setFinished(TestResult result)
{
d->state = Inactive;
disconnect(d->connection, 0, this, 0);
disconnect(&d->portsGatherer, 0, this, 0);
delete d->connection;
if (d->connection) {
disconnect(d->connection, 0, this, 0);
d->connection->deleteLater();
d->connection = 0;
}
emit finished(result);
}

View File

@@ -69,6 +69,7 @@ RemoteLinuxUsedPortsGatherer::RemoteLinuxUsedPortsGatherer(QObject *parent) :
RemoteLinuxUsedPortsGatherer::~RemoteLinuxUsedPortsGatherer()
{
stop();
delete d;
}

View File

@@ -167,7 +167,8 @@ RemoteValgrindProcess::RemoteValgrindProcess(QSsh::SshConnection *connection, QO
RemoteValgrindProcess::~RemoteValgrindProcess()
{
delete m_connection;
if (m_connection)
m_connection->deleteLater();
}
bool RemoteValgrindProcess::isRunning() const