Git: Fix potential heap use after free

Closing the dialog before the process terminates might lead to this.

Task-number: QTCREATORBUG-13075
Change-Id: I3b6ffcca010eb356b14d87f2a7d62090c158faba
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2014-09-21 22:28:19 +03:00
committed by Orgad Shaneh
parent 3f3554eb13
commit 72c33cbadd
2 changed files with 13 additions and 7 deletions

View File

@@ -94,8 +94,8 @@ ChangeSelectionDialog::ChangeSelectionDialog(const QString &workingDirectory, Co
ChangeSelectionDialog::~ChangeSelectionDialog()
{
terminateProcess();
delete m_ui;
delete m_process;
}
QString ChangeSelectionDialog::change() const
@@ -197,6 +197,16 @@ void ChangeSelectionDialog::enableButtons(bool b)
m_ui->checkoutButton->setEnabled(b);
}
void ChangeSelectionDialog::terminateProcess()
{
if (!m_process)
return;
m_process->kill();
m_process->waitForFinished();
delete m_process;
m_process = 0;
}
void ChangeSelectionDialog::recalculateCompletion()
{
const QString workingDir = workingDirectory();
@@ -219,12 +229,7 @@ void ChangeSelectionDialog::recalculateCompletion()
void ChangeSelectionDialog::recalculateDetails()
{
if (m_process) {
m_process->kill();
m_process->waitForFinished();
delete m_process;
m_process = 0;
}
terminateProcess();
enableButtons(false);
const QString workingDir = workingDirectory();

View File

@@ -85,6 +85,7 @@ private slots:
private:
void enableButtons(bool b);
void terminateProcess();
Ui::ChangeSelectionDialog *m_ui;