diff --git a/src/Runner.Common/ActionCommand.cs b/src/Runner.Common/ActionCommand.cs index eee2c0701..f05060696 100644 --- a/src/Runner.Common/ActionCommand.cs +++ b/src/Runner.Common/ActionCommand.cs @@ -16,11 +16,17 @@ namespace GitHub.Runner.Common new StringEscapingUtil.EscapeMapping(token: "%", replacement: "%25"), }; + private static readonly StringEscapingUtil.EscapeMapping[] _commandDataEscapeMappings = new[] + { + new StringEscapingUtil.EscapeMapping(token: "\r", replacement: "%0D"), + new StringEscapingUtil.EscapeMapping(token: "\n", replacement: "%0A"), + }; + private static readonly StringEscapingUtil.EscapeMapping[] _escapeDataMappings = new[] { new StringEscapingUtil.EscapeMapping(token: "\r", replacement: "%0D"), new StringEscapingUtil.EscapeMapping(token: "\n", replacement: "%0A"), - new StringEscapingUtil.EscapeMapping(token: "%", replacement: "%25"), + // new StringEscapingUtil.EscapeMapping(token: "%", replacement: "%25"), }; private static readonly StringEscapingUtil.EscapeMapping[] _escapePropertyMappings = new[] @@ -109,7 +115,7 @@ namespace GitHub.Runner.Common } } - command.Data = StringEscapingUtil.UnescapeString(message.Substring(endIndex + _commandKey.Length), _escapeDataMappings); + command.Data = StringEscapingUtil.UnescapeString(message.Substring(endIndex + _commandKey.Length), _commandDataEscapeMappings); return true; } catch diff --git a/src/Test/L0/Worker/ActionCommandL0.cs b/src/Test/L0/Worker/ActionCommandL0.cs index 314c437fa..eddb1b69a 100644 --- a/src/Test/L0/Worker/ActionCommandL0.cs +++ b/src/Test/L0/Worker/ActionCommandL0.cs @@ -139,7 +139,7 @@ namespace GitHub.Runner.Common.Tests.Worker message = "::do-something k1=;=%252C=%250D=%250A=]=%253A,::;-%250D-%250A-]-:-,"; test = new ActionCommand("do-something") { - Data = ";-%0D-%0A-]-:-,", + Data = ";-%250D-%250A-]-:-,", }; test.Properties.Add("k1", ";=%2C=%0D=%0A=]=%3A"); Assert.True(ActionCommand.TryParseV2(message, commands, out verify)); diff --git a/src/Test/L0/Worker/ActionCommandManagerL0.cs b/src/Test/L0/Worker/ActionCommandManagerL0.cs index 525828ae1..1363526c8 100644 --- a/src/Test/L0/Worker/ActionCommandManagerL0.cs +++ b/src/Test/L0/Worker/ActionCommandManagerL0.cs @@ -454,7 +454,7 @@ namespace GitHub.Runner.Common.Tests.Worker _commandManager.TryProcessCommand(_ec.Object, $"::add-mask::%252F%2F", null); // Assert - Assert.Equal("***", hc.SecretMasker.MaskSecrets("%2F%2F")); + Assert.Equal("***", hc.SecretMasker.MaskSecrets("%252F%2F")); } }