Make sure to encode the relPath
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 25 Oct 2022 17:19:43 +0000 (19:19 +0200)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 28 Oct 2022 10:38:14 +0000 (12:38 +0200)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/folderman.cpp

index da1785897f2f341813c0be551be050c3edf56627..412910f94119aecb7d899dd0a9b8e6c64d0c69f2 100644 (file)
@@ -1534,10 +1534,12 @@ void FolderMan::editFileLocally(const QString &userId, const QString &relPath, c
     }
 
     // Sanitise the token
-    const auto encodedToken = QString(QUrl::toPercentEncoding(token));
+    const auto encodedToken = QString::fromUtf8(QUrl::toPercentEncoding(token));
+    // Sanitise the relPath
+    const auto encodedRelPath = QUrl::toPercentEncoding(relPath);
     const auto checkTokenForEditLocally = new SimpleApiJob(accountFound->account(), QStringLiteral("/ocs/v2.php/apps/files/api/v1/openlocaleditor/%1").arg(encodedToken));
     checkTokenForEditLocally->setVerb(SimpleApiJob::Verb::Post);
-    checkTokenForEditLocally->setBody(QByteArray{"path=/"}.append(relPath.toUtf8()));
+    checkTokenForEditLocally->setBody(QByteArray{"path=/"}.append(encodedRelPath));
     connect(checkTokenForEditLocally, &SimpleApiJob::resultReceived, checkTokenForEditLocally, [this, folderForFile, localFilePath, showError, accountFound, relPath] (int statusCode) {
         constexpr auto HTTP_OK_CODE = 200;
         if (statusCode != HTTP_OK_CODE) {