diff --git a/src/ModularPipelines/Engine/BuildSystemSecretMasker.cs b/src/ModularPipelines/Engine/BuildSystemSecretMasker.cs index a1a560a99b..d14fffc204 100644 --- a/src/ModularPipelines/Engine/BuildSystemSecretMasker.cs +++ b/src/ModularPipelines/Engine/BuildSystemSecretMasker.cs @@ -28,7 +28,7 @@ internal class BuildSystemSecretMasker : IBuildSystemSecretMasker private readonly IBuildSystemFormatterProvider _formatterProvider; private readonly IConsoleWriter _consoleWriter; - private readonly List _alreadyMaskedSecrets = new(); + private readonly HashSet _alreadyMaskedSecrets = new(); private readonly object _lock = new(); public BuildSystemSecretMasker(IBuildSystemFormatterProvider formatterProvider, @@ -44,9 +44,13 @@ public void MaskSecrets(IEnumerable secrets) { var formatter = _formatterProvider.GetFormatter(); - foreach (var secret in secrets.Where(s => !_alreadyMaskedSecrets.Contains(s))) + foreach (var secret in secrets) { - _alreadyMaskedSecrets.Add(secret); + // HashSet.Add returns false if already exists, providing O(1) lookup + if (!_alreadyMaskedSecrets.Add(secret)) + { + continue; + } var maskCommand = formatter.GetMaskSecretCommand(secret); if (maskCommand != null)