Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1e3372e

Browse files
author
Barry Lind
committed
Fix bug in reading acls (didn't treat null acl as meaning the table owner had
full privs), also updated the regression test for this case. Modified Files: jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
1 parent0489783 commit1e3372e

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

‎src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,7 +2466,7 @@ public java.sql.ResultSet getColumnPrivileges(String catalog, String schema, Str
24662466
bytecolumn[] =rs.getBytes("attname");
24672467
Stringowner =rs.getString("usename");
24682468
Stringacl =rs.getString("relacl");
2469-
Hashtablepermissions =parseACL(acl);
2469+
Hashtablepermissions =parseACL(acl,owner);
24702470
StringpermNames[] =newString[permissions.size()];
24712471
Enumeratione =permissions.keys();
24722472
inti=0;
@@ -2569,7 +2569,7 @@ public java.sql.ResultSet getTablePrivileges(String catalog, String schemaPatter
25692569
bytetable[] =rs.getBytes("relname");
25702570
Stringowner =rs.getString("usename");
25712571
Stringacl =rs.getString("relacl");
2572-
Hashtablepermissions =parseACL(acl);
2572+
Hashtablepermissions =parseACL(acl,owner);
25732573
StringpermNames[] =newString[permissions.size()];
25742574
Enumeratione =permissions.keys();
25752575
inti=0;
@@ -2693,7 +2693,11 @@ private void addACLPrivileges(String acl, Hashtable privileges) {
26932693
* a Hashtable mapping the SQL permission name to a Vector of
26942694
* usernames who have that permission.
26952695
*/
2696-
protectedHashtableparseACL(StringaclArray) {
2696+
protectedHashtableparseACL(StringaclArray,Stringowner) {
2697+
if (aclArray ==null ||aclArray =="") {
2698+
//null acl is a shortcut for owner having full privs
2699+
aclArray ="{" +owner +"=arwdRxt}";
2700+
}
26972701
Vectoracls =parseACLArray(aclArray);
26982702
Hashtableprivileges =newHashtable();
26992703
for (inti=0;i<acls.size();i++) {

‎src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* PS: Do you know how difficult it is to type on a train? ;-)
1111
*
12-
* $Id: DatabaseMetaDataTest.java,v 1.16 2002/11/11 07:11:12 barry Exp $
12+
* $Id: DatabaseMetaDataTest.java,v 1.17 2003/03/24 03:48:32 barry Exp $
1313
*/
1414

1515
publicclassDatabaseMetaDataTestextendsTestCase
@@ -237,13 +237,19 @@ public void testColumnPrivileges()
237237

238238
publicvoidtestTablePrivileges()
239239
{
240-
// At the moment just test that no exceptions are thrown KJ
241240
try
242241
{
243242
DatabaseMetaDatadbmd =con.getMetaData();
244243
assertNotNull(dbmd);
245-
ResultSetrs =dbmd.getTablePrivileges(null,null,"grantme");
244+
ResultSetrs =dbmd.getTablePrivileges(null,null,"testmetadata");
245+
booleanl_foundSelect =false;
246+
while (rs.next()) {
247+
if (rs.getString("GRANTEE").equals(TestUtil.getUser())
248+
&&rs.getString("PRIVILEGE").equals("SELECT"))l_foundSelect =true;
249+
}
246250
rs.close();
251+
//Test that the table owner has select priv
252+
assertTrue("Couldn't find SELECT priv on table testmetadata for " +TestUtil.getUser(),l_foundSelect);
247253
}catch (SQLExceptionsqle) {
248254
sqle.printStackTrace();
249255
fail(sqle.getMessage());

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp