mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-23 21:05:44 +03:00
prevent cases where desktop client would store invalid modified time
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
parent
b1977dfb18
commit
41c86d6459
3 changed files with 23 additions and 0 deletions
|
@ -1126,6 +1126,13 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status)
|
|||
if (_item->_instruction == CSYNC_INSTRUCTION_NEW && _item->_direction == SyncFileItem::Down) {
|
||||
// special case for local MKDIR, set local directory mtime
|
||||
// (it's not synced later at all, but can be nice to have it set initially)
|
||||
|
||||
if (_item->_modtime <= 0) {
|
||||
status = _item->_status = SyncFileItem::NormalError;
|
||||
_item->_errorString = tr("Error updating metadata due to invalid modified time");
|
||||
qCWarning(lcDirectory) << "Error writing to the database for file" << _item->_file;
|
||||
}
|
||||
|
||||
FileSystem::setModTime(propagator()->fullLocalPath(_item->destination()), _item->_modtime);
|
||||
}
|
||||
|
||||
|
|
|
@ -68,12 +68,20 @@ bool VfsSuffix::isHydrating() const
|
|||
|
||||
Result<void, QString> VfsSuffix::updateMetadata(const QString &filePath, time_t modtime, qint64, const QByteArray &)
|
||||
{
|
||||
if (modtime <= 0) {
|
||||
return {tr("Error updating metadata due to invalid modified time")};
|
||||
}
|
||||
|
||||
FileSystem::setModTime(filePath, modtime);
|
||||
return {};
|
||||
}
|
||||
|
||||
Result<void, QString> VfsSuffix::createPlaceholder(const SyncFileItem &item)
|
||||
{
|
||||
if (item._modtime <= 0) {
|
||||
return {tr("Error updating metadata due to invalid modified time")};
|
||||
}
|
||||
|
||||
// The concrete shape of the placeholder is also used in isDehydratedPlaceholder() below
|
||||
QString fn = _setupParams.filesystemPath + item._file;
|
||||
if (!fn.endsWith(fileSuffix())) {
|
||||
|
|
|
@ -69,12 +69,20 @@ bool VfsXAttr::isHydrating() const
|
|||
|
||||
Result<void, QString> VfsXAttr::updateMetadata(const QString &filePath, time_t modtime, qint64, const QByteArray &)
|
||||
{
|
||||
if (modtime <= 0) {
|
||||
return {tr("Error updating metadata due to invalid modified time")};
|
||||
}
|
||||
|
||||
FileSystem::setModTime(filePath, modtime);
|
||||
return {};
|
||||
}
|
||||
|
||||
Result<void, QString> VfsXAttr::createPlaceholder(const SyncFileItem &item)
|
||||
{
|
||||
if (item._modtime <= 0) {
|
||||
return {tr("Error updating metadata due to invalid modified time")};
|
||||
}
|
||||
|
||||
const auto path = QString(_setupParams.filesystemPath + item._file);
|
||||
QFile file(path);
|
||||
if (file.exists() && file.size() > 1
|
||||
|
|
Loading…
Reference in a new issue