diff --git a/src/Runner.Common/HostContext.cs b/src/Runner.Common/HostContext.cs index 8126f8c95..d4ea48c39 100644 --- a/src/Runner.Common/HostContext.cs +++ b/src/Runner.Common/HostContext.cs @@ -84,6 +84,7 @@ namespace GitHub.Runner.Common this.SecretMasker.AddValueEncoder(ValueEncoders.Base64StringEscape); this.SecretMasker.AddValueEncoder(ValueEncoders.Base64StringEscapeShift1); this.SecretMasker.AddValueEncoder(ValueEncoders.Base64StringEscapeShift2); + this.SecretMasker.AddValueEncoder(ValueEncoders.CommandLineArgumentEscape); this.SecretMasker.AddValueEncoder(ValueEncoders.ExpressionStringEscape); this.SecretMasker.AddValueEncoder(ValueEncoders.JsonStringEscape); this.SecretMasker.AddValueEncoder(ValueEncoders.UriDataEscape); diff --git a/src/Sdk/DTLogging/Logging/ValueEncoders.cs b/src/Sdk/DTLogging/Logging/ValueEncoders.cs index 6a96c1720..3f30dd540 100644 --- a/src/Sdk/DTLogging/Logging/ValueEncoders.cs +++ b/src/Sdk/DTLogging/Logging/ValueEncoders.cs @@ -37,6 +37,12 @@ namespace GitHub.DistributedTask.Logging return Base64StringEscapeShift(value, 2); } + // Used when we pass environment variables to docker to escape " with \" + public static String CommandLineArgumentEscape(String value) + { + return value.Replace("\"", "\\\""); + } + public static String ExpressionStringEscape(String value) { return Expressions2.Sdk.ExpressionUtility.StringEscape(value);