From 36c007f0b078671fd37be635807a0a8c07d423ef Mon Sep 17 00:00:00 2001 From: xiang17 Date: Mon, 4 Jan 2021 09:11:34 -0800 Subject: [PATCH] Fix bug in W3C ID version check (#46492) --- .../src/System/Diagnostics/Activity.cs | 3 ++- .../System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs index 3835119..a1c6830 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs @@ -833,7 +833,8 @@ namespace System.Diagnostics // The version (00-fe) is used to indicate that this is a WC3 ID. return id.Length == 55 && ('0' <= id[0] && id[0] <= '9' || 'a' <= id[0] && id[0] <= 'f') && - ('0' <= id[1] && id[1] <= '9' || 'a' <= id[1] && id[1] <= 'e'); + ('0' <= id[1] && id[1] <= '9' || 'a' <= id[1] && id[1] <= 'f') && + (id[0] != 'f' || id[1] != 'f'); } #if ALLOW_PARTIALLY_TRUSTED_CALLERS diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs b/src/libraries/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs index 49c5d51..f753dc8 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs @@ -599,22 +599,28 @@ namespace System.Diagnostics.Tests Activity activity0 = new Activity("activity0"); Activity activity1 = new Activity("activity1"); Activity activity2 = new Activity("activity2"); + Activity activity3 = new Activity("activity3"); activity0.SetParentId("01-0123456789abcdef0123456789abcdef-0123456789abcdef-00"); activity0.Start(); activity1.SetParentId("cc-1123456789abcdef0123456789abcdef-1123456789abcdef-00"); activity1.Start(); activity2.SetParentId("fe-2123456789abcdef0123456789abcdef-2123456789abcdef-00"); activity2.Start(); + activity3.SetParentId("ef-3123456789abcdef0123456789abcdef-3123456789abcdef-00"); + activity3.Start(); Assert.Equal(ActivityIdFormat.W3C, activity0.IdFormat); Assert.Equal(ActivityIdFormat.W3C, activity1.IdFormat); Assert.Equal(ActivityIdFormat.W3C, activity2.IdFormat); + Assert.Equal(ActivityIdFormat.W3C, activity3.IdFormat); Assert.Equal("0123456789abcdef0123456789abcdef", activity0.TraceId.ToHexString()); Assert.Equal("1123456789abcdef0123456789abcdef", activity1.TraceId.ToHexString()); Assert.Equal("2123456789abcdef0123456789abcdef", activity2.TraceId.ToHexString()); + Assert.Equal("3123456789abcdef0123456789abcdef", activity3.TraceId.ToHexString()); Assert.Equal("0123456789abcdef", activity0.ParentSpanId.ToHexString()); Assert.Equal("1123456789abcdef", activity1.ParentSpanId.ToHexString()); Assert.Equal("2123456789abcdef", activity2.ParentSpanId.ToHexString()); + Assert.Equal("3123456789abcdef", activity3.ParentSpanId.ToHexString()); } [Fact] -- 2.7.4