Просмотр исходного кода

Merge pull request #5448 from nextcloud/bugfix/ignoreInvalidE2EMetadata

skip e2e encrypted files with empty filename in metadata
Matthieu Gallien 3 лет назад
Родитель
Сommit
96dfa7add0
1 измененных файлов с 7 добавлено и 0 удалено
  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();