summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2023-05-31 09:45:00 +0300
committerAntti Määttä <antti.maatta@qt.io>2023-06-02 17:53:27 +0300
commitd214c56e43160cb121e1caab96f0e457f9bfde99 (patch)
treeb61b4fb8f6f9722340a1e5844cfdb9b293fcd329
parent6639285ad7d69f794eb96163dec37464bdb8a726 (diff)
CTF: Properly handle invalid session file
Pick-to: 6.5 Change-Id: Iabb2621364b5256ac89ec8cb7fafb0a9d346515d Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
-rw-r--r--src/plugins/tracing/qctflib.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/plugins/tracing/qctflib.cpp b/src/plugins/tracing/qctflib.cpp
index 99c4064269..3690bb6370 100644
--- a/src/plugins/tracing/qctflib.cpp
+++ b/src/plugins/tracing/qctflib.cpp
@@ -87,17 +87,24 @@ QCtfLibImpl::QCtfLibImpl()
fclose(file);
if (size != filesize)
return;
- QJsonDocument json(QJsonDocument::fromJson(data));
+ QJsonDocument json(QJsonDocument::fromJson(data));
QJsonObject obj = json.object();
- QJsonValue value = *obj.begin();
- if (value.isNull() || !value.isArray())
- return;
- m_session.name = obj.begin().key();
- const QJsonArray arr = value.toArray();
- for (auto var : arr)
- m_session.tracepoints.append(var.toString());
-
+ bool valid = false;
+ if (!obj.isEmpty()) {
+ const auto it = obj.begin();
+ if (it.value().isArray()) {
+ m_session.name = it.key();
+ for (auto var : it.value().toArray())
+ m_session.tracepoints.append(var.toString());
+ valid = true;
+ }
+ }
+ if (!valid) {
+ qCWarning(lcDebugTrace) << "Session file is not valid";
+ m_session.tracepoints.append(QStringLiteral("all"));
+ m_session.name = QStringLiteral("default");
+ }
m_location = location + QStringLiteral("/ust");
std::filesystem::create_directory(qPrintable(m_location), qPrintable(location));
}