From f4e6769a9f1ae997a436906ea52d7d61aef097e9 Mon Sep 17 00:00:00 2001 From: JRahnama Date: Wed, 16 Feb 2022 15:26:28 -0800 Subject: [PATCH] Adds support for Shim gss api on Linux to delay loading libgssapi_krb5.so --- .../Interop.NetSecurityNative.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.NetSecurityNative.cs b/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.NetSecurityNative.cs index c8aece74e58851..5899224c321265 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.NetSecurityNative.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.NetSecurityNative.cs @@ -16,6 +16,9 @@ internal static partial void ReleaseGssBuffer( IntPtr bufferPtr, ulong length); + [DllImport(Interop.Libraries.NetSecurityNative, EntryPoint = "NetSecurityNative_EnsureGssInitialized")] + private static extern int EnsureGssInitialized(); + [GeneratedDllImport(Interop.Libraries.NetSecurityNative, EntryPoint="NetSecurityNative_DisplayMinorStatus")] internal static partial Status DisplayMinorStatus( out Status minorStatus, @@ -169,5 +172,17 @@ internal static Status UnwrapBuffer( return Unwrap(out minorStatus, contextHandle, inputBytes, offset, count, ref outBuffer); } + + // This constructor is added to address the issue with net6 regarding + // Shim gss api on Linux to delay loading libgssapi_krb5.so + // issue https://github.com/dotnet/SqlClient/issues/1390 + // dotnet runtime issue https://github.com/dotnet/runtime/pull/55037 + static NetSecurityNative() + { + if (Environment.Version.Major >= 6) + { + EnsureGssInitialized(); + } + } } }