Skip to content

[6.0] Add CodeQL suppression for DefaultAzureCredential and fix macOS CI failures #3551

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -895,9 +895,30 @@ public override uint Receive(out SNIPacket packet, int timeoutInMilliseconds)
}
finally
{
// Reset the socket timeout to Timeout.Infinite after the receive operation is done
// to avoid blocking the thread in case of a timeout error.
_socket.ReceiveTimeout = Timeout.Infinite;
const int resetTimeout = Timeout.Infinite;

try
{
// Reset the socket timeout to Timeout.Infinite after
// the receive operation is done to avoid blocking the
// thread in case of a timeout error.
_socket.ReceiveTimeout = resetTimeout;

}
catch (SocketException ex)
{
// We sometimes see setting the ReceiveTimeout fail
// on macOS. There's isn't much we can do about it
// though, so just log and move on.
SqlClientEventSource.Log.TrySNITraceEvent(
nameof(SNITCPHandle),
EventType.ERR,
"Connection Id {0}, Failed to reset socket " +
"receive timeout to {1}: {2}",
_connectionId,
resetTimeout,
ex.Message);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,28 @@ private static TokenCredentialData CreateTokenCredentialInstance(TokenCredential
defaultAzureCredentialOptions.WorkloadIdentityClientId = tokenCredentialKey._clientId;
}

return new TokenCredentialData(new DefaultAzureCredential(defaultAzureCredentialOptions), GetHash(secret));
// SqlClient is a library and provides support to acquire access
// token using 'DefaultAzureCredential' on user demand when they
// specify 'Authentication = Active Directory Default' in
// connection string.
//
// Default Azure Credential is instantiated by the calling
// application when using "Active Directory Default"
// authentication code to connect to Azure SQL instance.
// SqlClient is a library, doesn't instantiate the credential
// without running application instructions.
//
// Note that CodeQL suppression support can only detect
// suppression comments that appear immediately above the
// flagged statement, or appended to the end of the statement.
// Multi-line justifications are not supported.
//
// https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/codeql/codeql-semmle#guidance-on-suppressions
//
// CodeQL [SM05137] See above for justification.
DefaultAzureCredential cred = new(defaultAzureCredentialOptions);

return new TokenCredentialData(cred, GetHash(secret));
}

TokenCredentialOptions tokenCredentialOptions = new() { AuthorityHost = new Uri(tokenCredentialKey._authority) };
Expand Down
Loading