[PATCH 1/2] Fix segm fault on known CSV imports

Miika Turkia miika.turkia at gmail.com
Fri Jan 23 10:06:31 PST 2015


If the header line is not set up properly, the known imports assignments
will index out of the array.

Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
 qt-ui/divelogimportdialog.cpp | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/qt-ui/divelogimportdialog.cpp b/qt-ui/divelogimportdialog.cpp
index a2b2cc3..64bb764 100644
--- a/qt-ui/divelogimportdialog.cpp
+++ b/qt-ui/divelogimportdialog.cpp
@@ -435,23 +435,23 @@ void DiveLogImportDialog::loadFileContents(int value, whatChanged triggeredBy)
 		// now set up time, depth, temperature, po2, cns, ndl, tts, stopdepth, pressure
 		for (int i = 0; i < currColumns.count(); i++)
 			headers.append("");
-		if (CSVApps[value].time != -1)
+		if (CSVApps[value].time != -1 && CSVApps[value].time < currColumns.count())
 			headers.replace(CSVApps[value].time, tr("Sample time"));
-		if (CSVApps[value].depth != -1)
+		if (CSVApps[value].depth != -1 && CSVApps[value].depth < currColumns.count())
 			headers.replace(CSVApps[value].depth, tr("Sample depth"));
-		if (CSVApps[value].temperature != -1)
+		if (CSVApps[value].temperature != -1 && CSVApps[value].temperature < currColumns.count())
 			headers.replace(CSVApps[value].temperature, tr("Sample temperature"));
-		if (CSVApps[value].po2 != -1)
+		if (CSVApps[value].po2 != -1 && CSVApps[value].po2 < currColumns.count())
 			headers.replace(CSVApps[value].po2, tr("Sample po2"));
-		if (CSVApps[value].cns != -1)
+		if (CSVApps[value].cns != -1 && CSVApps[value].cns < currColumns.count())
 			headers.replace(CSVApps[value].cns, tr("Sample cns"));
-		if (CSVApps[value].ndl != -1)
+		if (CSVApps[value].ndl != -1 && CSVApps[value].ndl < currColumns.count())
 			headers.replace(CSVApps[value].ndl, tr("Sample ndl"));
-		if (CSVApps[value].tts != -1)
+		if (CSVApps[value].tts != -1 && CSVApps[value].tts < currColumns.count())
 			headers.replace(CSVApps[value].tts, tr("Sample tts"));
-		if (CSVApps[value].stopdepth != -1)
+		if (CSVApps[value].stopdepth != -1 && CSVApps[value].stopdepth < currColumns.count())
 			headers.replace(CSVApps[value].stopdepth, tr("Sample stopdepth"));
-		if (CSVApps[value].pressure != -1)
+		if (CSVApps[value].pressure != -1 && CSVApps[value].pressure < currColumns.count())
 			headers.replace(CSVApps[value].pressure, tr("Samples pressure"));
 	}
 
-- 
1.9.1



More information about the subsurface mailing list