From a88bef48b25a45b205e0f8eed70a8d1e99622bbc Mon Sep 17 00:00:00 2001 From: Emil Dahlberg Date: Mon, 24 Jul 2023 15:19:04 +0300 Subject: [PATCH 1/2] Fix access violation when using Express user instances This occurs due to hostNameInCertificate being set to null. This is called from SQLConnectionFactory.cs#98 --- .../src/Microsoft/Data/SqlClient/SqlConnectionString.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index 56c60be92d..65d8dcc9cf 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -703,6 +703,7 @@ internal SqlConnectionString(SqlConnectionString connectionOptions, string dataS _attestationProtocol = connectionOptions._attestationProtocol; _serverSPN = connectionOptions._serverSPN; _failoverPartnerSPN = connectionOptions._failoverPartnerSPN; + _hostNameInCertificate = connectionOptions._hostNameInCertificate; #if NETFRAMEWORK _connectionReset = connectionOptions._connectionReset; _contextConnection = connectionOptions._contextConnection; From a644dce3516bf26cbd51d79433f350b4ce29b711 Mon Sep 17 00:00:00 2001 From: Emil Dahlberg Date: Mon, 24 Jul 2023 19:20:46 +0300 Subject: [PATCH 2/2] Add test for user instance access violation --- .../tests/FunctionalTests/SqlConnectionTest.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs index 05aebef822..57ef256d1c 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs @@ -945,6 +945,15 @@ public void Open_ConnectionString_Whitespace() Assert.NotNull(ex.Message); } + [Fact] + public void Open_ConnectionString_UserInstance() + { + SqlConnection cn = new SqlConnection("User Instance=true;"); + SqlException ex = Assert.Throws(() => cn.Open()); + // Throws without access violation + Assert.NotNull(ex.Message); + } + [Fact] public void ServerVersion_Connection_Closed() {