From 87dd0cd756dc84fe4a10e0aab63b52cbe0a066f6 Mon Sep 17 00:00:00 2001 From: Carl Johnsen Date: Fri, 9 Jan 2026 10:56:55 +0100 Subject: [PATCH] Incorrect indices passed to the remote synchronization module should not record anything in the database, but should instead emit a warning to the log --- .../Library/Modules/Builtin/RemoteSynchronizationModule.cs | 7 +++++++ Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs index 24a7609d9..a572df62a 100644 --- a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs +++ b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs @@ -331,6 +331,13 @@ public class RemoteSynchronizationModule : IGenericCallbackModule /// The index of the destination. private void RecordSyncOperation(int index) { + // Validate index + if (index < 0 || index >= m_destinations.Count) + { + Logging.Log.WriteWarningMessage(LOGTAG, "RemoteSyncRecordInvalidIndex", null, "Cannot record remote synchronization operation: invalid index {0}.", index); + return; + } + if (!m_options.TryGetValue("dbpath", out var dbpath) || string.IsNullOrWhiteSpace(dbpath)) return; diff --git a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs index 86d4fb358..1d3535ff4 100644 --- a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs +++ b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs @@ -889,6 +889,7 @@ namespace Duplicati.UnitTest [Category("RemoteSync")] public void TestRecordSyncOperation_WithDifferentIndex() { + // Incorrect index should not record, but throw a warning. var module = new RemoteSynchronizationModule(); var options = new Dictionary { @@ -910,7 +911,7 @@ namespace Duplicati.UnitTest WHERE ""Description"" = 'Rsync 2' "; var count = (long)cmd.ExecuteScalar(); - Assert.AreEqual(1, count); + Assert.AreEqual(0, count); } [Test]