From 1b53c590f28427417fce7b7eee18768068e67bbc Mon Sep 17 00:00:00 2001 From: Aleksandr Cupacenko Date: Fri, 11 Mar 2022 07:40:22 +0200 Subject: [PATCH] Allow blank lines in multipart form-data input Fixes #11298. PR #16579. --- src/base/http/requestparser.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/base/http/requestparser.cpp b/src/base/http/requestparser.cpp index 996a9267d..b5f26c173 100644 --- a/src/base/http/requestparser.cpp +++ b/src/base/http/requestparser.cpp @@ -308,16 +308,16 @@ bool RequestParser::parsePostMessage(const QByteArray &data) bool RequestParser::parseFormData(const QByteArray &data) { - const QVector list = splitToViews(data, EOH, Qt::KeepEmptyParts); + const int eohPos = data.indexOf(EOH); - if (list.size() != 2) + if (eohPos < 0) { qWarning() << Q_FUNC_INFO << "multipart/form-data format error"; return false; } - const QString headers = QString::fromLatin1(list[0]); - const QByteArray payload = viewWithoutEndingWith(list[1], CRLF); + const QString headers = QString::fromLatin1(Utils::ByteArray::midView(data, 0, eohPos)); + const QByteArray payload = viewWithoutEndingWith(Utils::ByteArray::midView(data, (eohPos + EOH.size()), data.size()), CRLF); HeaderMap headersMap; const QList headerLines = QStringView(headers).split(QString::fromLatin1(CRLF), Qt::SkipEmptyParts);