diff --git a/src/Runner.Common/ActionCommand.cs b/src/Runner.Common/ActionCommand.cs index eff887429..3e25176b8 100644 --- a/src/Runner.Common/ActionCommand.cs +++ b/src/Runner.Common/ActionCommand.cs @@ -9,26 +9,27 @@ namespace GitHub.Runner.Common { private static readonly EscapeMapping[] _escapeMappings = new[] { - new EscapeMapping(token: "%", replacement: "%25"), new EscapeMapping(token: ";", replacement: "%3B"), new EscapeMapping(token: "\r", replacement: "%0D"), new EscapeMapping(token: "\n", replacement: "%0A"), new EscapeMapping(token: "]", replacement: "%5D"), + new EscapeMapping(token: "%", replacement: "%25"), }; private static readonly EscapeMapping[] _escapeDataMappings = new[] { new EscapeMapping(token: "\r", replacement: "%0D"), new EscapeMapping(token: "\n", replacement: "%0A"), + new EscapeMapping(token: "%", replacement: "%25"), }; private static readonly EscapeMapping[] _escapePropertyMappings = new[] { - new EscapeMapping(token: "%", replacement: "%25"), new EscapeMapping(token: "\r", replacement: "%0D"), new EscapeMapping(token: "\n", replacement: "%0A"), new EscapeMapping(token: ":", replacement: "%3A"), new EscapeMapping(token: ",", replacement: "%2C"), + new EscapeMapping(token: "%", replacement: "%25"), }; private readonly Dictionary _properties = new Dictionary(StringComparer.OrdinalIgnoreCase); diff --git a/src/Test/L0/Worker/ActionCommandL0.cs b/src/Test/L0/Worker/ActionCommandL0.cs index b65714ac1..4429976f2 100644 --- a/src/Test/L0/Worker/ActionCommandL0.cs +++ b/src/Test/L0/Worker/ActionCommandL0.cs @@ -51,6 +51,19 @@ namespace GitHub.Runner.Common.Tests.Worker Assert.True(ActionCommand.TryParse(message, commands, out verify)); Assert.True(IsEqualCommand(hc, test, verify)); + message = ""; + test = null; + verify = null; + //##[do-something k1=%253B=%250D=%250A=%255D;]%253B-%250D-%250A-%255D + message = "##[do-something k1=%253B=%250D=%250A=%255D;]%253B-%250D-%250A-%255D"; + test = new ActionCommand("do-something") + { + Data = "%3B-%0D-%0A-%5D", + }; + test.Properties.Add("k1", "%3B=%0D=%0A=%5D"); + Assert.True(ActionCommand.TryParse(message, commands, out verify)); + Assert.True(IsEqualCommand(hc, test, verify)); + message = ""; test = null; verify = null; @@ -109,7 +122,7 @@ namespace GitHub.Runner.Common.Tests.Worker message = ""; test = null; verify = null; - //::do-something k1=%3B=%0D=%0A=%5D;::%3B-%0D-%0A-%5D + //::do-something k1=;=%2C=%0D=%0A=]=%3A,::;-%0D-%0A-]-:-, message = "::do-something k1=;=%2C=%0D=%0A=]=%3A,::;-%0D-%0A-]-:-,"; test = new ActionCommand("do-something") { @@ -119,6 +132,19 @@ namespace GitHub.Runner.Common.Tests.Worker Assert.True(ActionCommand.TryParseV2(message, commands, out verify)); Assert.True(IsEqualCommand(hc, test, verify)); + message = ""; + test = null; + verify = null; + //::do-something k1=;=%252C=%250D=%250A=]=%253A,::;-%250D-%250A-]-:-, + message = "::do-something k1=;=%252C=%250D=%250A=]=%253A,::;-%250D-%250A-]-:-,"; + test = new ActionCommand("do-something") + { + Data = ";-%0D-%0A-]-:-,", + }; + test.Properties.Add("k1", ";=%2C=%0D=%0A=]=%3A"); + Assert.True(ActionCommand.TryParseV2(message, commands, out verify)); + Assert.True(IsEqualCommand(hc, test, verify)); + message = ""; test = null; verify = null;