From 564130584c82b226569d8329f1aba5865ae22adf Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Thu, 28 May 2026 09:08:43 +0300 Subject: [PATCH] Limit file size to 1MB IB-8971 Signed-off-by: Raul Metsma --- client/CheckConnection.cpp | 18 +++++++++++++++++- common | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/client/CheckConnection.cpp b/client/CheckConnection.cpp index 689521e9a..0176fef36 100644 --- a/client/CheckConnection.cpp +++ b/client/CheckConnection.cpp @@ -61,12 +61,28 @@ QString CheckConnection::errorString() const } } +class LimitedNAM final: public QNetworkAccessManager +{ +public: + using QNetworkAccessManager::QNetworkAccessManager; +protected: + QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, QIODevice *data) final + { + auto *reply = QNetworkAccessManager::createRequest(op, req, data); + QObject::connect(reply, &QNetworkReply::downloadProgress, reply, [reply](qint64 received, qint64 total) { + if(received > 1024 * 1024 || total > 1024 * 1024) + reply->abort(); + }); + return reply; + } +}; + QNetworkAccessManager* CheckConnection::setupNAM(QNetworkRequest &req, const QByteArray &add) { req.setSslConfiguration(sslConfiguration(add)); req.setRawHeader("User-Agent", QStringLiteral("%1/%2 (%3)") .arg(Application::applicationName(), Application::applicationVersion(), Common::applicationOs()).toUtf8()); - auto *nam = new QNetworkAccessManager(); + auto *nam = new LimitedNAM(); QObject::connect(nam, &QNetworkAccessManager::sslErrors, nam, [](QNetworkReply *reply, const QList &errors) { QList ignore; for(const QSslError &error: errors) diff --git a/common b/common index 38737af0b..307f10cd8 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 38737af0b4079474c54146c2a7bf3845c35a7f5b +Subproject commit 307f10cd80858a92a5f0a5c781bb60a4634691d3