Skip to content

Commit fb22a19

Browse files
committed
Fixed CORE-5496: Creating SRP SYSDBA with explicit admin (-admin yes in gsec or grant admin role in create user) creates two SYSDBA accounts
1 parent 63efacd commit fb22a19

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/auth/SecureRemotePassword/manage/SrpManagement.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -539,12 +539,13 @@ class SrpManagement FB_FINAL : public Firebird::StdPlugin<Firebird::IManagementI
539539

540540
case Firebird::IUser::OP_USER_DISPLAY:
541541
{
542-
Firebird::string disp = "SELECT PLG$USER_NAME, PLG$FIRST, PLG$MIDDLE, PLG$LAST, PLG$COMMENT, PLG$ATTRIBUTES, "
543-
" CASE WHEN RDB$RELATION_NAME IS NULL THEN FALSE ELSE TRUE END, PLG$ACTIVE "
544-
"FROM PLG$SRP_VIEW LEFT JOIN RDB$USER_PRIVILEGES "
545-
" ON PLG$SRP_VIEW.PLG$USER_NAME = RDB$USER_PRIVILEGES.RDB$USER "
546-
" AND RDB$RELATION_NAME = '" ADMIN_ROLE "' "
547-
" AND RDB$PRIVILEGE = 'M' ";
542+
Firebird::string disp =
543+
"WITH ADMINS AS (SELECT RDB$USER FROM RDB$USER_PRIVILEGES "
544+
" WHERE RDB$RELATION_NAME = 'RDB$ADMIN' AND RDB$PRIVILEGE = 'M' GROUP BY RDB$USER) "
545+
"SELECT PLG$USER_NAME, PLG$FIRST, PLG$MIDDLE, PLG$LAST, PLG$COMMENT, PLG$ATTRIBUTES, "
546+
" CASE WHEN RDB$USER IS NULL THEN FALSE ELSE TRUE END, PLG$ACTIVE "
547+
"FROM PLG$SRP_VIEW LEFT JOIN ADMINS "
548+
" ON PLG$SRP_VIEW.PLG$USER_NAME = ADMINS.RDB$USER ";
548549
if (user->userName()->entered())
549550
{
550551
disp += " WHERE PLG$USER_NAME = ?";

0 commit comments

Comments
 (0)