From fda0abc94eba0c231c6ee1154928b53df8dabacd Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Sat, 17 Oct 2020 17:54:32 +0100 Subject: [PATCH] Extra validation to prevent asserts from invalid CSL files --- .../xplane/aircraftmodelloaderxplane.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp index 7ae47954b..416b484e3 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp @@ -448,6 +448,11 @@ namespace BlackMisc } return false; } + if (package.planes.isEmpty()) + { + m_loadingMessages.push_back(CStatusMessage(this).error(u"%1/xsb_aircraft.txt Line %2 : invalid position for command.") << path << lineNum); + return false; + } if (tokens[1] != "SOLID") { return true; } @@ -487,6 +492,11 @@ namespace BlackMisc m_loadingMessages.push_back(m); return false; } + if (package.planes.isEmpty()) + { + m_loadingMessages.push_back(CStatusMessage(this).error(u"%1/xsb_aircraft.txt Line %2 : invalid position for command.") << path << lineNum); + return false; + } QString icao = tokens[1]; package.planes.back().icao = icao; @@ -502,6 +512,11 @@ namespace BlackMisc m_loadingMessages.push_back(m); return false; } + if (package.planes.isEmpty()) + { + m_loadingMessages.push_back(CStatusMessage(this).error(u"%1/xsb_aircraft.txt Line %2 : invalid position for command.") << path << lineNum); + return false; + } QString icao = tokens[1]; package.planes.back().icao = icao; @@ -519,6 +534,11 @@ namespace BlackMisc m_loadingMessages.push_back(m); return false; } + if (package.planes.isEmpty()) + { + m_loadingMessages.push_back(CStatusMessage(this).error(u"%1/xsb_aircraft.txt Line %2 : invalid position for command.") << path << lineNum); + return false; + } QString icao = tokens[1]; package.planes.back().icao = icao;