[PATCH 3/3] DownloadFromDCWidget: prevent possible leaks for log/dump files

Lubomir I. Ivanov neolit123 at gmail.com
Tue Jan 7 06:41:21 UTC 2014


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

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 at gmail.com>
---
 qt-ui/downloadfromdivecomputer.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index b9eee91..81bc043 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()
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list