Extract Method for escaping name/filename multipart parameters
Task-number: QTBUG-125985 Change-Id: Iab10e7a198d883d66c9862073c737f7e703eddb6 Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit 14a59bf0bfe7add2b6f5810e49cea77bfe0fba1f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
36019d9368
commit
838a2fde28
@ -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 += "\"";
|
||||
}
|
||||
|
||||
@ -203,11 +208,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
|
||||
|
Loading…
x
Reference in New Issue
Block a user