diff options
author | Juha Vuolle <[email protected]> | 2024-06-17 18:03:34 +0300 |
---|---|---|
committer | Juha Vuolle <[email protected]> | 2024-06-20 12:17:52 +0300 |
commit | 14a59bf0bfe7add2b6f5810e49cea77bfe0fba1f (patch) | |
tree | 27f8a3e4fb25d37f02cd62d19b43ca01ed3f8eed | |
parent | fa4bd30caa079a3b1e5eac1bb4f17365f456b8f9 (diff) |
Extract Method for escaping name/filename multipart parameters
Pick-to: 6.8
Task-number: QTBUG-125985
Change-Id: Iab10e7a198d883d66c9862073c737f7e703eddb6
Reviewed-by: Marc Mutz <[email protected]>
-rw-r--r-- | src/network/access/qformdatabuilder.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/network/access/qformdatabuilder.cpp b/src/network/access/qformdatabuilder.cpp index 986286a1213..1818054ad78 100644 --- a/src/network/access/qformdatabuilder.cpp +++ b/src/network/access/qformdatabuilder.cpp @@ -46,6 +46,15 @@ static QByteArray nameToByteArray(QUtf8StringView view) return QByteArray::fromRawData(view.data(), view.size()); } +static void escapeNameAndAppend(QByteArray &dst, QByteArrayView src) +{ + for (auto c : src) { + if (c == '"' || c == '\\') + dst += '\\'; + dst += c; + } +} + /*! Constructs a QFormDataPartBuilder object and sets \a name as the name parameter of the form-data. @@ -58,11 +67,7 @@ QFormDataPartBuilder::QFormDataPartBuilder(QAnyStringView name, PrivateConstruct const auto enc = name.visit([](auto name) { return nameToByteArray(name); }); m_headerValue += "form-data; name=\""; - for (auto c : enc) { - if (c == '"' || c == '\\') - m_headerValue += '\\'; - m_headerValue += c; - } + escapeNameAndAppend(m_headerValue, enc); m_headerValue += "\""; } @@ -201,11 +206,7 @@ QHttpPart QFormDataPartBuilder::build() const bool utf8 = !QtPrivate::isAscii(m_originalBodyName); const auto enc = utf8 ? m_originalBodyName.toUtf8() : m_originalBodyName.toLatin1(); m_headerValue += "; filename=\""; - for (auto c : enc) { - if (c == '"' || c == '\\') - m_headerValue += '\\'; - m_headerValue += c; - } + escapeNameAndAppend(m_headerValue, enc); m_headerValue += "\""; if (utf8) { // For 'filename*' production see |