21 lines
844 B
Diff
21 lines
844 B
Diff
# UNDF: UNDF-2026-000000755
|
|
# UNDF:
|
|
--- a/pkg/sql/authorization.go
|
|
+++ b/pkg/sql/authorization.go
|
|
@@ -564,10 +564,14 @@ func EnsureUserOnlyBelongsToRoles(
|
|
// Compute the differences between the current roles and the desired roles
|
|
// to determine which roles need to granted or revoked.
|
|
rolesToRevoke := make([]username.SQLUsername, 0, len(currentRoles))
|
|
rolesToGrant := make([]username.SQLUsername, 0, len(roles))
|
|
+ // Build a set for O(1) membership tests instead of O(D) slices.Contains.
|
|
+ desiredSet := make(map[username.SQLUsername]struct{}, len(roles))
|
|
+ for _, r := range roles {
|
|
+ desiredSet[r] = struct{}{}
|
|
+ }
|
|
for role := range currentRoles {
|
|
- if !slices.Contains(roles, role) {
|
|
+ if _, ok := desiredSet[role]; !ok {
|
|
rolesToRevoke = append(rolesToRevoke, role)
|
|
}
|
|
}
|
|
for _, role := range roles {
|