From dad95f4a43af97b216ee33aa384ab98963cbdba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Mon, 29 May 2023 09:12:46 +0300 Subject: [PATCH] CTF: Use QT_FSTAT to read file size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pick-to: 6.5 Change-Id: Ic4b184e1ed51d8e30c2305a5ead619117a505518 Reviewed-by: Janne Koskinen Reviewed-by: Antti Määttä --- src/plugins/tracing/qctflib.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/plugins/tracing/qctflib.cpp b/src/plugins/tracing/qctflib.cpp index 9311bb1fdd..caa868ff64 100644 --- a/src/plugins/tracing/qctflib.cpp +++ b/src/plugins/tracing/qctflib.cpp @@ -75,13 +75,16 @@ QCtfLibImpl::QCtfLibImpl() m_session.tracepoints.append(QStringLiteral("all")); m_session.name = QStringLiteral("default"); } else { - fseek(file, 0, SEEK_END); - qsizetype pos = ftell(file); - fseek(file, 0, SEEK_SET); - QByteArray data(pos, Qt::Uninitialized); - qsizetype size = (qsizetype)fread(data.data(), 1, pos, file); + QT_STATBUF stat; + if (QT_FSTAT(QT_FILENO(file), &stat) != 0) { + qCWarning (lcDebugTrace) << "Unable to stat session file, " << qt_error_string(); + return; + } + qsizetype filesize = qMin(stat.st_size, std::numeric_limits::max()); + QByteArray data(filesize, Qt::Uninitialized); + qsizetype size = static_cast(fread(data.data(), 1, filesize, file)); fclose(file); - if (size != pos) + if (size != filesize) return; QJsonDocument json(QJsonDocument::fromJson(data));