From: Barry Lind Date: Mon, 24 Mar 2003 03:49:49 +0000 (+0000) Subject: Backport fix for parsing acls (didn't correctly interpret null acl to mean X-Git-Tag: REL7_3_3~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8e2ca1a7d808e52806fd15af641862beb63762b5;p=postgresql Backport fix for parsing acls (didn't correctly interpret null acl to mean table owner has privs) Modified Files: Tag: REL7_3_STABLE jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java --- diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java index a8f3b50e17..a80b327d16 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java @@ -2464,7 +2464,7 @@ public abstract class AbstractJdbc1DatabaseMetaData byte column[] = rs.getBytes("attname"); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); - Hashtable permissions = parseACL(acl); + Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); int i=0; @@ -2566,7 +2566,7 @@ public abstract class AbstractJdbc1DatabaseMetaData byte table[] = rs.getBytes("relname"); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); - Hashtable permissions = parseACL(acl); + Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); int i=0; @@ -2690,7 +2690,11 @@ public abstract class AbstractJdbc1DatabaseMetaData * a Hashtable mapping the SQL permission name to a Vector of * usernames who have that permission. */ - protected Hashtable parseACL(String aclArray) { + protected Hashtable parseACL(String aclArray, String owner) { + if (aclArray == null || aclArray == "") { + //null acl is a shortcut for owner having full privs + aclArray = "{" + owner + "=arwdRxt}"; + } Vector acls = parseACLArray(aclArray); Hashtable privileges = new Hashtable(); for (int i=0; i