aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2014-01-07 16:41:21 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-09 09:29:40 +0800
commit7d56e404fdd09c1ec24b966eb00ba31c8f87ba70 (patch)
tree3a1e3d48a423dc50ba9bbc97b60fc0f034f7d907
parent065221aac7ec7b762e642a0bf71b58cef7078e85 (diff)
downloadsubsurface-7d56e404fdd09c1ec24b966eb00ba31c8f87ba70.tar.gz
DownloadFromDCWidget: prevent possible leaks for log/dump files
If the 'logfile_name' and 'dumpfile_name' were NULL we can simply strdup() them with a new value, but if there was a previous value we need to free() first. C99 6.7.8 allows us to keep said variables without the explicit NULL initialiazation. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index b9eee912a..81bc04309 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -288,8 +288,11 @@ void DownloadFromDCWidget::pickLogFile()
filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log");
logFile = QFileDialog::getSaveFileName(this, tr("Choose file for divecomputer download logfile"),
filename, tr("Log files (*.log)"));
- if (!logFile.isEmpty())
+ if (!logFile.isEmpty()) {
+ if (logfile_name)
+ free(logfile_name);
logfile_name = strdup(logFile.toUtf8().data());
+ }
}
void DownloadFromDCWidget::checkDumpFile(int state)
@@ -314,8 +317,11 @@ void DownloadFromDCWidget::pickDumpFile()
filename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin");
dumpFile = QFileDialog::getSaveFileName(this, tr("Choose file for divecomputer binary dump file"),
filename, tr("Dump files (*.bin)"));
- if (!dumpFile.isEmpty())
+ if (!dumpFile.isEmpty()) {
+ if (dumpfile_name)
+ free(dumpfile_name);
dumpfile_name = strdup(dumpFile.toUtf8().data());
+ }
}
void DownloadFromDCWidget::reject()