From 47ff5a950e54ae2a570183be21312bcaa5271396 Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Sun, 15 Oct 2023 19:04:44 +0200 Subject: [PATCH 05/10] Fix string concatenation in Qt6 --- src/oauth1plugin.cpp | 33 ++++++++++++++++----------------- src/oauth1plugin.h | 2 +- src/oauth2plugin.cpp | 4 ++-- src/oauth2plugin.h | 2 +- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/oauth1plugin.cpp b/src/oauth1plugin.cpp index 6c38cbb..3a1bbd5 100644 --- a/src/oauth1plugin.cpp +++ b/src/oauth1plugin.cpp @@ -60,7 +60,6 @@ const QString TIMESTAMP = QString("timestamp"); const QString AUTH_ERROR = QString("error"); const QString EQUAL = QString("="); -const QString AMPERSAND = QString("&"); const QString EQUAL_WITH_QUOTES = QString("%1=\"%2\""); const QString DELIMITER = QString(", "); const QString SPACE = QString(" "); @@ -321,7 +320,7 @@ void OAuth1Plugin::process(const SignOn::SessionData &inData, sendOAuth1PostRequest(); } -QString OAuth1Plugin::urlEncode(QString strData) +QByteArray OAuth1Plugin::urlEncode(QString strData) { return QUrl::toPercentEncoding(strData).constData(); } @@ -399,7 +398,7 @@ QByteArray OAuth1Plugin::constructSignatureBaseString(const QString &aUrl, bool first = true; for (i = oAuthHeaderMap.begin(); i != oAuthHeaderMap.end(); ++i) { if(!first) { - oAuthHeaderString.append(AMPERSAND); + oAuthHeaderString.append(QLatin1Char('&')); } else { first = false; } @@ -411,9 +410,9 @@ QByteArray OAuth1Plugin::constructSignatureBaseString(const QString &aUrl, QByteArray signatureBase; signatureBase.append("POST"); - signatureBase.append(AMPERSAND); + signatureBase.append('&'); signatureBase.append(urlEncode(urlWithHostAndPath)); - signatureBase.append(AMPERSAND); + signatureBase.append('&'); signatureBase.append(urlEncode(oAuthHeaderString)); return signatureBase; } @@ -427,16 +426,16 @@ QString OAuth1Plugin::createOAuth1Header(const QString &aUrl, QString authHeader = OAUTH + SPACE; if (!inData.Realm().isEmpty()) { authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_REALM) - .arg(urlEncode(inData.Realm()))); + .arg(urlEncode(inData.Realm()).constData())); authHeader.append(DELIMITER); } if (!inData.Callback().isEmpty()) { authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_CALLBACK) - .arg(urlEncode(inData.Callback()))); + .arg(urlEncode(inData.Callback()).constData())); authHeader.append(DELIMITER); } authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_CONSUMERKEY) - .arg(urlEncode(inData.ConsumerKey()))); + .arg(urlEncode(inData.ConsumerKey()).constData())); authHeader.append(DELIMITER); // Nonce #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) @@ -448,32 +447,32 @@ QString OAuth1Plugin::createOAuth1Header(const QString &aUrl, #endif QString oauthNonce = QString("%1%2").arg(nonce1).arg(nonce2); authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_NONCE) - .arg(urlEncode(oauthNonce))); + .arg(urlEncode(oauthNonce).constData())); authHeader.append(DELIMITER); // Timestamp QString oauthTimestamp = QString("%1").arg(QDateTime::currentDateTime().toSecsSinceEpoch()); authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_TIMESTAMP) - .arg(urlEncode(oauthTimestamp))); + .arg(urlEncode(oauthTimestamp).constData())); authHeader.append(DELIMITER); if (!d->m_oauth1Token.isEmpty()) { authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_TOKEN) - .arg(urlEncode(d->m_oauth1Token))); + .arg(urlEncode(d->m_oauth1Token).constData())); authHeader.append(DELIMITER); } authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_SIGNATURE_METHOD) - .arg(urlEncode(d->m_mechanism))); + .arg(urlEncode(d->m_mechanism).constData())); authHeader.append(DELIMITER); // Creating the signature // PLAINTEXT signature method QByteArray secretKey; - secretKey.append(urlEncode(inData.ConsumerSecret()) + AMPERSAND + + secretKey.append(urlEncode(inData.ConsumerSecret()) + '&' + urlEncode(d->m_oauth1TokenSecret)); if (d->m_mechanism == PLAINTEXT) { TRACE() << "Signature = " << secretKey; authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_SIGNATURE) - .arg(urlEncode(secretKey))); + .arg(urlEncode(secretKey).constData())); authHeader.append(DELIMITER); } // HMAC-SHA1 signature method @@ -484,7 +483,7 @@ QString OAuth1Plugin::createOAuth1Header(const QString &aUrl, QByteArray signature = hashHMACSHA1(secretKey, signatureBase); TRACE() << "Signature = " << signature; authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_SIGNATURE) - .arg(urlEncode(signature.toBase64()))); + .arg(urlEncode(signature.toBase64()).constData())); authHeader.append(DELIMITER); } // TODO: RSA-SHA1 signature method should be implemented @@ -494,11 +493,11 @@ QString OAuth1Plugin::createOAuth1Header(const QString &aUrl, if (!d->m_oauth1TokenVerifier.isEmpty()) { authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_VERIFIER) - .arg(urlEncode(d->m_oauth1TokenVerifier))); + .arg(urlEncode(d->m_oauth1TokenVerifier).constData())); authHeader.append(DELIMITER); } authHeader.append(EQUAL_WITH_QUOTES.arg(OAUTH_VERSION) - .arg(urlEncode(OAUTH_VERSION_1))); + .arg(urlEncode(OAUTH_VERSION_1).constData())); return authHeader; } diff --git a/src/oauth1plugin.h b/src/oauth1plugin.h index 3ff227a..aa37e26 100644 --- a/src/oauth1plugin.h +++ b/src/oauth1plugin.h @@ -65,7 +65,7 @@ private: const OAuth1PluginData &inData, const QString ×tamp, const QString &nonce); - QString urlEncode(QString strData); + QByteArray urlEncode(QString strData); QString createOAuth1Header(const QString &aUrl, OAuth1PluginData inData); QByteArray hashHMACSHA1(const QByteArray &keyForHash ,const QByteArray &secret); OAuth1PluginTokenData oauth1responseFromMap(const QVariantMap &map); diff --git a/src/oauth2plugin.cpp b/src/oauth2plugin.cpp index 8763f00..c7f7f84 100644 --- a/src/oauth2plugin.cpp +++ b/src/oauth2plugin.cpp @@ -393,9 +393,9 @@ void OAuth2Plugin::process(const SignOn::SessionData &inData, } } -QString OAuth2Plugin::urlEncode(QString strData) +QByteArray OAuth2Plugin::urlEncode(QString strData) { - return QUrl::toPercentEncoding(strData).constData(); + return QUrl::toPercentEncoding(strData); } void OAuth2Plugin::userActionFinished(const SignOn::UiSessionData &data) diff --git a/src/oauth2plugin.h b/src/oauth2plugin.h index a16c316..389d3c3 100644 --- a/src/oauth2plugin.h +++ b/src/oauth2plugin.h @@ -84,7 +84,7 @@ private: QVariantMap parseJSONReply(const QByteArray &reply); QVariantMap parseTextReply(const QByteArray &reply); void handleOAuth2Error(const QByteArray &reply); - QString urlEncode(QString strData); + QByteArray urlEncode(QString strData); QUrl getAuthUrl(); QUrl getTokenUrl(); -- 2.43.0