Skip to content

Commit 3f2e1ea

Browse files
committed
Fixed CORE-6489: User without ALTER ANY ROLE privilege can use COMMENT ON ROLE
1 parent 85781bf commit 3f2e1ea

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

src/jrd/ini.epp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,17 +471,23 @@ void INI_format(const char* owner, const char* charset)
471471
charset->name;
472472
++charset)
473473
{
474-
add_security_to_sys_obj(tdbb, reqAddSC, reqModObjSC, reqInsUserPriv, ownerName, obj_charset, charset->name, length, buffer);
474+
add_security_to_sys_obj(tdbb, reqAddSC, reqModObjSC, reqInsUserPriv, ownerName, obj_charset,
475+
charset->name, length, buffer);
475476
}
476477

477478
reqModObjSC.reset();
478479
for (const IntlManager::CollationDefinition* collation = IntlManager::defaultCollations;
479480
collation->name;
480481
++collation)
481482
{
482-
add_security_to_sys_obj(tdbb, reqAddSC, reqModObjSC, reqInsUserPriv, ownerName, obj_collation, collation->name, length, buffer);
483+
add_security_to_sys_obj(tdbb, reqAddSC, reqModObjSC, reqInsUserPriv, ownerName, obj_collation,
484+
collation->name, length, buffer);
483485
}
484486

487+
reqModObjSC.reset();
488+
add_security_to_sys_obj(tdbb, reqAddSC, reqModObjSC, reqInsUserPriv, ownerName, obj_sql_role,
489+
ADMIN_ROLE, length, buffer);
490+
485491
// Must be last!
486492
acl = aclPublicStart;
487493
memcpy(acl, PKG_PUBLIC_EXECUTE_ACL, sizeof(PKG_PUBLIC_EXECUTE_ACL));
@@ -1205,6 +1211,18 @@ static void add_security_to_sys_obj(thread_db* tdbb,
12051211
}
12061212
END_FOR
12071213
}
1214+
else if (obj_type == obj_sql_role)
1215+
{
1216+
FOR(REQUEST_HANDLE reqModObjSC) R IN RDB$ROLES
1217+
WITH R.RDB$ROLE_NAME EQ obj_name.c_str()
1218+
{
1219+
MODIFY R USING
1220+
R.RDB$SECURITY_CLASS.NULL = FALSE;
1221+
PAD(security_class.c_str(), R.RDB$SECURITY_CLASS);
1222+
END_MODIFY
1223+
}
1224+
END_FOR
1225+
}
12081226
else if (obj_type == obj_package_header)
12091227
{
12101228
FOR(REQUEST_HANDLE reqModObjSC) PKG IN RDB$PACKAGES

0 commit comments

Comments
 (0)