Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
032b83f
[release/9.0-staging] Disable timing out EncryptedXml encoded-DTD tes…
github-actions[bot] Aug 12, 2026
60fd99b
[release/9.0-staging] Update dependencies from dotnet/icu (#132195)
dotnet-maestro[bot] Aug 19, 2026
669f43e
[release/9.0-staging] Update dependencies from dotnet/cecil (#132196)
dotnet-maestro[bot] Aug 19, 2026
600c336
[release/9.0-staging] Update dependencies from dotnet/xharness (#132384)
dotnet-maestro[bot] Aug 19, 2026
762366a
[release/9.0-staging] Update dependencies from dotnet/roslyn (#132447)
dotnet-maestro[bot] Aug 19, 2026
0d9a3c2
[release/9.0-staging] Update dependencies from dotnet/icu (#132547)
dotnet-maestro[bot] Aug 20, 2026
14025d2
[release/9.0-staging] Update dependencies from dotnet/arcade (#132110)
dotnet-maestro[bot] Aug 22, 2026
676caf5
[automated] Merge branch 'release/9.0' => 'release/9.0-staging' (#132…
akoeplinger Aug 22, 2026
6397b9c
[release/9.0-staging] Fix hang in InvalidClientRequestTests by guardi…
github-actions[bot] Aug 22, 2026
47ddd23
[release/9.0-staging] Update dependencies from dotnet/roslyn (#132649)
dotnet-maestro[bot] Aug 27, 2026
ab9fdb7
[release/9.0-staging] Update dependencies from dotnet/arcade (#132679)
dotnet-maestro[bot] Aug 27, 2026
6b4fe70
[release/9.0-staging] Update dependencies from dotnet/xharness (#132683)
dotnet-maestro[bot] Aug 27, 2026
c8aa2b9
[release/9.0-staging] Update dependencies from dotnet/arcade (#132872)
dotnet-maestro[bot] Sep 1, 2026
77c8032
[release/9.0] Don't pass empty string as SNI to QUIC (#133158)
rzikm Sep 3, 2026
42de63e
[release/9.0] Detect ephemeral client cert key via SEC_E_UNKNOWN_CRED…
github-actions[bot] Sep 3, 2026
16515f0
[release/9.0-staging] [S.T.J] Fix PropertyRef.Equals (#133062)
github-actions[bot] Sep 3, 2026
2014613
[automated] Merge branch 'release/9.0' => 'release/9.0-staging' (#133…
akoeplinger Sep 7, 2026
3d3cc3f
[release/9.0-staging] Update dependencies from dotnet/icu (#133392)
dotnet-maestro[bot] Sep 8, 2026
d41d3d1
[release/9.0-staging] Update dependencies from dotnet/icu (#133462)
dotnet-maestro[bot] Sep 11, 2026
144a6b8
Merge branch 'release/9.0-staging' into merge/release/9.0-to-release/…
ViveliDuCh Sep 15, 2026
2be16da
[automated] Merge branch 'release/9.0' => 'release/9.0-staging' (#133…
ViveliDuCh Sep 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
]
},
"microsoft.dotnet.xharness.cli": {
"version": "11.0.0-prerelease.26370.1",
"version": "11.0.0-prerelease.26419.1",
"commands": [
"xharness"
]
Expand Down
40 changes: 20 additions & 20 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
<ProductDependencies>
<Dependency Name="Microsoft.NETCore.Runtime.ICU.Transport" Version="9.0.0-rtm.26407.5">
<Dependency Name="Microsoft.NETCore.Runtime.ICU.Transport" Version="9.0.0-rtm.26458.1">
<Uri>https://github.com/dotnet/icu</Uri>
<Sha>9adc45770f79d8d0161ac8972a0036e36bd48ded</Sha>
<Sha>e38cd61cc00b753af76ed9d31a7acbeabc6a3238</Sha>
</Dependency>
<Dependency Name="System.Net.MsQuic.Transport" Version="9.0.0-alpha.1.24167.3">
<Uri>https://github.com/dotnet/msquic</Uri>
Expand Down Expand Up @@ -55,14 +55,14 @@
<Sha>803d8598f98fb4efd94604b32627ee9407f246db</Sha>
<SourceBuild RepoName="command-line-api" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.Cecil" Version="0.11.5-alpha.26404.3">
<Dependency Name="Microsoft.DotNet.Cecil" Version="0.11.5-alpha.26418.4">
<Uri>https://github.com/dotnet/cecil</Uri>
<Sha>eebca361032c2a1ded7be6244b91b757d54be02a</Sha>
<Sha>5850baac30805f358b113f0b12966ce234023725</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.cecil" Version="0.11.5-alpha.26404.3">
<Dependency Name="Microsoft.SourceBuild.Intermediate.cecil" Version="0.11.5-alpha.26418.4">
<Uri>https://github.com/dotnet/cecil</Uri>
<Sha>eebca361032c2a1ded7be6244b91b757d54be02a</Sha>
<Sha>5850baac30805f358b113f0b12966ce234023725</Sha>
<SourceBuild RepoName="cecil" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.21-servicing.26464.5">
Expand Down Expand Up @@ -321,17 +321,17 @@
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>b030c4dfdfa1bf287f10f96006619a06bc2000ae</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Common" Version="11.0.0-prerelease.26370.1">
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Common" Version="11.0.0-prerelease.26419.1">
<Uri>https://github.com/dotnet/xharness</Uri>
<Sha>65e5795252474ebd04e4e872bd4152e86c558209</Sha>
<Sha>8dd9b8e6004e22c7b120af0631f0809865ff2088</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Xunit" Version="11.0.0-prerelease.26370.1">
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Xunit" Version="11.0.0-prerelease.26419.1">
<Uri>https://github.com/dotnet/xharness</Uri>
<Sha>65e5795252474ebd04e4e872bd4152e86c558209</Sha>
<Sha>8dd9b8e6004e22c7b120af0631f0809865ff2088</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XHarness.CLI" Version="11.0.0-prerelease.26370.1">
<Dependency Name="Microsoft.DotNet.XHarness.CLI" Version="11.0.0-prerelease.26419.1">
<Uri>https://github.com/dotnet/xharness</Uri>
<Sha>65e5795252474ebd04e4e872bd4152e86c558209</Sha>
<Sha>8dd9b8e6004e22c7b120af0631f0809865ff2088</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.PackageTesting" Version="9.0.0-beta.26458.10">
<Uri>https://github.com/dotnet/arcade</Uri>
Expand Down Expand Up @@ -361,17 +361,17 @@
<Uri>https://github.com/dotnet/runtime-assets</Uri>
<Sha>12466630283f5e0fe1869b52184aece70d3967a4</Sha>
</Dependency>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.12.0-3.26274.2">
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.12.0-3.26423.8">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>0118715be822b3f2f1e6a35ec1f79d7e245759c1</Sha>
<Sha>66541625d45561161a206b6aad528b9c95c43259</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis" Version="4.12.0-3.26274.2">
<Dependency Name="Microsoft.CodeAnalysis" Version="4.12.0-3.26423.8">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>0118715be822b3f2f1e6a35ec1f79d7e245759c1</Sha>
<Sha>66541625d45561161a206b6aad528b9c95c43259</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="4.12.0-3.26274.2">
<Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="4.12.0-3.26423.8">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>0118715be822b3f2f1e6a35ec1f79d7e245759c1</Sha>
<Sha>66541625d45561161a206b6aad528b9c95c43259</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0-beta1.26075.3">
<Uri>https://github.com/dotnet/roslyn-analyzers</Uri>
Expand All @@ -382,9 +382,9 @@
<Sha>5ef1abb57ce3df89eae65ecadeb1ddbab323ae05</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.roslyn" Version="4.12.0-3.26274.2">
<Dependency Name="Microsoft.SourceBuild.Intermediate.roslyn" Version="4.12.0-3.26423.8">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>0118715be822b3f2f1e6a35ec1f79d7e245759c1</Sha>
<Sha>66541625d45561161a206b6aad528b9c95c43259</Sha>
<SourceBuild RepoName="roslyn" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.ApiCompat.Task" Version="9.0.109">
Expand Down
16 changes: 8 additions & 8 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@
Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure
they do not break the local dev experience.
-->
<MicrosoftCodeAnalysisCSharpVersion>4.12.0-3.26274.2</MicrosoftCodeAnalysisCSharpVersion>
<MicrosoftCodeAnalysisVersion>4.12.0-3.26274.2</MicrosoftCodeAnalysisVersion>
<MicrosoftNetCompilersToolsetVersion>4.12.0-3.26274.2</MicrosoftNetCompilersToolsetVersion>
<MicrosoftCodeAnalysisCSharpVersion>4.12.0-3.26423.8</MicrosoftCodeAnalysisCSharpVersion>
<MicrosoftCodeAnalysisVersion>4.12.0-3.26423.8</MicrosoftCodeAnalysisVersion>
<MicrosoftNetCompilersToolsetVersion>4.12.0-3.26423.8</MicrosoftNetCompilersToolsetVersion>
</PropertyGroup>
<!--
For source generator support we need to target multiple versions of Roslyn in order to be able to run on older versions of Roslyn.
Expand Down Expand Up @@ -190,9 +190,9 @@
<MicrosoftNETCoreCoreDisToolsVersion>1.4.0</MicrosoftNETCoreCoreDisToolsVersion>
<MicrosoftNETTestSdkVersion>17.4.0-preview-20220707-01</MicrosoftNETTestSdkVersion>
<!-- xharness -->
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>11.0.0-prerelease.26370.1</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>11.0.0-prerelease.26370.1</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
<MicrosoftDotNetXHarnessCLIVersion>11.0.0-prerelease.26370.1</MicrosoftDotNetXHarnessCLIVersion>
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>11.0.0-prerelease.26419.1</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>11.0.0-prerelease.26419.1</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
<MicrosoftDotNetXHarnessCLIVersion>11.0.0-prerelease.26419.1</MicrosoftDotNetXHarnessCLIVersion>
<!-- hotreload-utils -->
<MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>9.0.0-alpha.0.26202.3</MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>
<NUnitVersion>3.12.0</NUnitVersion>
Expand Down Expand Up @@ -222,11 +222,11 @@
<!-- Docs -->
<MicrosoftPrivateIntellisenseVersion>9.0.0-preview-20241010.1</MicrosoftPrivateIntellisenseVersion>
<!-- Mono Cecil -->
<MicrosoftDotNetCecilVersion>0.11.5-alpha.26404.3</MicrosoftDotNetCecilVersion>
<MicrosoftDotNetCecilVersion>0.11.5-alpha.26418.4</MicrosoftDotNetCecilVersion>
<!-- ILCompiler -->
<MicrosoftDotNetILCompilerVersion>9.0.0-rtm.24511.16</MicrosoftDotNetILCompilerVersion>
<!-- ICU -->
<MicrosoftNETCoreRuntimeICUTransportVersion>9.0.0-rtm.26407.5</MicrosoftNETCoreRuntimeICUTransportVersion>
<MicrosoftNETCoreRuntimeICUTransportVersion>9.0.0-rtm.26458.1</MicrosoftNETCoreRuntimeICUTransportVersion>
<!-- MsQuic -->
<MicrosoftNativeQuicMsQuicSchannelVersion>2.5.10</MicrosoftNativeQuicMsQuicSchannelVersion>
<!-- Mono LLVM -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,11 @@ public static IEnumerable<object[]> InvalidRequest_TestData()
yield return new object[] { "GET {path} HTTP/1.1", null, new string[] { "Content-Length: -9223372036854775809" }, "\r\n", "Bad Request" };

yield return new object[] { "GET {path} HTTP/1.1", null, new string[] { "Content-Length: 1", "Content-Length: 2" }, "\r\n", "Bad Request" };
yield return new object[] { "POST {path} HTTP/1.1", null, new string[] { "Content-Length: 9223372036854775808" }, "\r\n", "Bad Request" }; // long.MaxValue + 1
yield return new object[] { "POST {path} HTTP/1.1", null, new string[] { "Content-Length: 18446744073709551615" }, "\r\n", "Bad Request" }; // ulong.MaxValue
if (Helpers.IsManagedImplementation)
{
yield return new object[] { "POST {path} HTTP/1.1", null, new string[] { "Content-Length: 9223372036854775808" }, "\r\n", "Bad Request" }; // long.MaxValue + 1
yield return new object[] { "POST {path} HTTP/1.1", null, new string[] { "Content-Length: 18446744073709551615" }, "\r\n", "Bad Request" }; // ulong.MaxValue
}

yield return new object[] { "GET {path} HTTP/1.1", null, new string[] { "Transfer-Encoding: garbage" }, "\r\n", "Not Implemented" };
yield return new object[] { "POST {path} HTTP/1.1", null, new string[] { "Transfer-Encoding: garbage" }, "\r\n", "Not Implemented" };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,11 @@ private static unsafe MsQuicConfigurationSafeHandle CreateInternal(QUIC_SETTINGS
ThrowHelper.ThrowIfMsQuicError(status, SR.net_quic_tls_version_notsupported);
}

if (status == MsQuic.QUIC_STATUS_CERT_NO_CERT && certificate != null && certificate.HasPrivateKey())
// Schannel reports SEC_E_NO_CREDENTIALS (mapped to QUIC_STATUS_CERT_NO_CERT) for
// server certificates and SEC_E_UNKNOWN_CREDENTIALS for client certificates when the
// private key is ephemeral, which is not supported on Windows.
if ((status == MsQuic.QUIC_STATUS_CERT_NO_CERT || (Interop.SECURITY_STATUS)status == Interop.SECURITY_STATUS.UnknownCredentials) &&
certificate is not null && certificate.HasPrivateKey())
{
using Microsoft.Win32.SafeHandles.SafeCertContextHandle safeCertContextHandle = Interop.Crypt32.CertDuplicateCertificateContext(certificate.Handle);
if (safeCertContextHandle.HasEphemeralPrivateKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,9 +403,9 @@ private async ValueTask FinishConnectAsync(QuicClientConnectionOptions options,

// RFC 6066 forbids IP literals.
// IDN mapping is handled by MsQuic.
string sni = (TargetHostNameHelper.IsValidAddress(options.ClientAuthenticationOptions.TargetHost) ? null : options.ClientAuthenticationOptions.TargetHost) ?? host ?? string.Empty;
string? sni = (TargetHostNameHelper.IsValidAddress(options.ClientAuthenticationOptions.TargetHost) ? null : options.ClientAuthenticationOptions.TargetHost) ?? host;

IntPtr targetHostPtr = Marshal.StringToCoTaskMemUTF8(sni);
IntPtr targetHostPtr = !string.IsNullOrEmpty(sni) ? Marshal.StringToCoTaskMemUTF8(sni) : IntPtr.Zero;
try
{
unsafe
Expand All @@ -421,7 +421,10 @@ private async ValueTask FinishConnectAsync(QuicClientConnectionOptions options,
}
finally
{
Marshal.FreeCoTaskMem(targetHostPtr);
if (targetHostPtr != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(targetHostPtr);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ public static IEnumerable<object[]> EncodedDtdTransformChainLimits()
yield return new object[] { requiredTransformCount, false };
}

[ActiveIssue("https://github.com/dotnet/runtime/issues/131638")]
[ConditionalTheory(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]
[MemberData(nameof(EncodedDtdTransformChainLimits))]
public static void EncryptedXml_DecryptedEncodedDtd_WithExactTransformChainLimit(int maxTransformsPerChain, bool expectTransformLimit)
Expand All @@ -321,6 +322,7 @@ public static void EncryptedXml_DecryptedEncodedDtd_WithExactTransformChainLimit
}, maxTransformsPerChain.ToString(CultureInfo.InvariantCulture), expectTransformLimit.ToString()).Dispose();
}

[ActiveIssue("https://github.com/dotnet/runtime/issues/131638")]
[ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]
public static void EncryptedXml_DecryptedEncodedDtd_WithUnlimitedTransformChain()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ internal readonly struct PropertyRef(ulong key, JsonPropertyInfo? info, byte[] u
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(ReadOnlySpan<byte> propertyName, ulong key)
{
// If the property name is less than 8 bytes, it is embedded in the key so no further comparison is necessary.
return key == Key && (propertyName.Length <= PropertyNameKeyLength || propertyName.SequenceEqual(Utf8PropertyName));
// If both property names are less than 8 bytes, they are embedded in the key so no further comparison is necessary.
return key == Key &&
((propertyName.Length <= PropertyNameKeyLength && Utf8PropertyName.Length <= PropertyNameKeyLength)
|| propertyName.SequenceEqual(Utf8PropertyName));
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,56 @@ public static void PropertyCacheWithMinInputsLast()
JsonSerializer.Deserialize<SimpleTestClass>(json, options);
}

[Theory]
[InlineData(0)]
[InlineData(1)]
[InlineData(2)]
[InlineData(3)]
[InlineData(4)]
[InlineData(5)]
[InlineData(6)]
[InlineData(7)]
public static void PropertyCache_NamesWithSameKeyButDifferentLength_AreDistinct(int shortNameLength)
{
string shortName = new('a', shortNameLength);
string longName =
shortName +
new string('\0', 7 - shortNameLength) +
new string('b', 249 + shortNameLength);

Assert.Equal(256, longName.Length - shortName.Length);

var options = new JsonSerializerOptions
{
TypeInfoResolver = new DefaultJsonTypeInfoResolver
{
Modifiers =
{
// Customize the name so the theory can exercise every length with one POCO type.
typeInfo =>
{
if (typeInfo.Type == typeof(PropertyKeyLengthPoco))
{
typeInfo.Properties[0].Name = shortName;
}
}
}
}
};

string json = JsonSerializer.Serialize(new Dictionary<string, string> { [longName] = "42" });
Assert.Null(JsonSerializer.Deserialize<PropertyKeyLengthPoco>(json, options).Value);

json = JsonSerializer.Serialize(new Dictionary<string, string> { [shortName] = "42" });
Assert.Equal("42", JsonSerializer.Deserialize<PropertyKeyLengthPoco>(json, options).Value);
}

private class PropertyKeyLengthPoco
{
// The declared name is irrelevant because the resolver replaces it.
public string Value { get; set; }
}

// Use a common options instance to encourage additional metadata collisions across types. Also since
// this options is not the default options instance the tests will not use previously cached metadata.
private static JsonSerializerOptions s_options = new JsonSerializerOptions { IncludeFields = true };
Expand Down
Loading