Explorar o código

Merge pull request #5448 from nextcloud/bugfix/ignoreInvalidE2EMetadata

skip e2e encrypted files with empty filename in metadata
Matthieu Gallien %!s(int64=3) %!d(string=hai) anos
pai
achega
96dfa7add0
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      src/libsync/clientsideencryption.cpp

+ 7 - 0
src/libsync/clientsideencryption.cpp

@@ -1591,8 +1591,15 @@ void FolderMetadata::setupExistingMetadata(const QByteArray& metadata)
         auto encryptedFile = fileObj["encrypted"].toString().toLocal8Bit();
         auto decryptedFile = !key.isEmpty() ? decryptJsonObject(encryptedFile, key) : QByteArray{};
         auto decryptedFileDoc = QJsonDocument::fromJson(decryptedFile);
+
         auto decryptedFileObj = decryptedFileDoc.object();
 
+        if (decryptedFileObj["filename"].toString().isEmpty()) {
+            qCDebug(lcCse) << "decrypted metadata" << decryptedFileDoc.toJson(QJsonDocument::Indented);
+            qCWarning(lcCse) << "skipping encrypted file" << file.encryptedFilename << "metadata has an empty file name";
+            continue;
+        }
+
         file.originalFilename = decryptedFileObj["filename"].toString();
         file.encryptionKey = QByteArray::fromBase64(decryptedFileObj["key"].toString().toLocal8Bit());
         file.mimetype = decryptedFileObj["mimetype"].toString().toLocal8Bit();