From 29ab9ec95d00e6b64c807eefbb73177744fc411f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 5 Aug 2024 17:50:46 +0800 Subject: [PATCH] Check for new forbidden filename-related capabilities during exclusion handling in discovery Signed-off-by: Claudio Cambra --- src/libsync/discovery.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 2b55eaf1c..f910a55ae 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -292,8 +292,23 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent } const auto &localName = entries.localEntry.name; + const auto splitName = localName.split('.'); + const auto &baseName = splitName.first(); + const auto extension = splitName.size() > 1 ? splitName.last() : QString(); + const auto accountCaps = _discoveryData->_account->capabilities(); + const auto forbiddenFilenames = accountCaps.forbiddenFilenames(); + const auto forbiddenBasenames = accountCaps.forbiddenFilenameBasenames(); + const auto forbiddenExtensions = accountCaps.forbiddenFilenameExtensions(); + const auto forbiddenChars = accountCaps.forbiddenFilenameCharacters(); + if (excluded == CSYNC_NOT_EXCLUDED && !localName.isEmpty() - && _discoveryData->_serverBlacklistedFiles.contains(localName)) { + && (_discoveryData->_serverBlacklistedFiles.contains(localName) + || forbiddenFilenames.contains(localName) + || forbiddenBasenames.contains(baseName) + || forbiddenExtensions.contains(extension) + || std::any_of(forbiddenChars.cbegin(), forbiddenChars.cend(), [&localName](const QString &charPattern) { + return localName.contains(charPattern); + }))) { excluded = CSYNC_FILE_EXCLUDE_SERVER_BLACKLISTED; isInvalidPattern = true; } -- 2.30.2