summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Vuolle <[email protected]>2024-06-17 18:03:34 +0300
committerJuha Vuolle <[email protected]>2024-06-20 12:17:52 +0300
commit14a59bf0bfe7add2b6f5810e49cea77bfe0fba1f (patch)
tree27f8a3e4fb25d37f02cd62d19b43ca01ed3f8eed
parentfa4bd30caa079a3b1e5eac1bb4f17365f456b8f9 (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.cpp21
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