diff options
author | Antti Määttä <antti.maatta@qt.io> | 2023-05-31 09:45:00 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2023-06-02 17:53:27 +0300 |
commit | d214c56e43160cb121e1caab96f0e457f9bfde99 (patch) | |
tree | b61b4fb8f6f9722340a1e5844cfdb9b293fcd329 | |
parent | 6639285ad7d69f794eb96163dec37464bdb8a726 (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.cpp | 25 |
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)); } |